Unit
选项 | 描述
- | -
Description | 单位的有意义的描述。例如,该文本显示在systemctl status命令的输出中。
Documentation | 提供引用该单元文档的URI列表。
After | 定义单位启动的顺序。只有在中指定的单元处于After活动状态后,该单元才会启动。与不同Requires,After不会显式激活指定的单位。该Before选项的功能与之相反After。
Requires | 配置对其他单元的依赖性。列出Requires的单元与该单元一起被激活。如果任何必需的单元无法启动,则不会激活该单元。
Wants | 配置比弱的依赖性Requires。如果列出的任何单元均未成功启动,则对单元激活没有影响。这是建立自定义单位依赖关系的推荐方法。
Conflicts | 配置负相关性,与相反Requires。
Service
选项 | 描述
- | -
Type | 配置影响的功能ExecStart和相关选项的单元流程启动类型。之一:simple–默认值。开始ExecStart的过程是服务的主要过程。forking–以该进程开头ExecStart的子进程成为服务的主要进程。启动完成后,父进程退出。oneshot–此类型类似于simple,但是在启动后续单元之前,该过程将退出。dbus–此类型类似于simple,但是随后的单元仅在主过程获得D-Bus名称后才启动。notify–此类型类似于simple,但是仅在通过sd_notify()函数发送通知消息后,后续单元才启动。idle–与相似simple,服务二进制文件的实际执行被延迟到所有作业完成为止,这避免了将状态输出与服务的shell输出混合。
ExecStart | 指定启动设备时要执行的命令或脚本。ExecStartPre并ExecStartPost指定要在之前和之后执行的自定义命令ExecStart。Type=oneshot支持指定多个自定义命令,然后依次执行。
ExecStop | 指定设备停止时要执行的命令或脚本。
ExecReload | 指定重新加载单元时要执行的命令或脚本。
Restart | 启用此选项后,该服务将在其进程退出后重新启动,但systemctl命令会干净停止。
RemainAfterExit | 如果设置为True,则即使退出了所有进程,该服务也被认为是活动的。默认值为False。如果Type=oneshot已配置,此选项特别有用。
EnvironmentFile | 从文本文件读取环境变量
Install
选项 | 描述
- | -
Alias | 提供以空格分隔的其他名称列表。systemctl除之外的大多数命令systemctl enable都可以使用别名代替实际的单元名称。
RequiredBy | 取决于单位的单位列表。当本机启动时,单位中列出RequiredBy增益的Require单位的依赖。
WantedBy | 弱依赖于单位的单位列表。当本机启动时,单位中列出WantedBy增益的Want单位的依赖。
Also | 指定要与该单元一起安装或卸载的单元的列表。
DefaultInstance | 仅限于实例化单元,此选项指定启用该单元的默认实例
nginx服务
vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
[Install]
WantedBy=multi-user.target
mysql服务
vim /etc/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
go服务
启动脚本
vim /data/app/xxx/start.sh
#!/bin/bash
export XXX="xxx"
cd /data/app/xxx
./xxx
vim /usr/lib/systemd/system/xxx.service
[Unit]
Description=xxx
After=network.target
[Service]
Type=simple
ExecStart=/data/app/xxx/start.sh
ExecStop=/bin/kill -15 $MAINPID
Restart=on-failure
[Install]
WantedBy=multi-user.target
注:配置完成后执行以下命令重载systemd
systemctl daemon-reload