0%

systemd 简单编写

我们使用 unix 服务器目前管理服务的方式,基本上是使用systemd来进行管理,所以这边简单的说明一下如何编写一个简单的systemd服务脚本。

编写简单的服务文件

正常情况下,如果我们需要保持软件在后台执行,所期望的是:

  • 能够启动和停止,以及设置开机启动
  • 意外退出后能够自动重启

对于这一项,我认为最简单的配置是:

1
2
3
4
5
6
7
8
9
10
11
12
[Unit]
Description=服务描述
After=network.target

[Service]
User=启动的用户名
Restart=on-failure
WorkingDirectory=工作目录
ExecStart=执行命令

[Install]
WantedBy=multi-user.target

只需要将上述配置放到 /usr/lib/systemd/system/服务名.service 即可实现我们希望的功能。

操作命令:

  • 启动: systemctl start 服务名
  • 退出: systemctl stop 服务名
  • 状态: systemctl status 服务名
  • 重启: systemctl restart 服务名

附上 sshd 的配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$ systemctl cat sshd.service

[Unit]
Description=OpenSSH server daemon
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target sshd-keygen.service
Wants=sshd-keygen.service

[Service]
EnvironmentFile=/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd -D $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
Type=simple
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target

参考文档

  • systemd 编写服务管理脚本
  • Systemd 入门教程:命令篇
  • Systemd 入门教程:实战篇

其他互联网文档