Rootop 服务器运维与web架构

systemd管理服务启动

# 开机服务启动目录

/etc/systemd/system/multi-user.target.wants/

# 服务启动配置目录

/usr/lib/systemd/system/

/lib/systemd/system目录 等同于 /usr/lib/systemd/system目录,因为/lib 目录是 /usr/lib 目录的软连接

[root@web ~]# ll /lib
lrwxrwxrwx. 1 root root 7 May 24  2022 /lib -> usr/lib

# yum安装的nginx enable时,就是软连接启动文件到多用户启动目录下,类似之前的/etc/rc.local实现开机启动服务。

[root@web ~]# systemctl enable nginx
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.

# disable就是移除开机启动

[root@web ~]# systemctl disable nginx
Removed symlink /etc/systemd/system/multi-user.target.wants/nginx.service.

# ssh服务

[root@web ~]# ll /etc/systemd/system/multi-user.target.wants/sshd.service 
lrwxrwxrwx. 1 root root 36 May 24  2022 /etc/systemd/system/multi-user.target.wants/sshd.service -> /usr/lib/systemd/system/sshd.service

[root@web ~]# ll /usr/lib/systemd/system/sshd.service 
-rw-r--r-- 1 root root 373 Nov 24  2021 /usr/lib/systemd/system/sshd.service

# 将openresty创建服务,由systemctl控制启动

[Unit]
Description=nginx service
After=network.target

[Service]
Type=forking
ExecStartPre=/home/software/openresty/nginx/sbin/nginx -t
ExecStart=/home/software/openresty/nginx/sbin/nginx
ExecReload=/home/software/openresty/nginx/sbin/nginx -s reload
ExecStop=/home/software/openresty/nginx/sbin/nginx -s stop
PrivateTmp=true

[Install]
WantedBy=multi-user.target

很多 unit 文件中只有 ExecStart 命令,没有ExecStop、ExecReload命令也能实现关闭和重启

例如,关闭防火墙服务执行systemctl stop firewalld。

执行后,如果没有配置ExecStop,Systemd 默认将发送SIGTERM信号到主进程,并等待TimeoutStopSec配置的时间后查看进程是否已终止,如果没配置这个时间默认是90s。

90s以后,systemd 会检查进程有没有停止成功,如果还没停止,则 systemd 会发送SIGKILL信号来强杀进程完成该任务。
如果主进程 fork 了其他子进程,则 systemd 也会一并停止它们,因为它们都位于同一个 cgroup 中。

ExecStop=除非您有其他关闭服务的方法,否则您无需指示。

原创文章,转载请注明。本文链接地址: https://www.rootop.org/pages/5252.html

作者:Venus

服务器运维与性能优化

评论已关闭。