Linux使用systemctl设置程序开机自启动

1 说明

设置开机自启动,需要用到systemctl工具。
systemctl是一个systemd工具,主要负责控制systemd系统和服务管理器。
systemd是一个系统管理守护进程、工具和库的集合,用于取代System V初始进程。Systemd的功能是用于集中管理和配置类UNIX系统。
在Linux生态系统中,Systemd被部署到了大多数的标准Linux发行版中,只有为数不多的几个发行版尚未部署。

2 准备

os:redhat7.0
systemctl –version : systemd 208
weblogic version:12

3 将程序设置成系统服务

3.1 编写系统服务文件

# vi /etc/systemd/system/myapp.service
----------------------------------------------------
#如果/etc/systemd/system/myapp.service有过修改,需要进行更新,执行下面这个命令
#systemctl daemon-reload
#查看服务是否被正确识别
#systemctl list-unit-files|grep myapp
[Unit]
#服务描述,写有意义的内容,便于识别
Description=myapp service

[Service]
Type=simple
#设置应用的工作目录
WorkingDirectory=/myapp_path
ExecStart=/myapp_path/startMyApp.sh
ExecStop=/bin/kill -s TERM $MAINPID

[Install]
WantedBy=multi-user.target

3.3 查看系统服务文件是否被识别

# systemctl list-unit-files|grep myapp
--------------------------
myapp.service                      disabled

至此,系统服务文件编写完成。

4 编写程序启动脚本

# vi /myapp_path/startMyApp.sh
----------------------------------------------------
#!/bin/sh
#上面这行很重要,会报203错误
#最好先cd到程序目录
cd /myapp_path
#使用java的绝对路径。如果找不到java可执行程序,也会报203错误
/usr/java/jdk1.8/bin/java -jar myapp.jar

启动脚本设置执行权限

# chmod +x myapp.sh

5 测试系统服务

5.1 启动系统服务

# systemctl start myapp.service

5.2 停止系统服务

# systemctl stop myapp.service

5.3 查看系统服务是否成功启动

# systemctl status myapp.service -l

5.4 可能碰到的203错误

ExecStart参数指定启动脚本路径不对,会提示203错误。(改对就好了。)
启动程序脚本(.sh文件)中未指定脚本解析器,会提示203错误。(在文件开头添加:#!/bin/sh)
启动程序脚本(.sh文件)没有执行权限,会提示203错误。(chmod +x myapp.sh)

6 将服务设置成开机自启动

# systemctl enable myapp.service
# systemctl list-unit-files|grep myapp
--------------------------
myapp.service                      enabled

反向命令:

# systemctl disable myapp.service
# systemctl list-unit-files|grep myapp
--------------------------
myapp.service                      disabled

6 查看服务的控制台日志

相当于tail -f。

# journalctl -flu myapp.service

你可能感兴趣的:(linux)