使用systemd管理程序
示例(源代码安装Nginx) :
vim /usr/lib/systemd/system/Nginx.service
[Unit]
Description=The Nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStartPre=/service/Nginx/sbin/Nginx -t -c /service/Nginx/conf/Nginx.conf
ExecStart=/service/Nginx/sbin/Nginx -c /service/Nginx/conf/Nginx.conf
ExecReload=/service/Nginx/sbin/Nginx -s reload
Restart=on-failure
RestartSec=10s
TimeoutSe=5
KillMode=control-group
[Install]
WantedBy=multi-user.target
[Unit]
区块说明
描述,启动顺序与依赖关系
Description |
当前服务的简单描述 |
Documentation |
文档位置 |
After |
(非依赖)启动顺序,其他服务启动后,本程序启动 |
Before |
(非依赖)启动顺序,本程序启动后,再启动其他服务 |
Wants |
(弱依赖),其他程序启动失败或停止运行,不影响本程序继续执行 |
Requires |
(强依赖),其他程序启动失败或停止运行,本程序也必须退出 |
[Service]
区块说明
定义如何启动当前服务
Type |
定义启动类型 |
ExecStartPre |
启动服务之前执行的命令 |
ExecStart |
启动进程时执行的命令 |
ExecStartPost |
启动服务之后执行的命令 |
ExecReload |
重启服务时执行的命令 |
ExecStop |
停止服务时执行的命令 |
ExecStopPost |
停止服务之后执行的命令 |
Restart |
守护进程,当服务进程正常退出、异常退出、被杀死、超时的时候, 是否重新启动该服务。 |
RestartSec |
服务重启之间,等待的秒数 |
TimeoutStartSec |
服务允许的最大启动时长 |
TimeoutStopSec |
服务允许的最大停止时长 |
TimeoutSe |
同时设置TimeoutStartSec 与TimeoutStopSec |
KillMode |
服务停止时,杀死进程的方法 |
PrivateTmp |
服务启动时在/tmp 目录中生成缓存目录 |
[Install]
区块说明
定义如何安装这个配置文件,即怎样做到开机启动。
systemctl daemon-reload
部分键值可用项
simple |
(默认值)ExecStart 字段启动的进程为主进程 |
forking |
ExecStart 字段将以fork() 方式启动,此时父进程将会退出,子进程将成为主进程 |
oneshot |
类似于simple ,但只执行一次,Systemd会等它执行完,才启动其他服务 |
dbus |
类似于simple ,但会等待D-Bus 信号后启动 |
notify |
类似于simple ,启动结束后会发出通知信号,然后Systemd 再启动其他服务 |
idle |
类似于simple ,但是要等到其他任务都执行完,才会启动该服务。一种使用场合是为让该服务的输出,不与其他服务的输出相混合 |
Restart
字段定义启动类型。它可以设置的值如下
no |
(默认值)退出后不会重启 |
on-success |
只有正常退出时(退出状态码为0),才会重启 |
on-failure |
非正常退出时(退出状态码非0),包括被信号终止和超时,才会重启 |
on-abnormal |
只有被信号终止和超时,才会重启 |
on-abort |
只有在收到没有捕捉到的信号终止时,才会重启 |
on-watchdog |
超时退出,才会重启 |
always |
不管是什么退出原因,总是重启 |
对于守护进程,推荐设为on-failure
。对于那些允许发生错误退出的服务,可以设为on-abnormal
。
KillMode
字段定义启动类型。它可以设置的值如下
control-group |
(默认值)当前控制组里面的所有子进程,都会被结束 |
process |
只杀主进程 |
mixed |
主进程将收到 SIGTERM 信号,子进程收到 SIGKILL 信号 |
none |
没有进程会被杀掉,只是执行服务的 stop 命令 |
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。