CentOS系统服务相关


注册服务

*以下统一将serviceName作为服务名

  • 进入服务目录:cd /lib/systemd/system
  • 创建并编辑配置文件: vim serviceName.service
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[ Unit ]  # 记录service文件的通用信息
Description=test service # 服务描述信息
After=network.target remote-fs.target nss-lookup.target # 服务的启动依赖,在指定服务之后启动,不用动

[ Service ] # 记录service文件的service信息
Type=forking # 标准UNIX Daemon使用的启动方式,不用动
PIDFile=/run/serviceName.pid # 服务的pid文件位置
ExecStartPre= # 服务启动前执行的命令
ExecStart= # 启动服务执行的命令
ExecReload= # 服务重启执行的命令
ExecStop= # 服务关闭执行的命令
TimeoutStopSec=5 # 设定该服务允许的最大停止时长
KillMode=process # 定义 Systemd 如何停止 sshd 服务,具体见下文
Restart=on-failure # 定义 sshd 退出后,Systemd 的重启方式,具体见下文
RestartSec=30s # 表示 Systemd 重启服务之前,需要等待的秒数
PrivateTmp=true # 用于设置是否使用私有的tmp目录,安全起见,设为true

[ Install ] # 记录service文件的安装信息
WantedBy=multi-user.target # 多用户环境下启用

killMode字段

  • control-group(默认值):当前控制组里面的所有子进程,都会被杀掉
  • process:只杀主进程
  • mixed:主进程将收到 SIGTERM 信号,子进程收到 SIGKILL 信号
  • none:没有进程会被杀掉,只是执行服务的 stop 命令。

restart 字段

  • no(默认值):退出后不会重启
  • on-success:只有正常退出时(退出状态码为0),才会重启
  • on-failure:非正常退出时(退出状态码非0),包括被信号终止和超时,才会重启
  • on-abnormal:只有被信号终止和超时,才会重启
  • on-abort:只有在收到没有捕捉到的信号终止时,才会重启
  • on-watchdog:超时退出,才会重启
  • always:不管是什么退出原因,总是重启

systemctl 相关操作

1
2
3
4
5
6
7
8
9
10
11
12
# 将服务注册为系统启动后自动启动
systemctl enable serviceName
# 启动服务
systemctl start serviceName
# 重新加载服务
systemctl reload serviceName
# 停止服务
systemctl stop serviceName
# 查看服务运行状态
systemctl status serviceName
# 查看所有服务列表
systemctl list-unit-files

其他操作

修改配置文件后需要重新加载配置文件

1
2
3
4
5
# 重新加载配置文件
systemctl daemon-reload

# 重启相关服务
systemctl restart serviceName

参考

Systemd 入门教程:实战篇 - 阮一峰
CentOS 7之Systemd详解之服务单元设置system.service