systemd的 .service无疑是最常用的服务模块,废话少说,直接进入正题。
1)Service 常用参数说明:
Type:定义启动类型
* simple:由 ExecStart 接的指令串启动,启动后常驻于内存中(默认)
* forking:由 ExecStart 启动的程序通过 spawns 延伸出其他子程序来作为此服务,父程序在服务启动后终止运作
#传统的 unit 服务大多属于这种项目(这种工作模式效能较好)
#进程因运作过久而终结时 systemd 会重新生出另一个子程序持续运作,同时将父程序删除(如 httpd)
* oneshot:与 simple 类似,但程序在工作完毕后就结束,不会常驻内存中
* dbus:与 simple 类似,但服务必须在取得一个 D-Bus 名称后才继续运作(通常要设定 BusName=)
* idle:与 simple 类似,但必须所有工作执行完毕后才会执行,通常该服务开机到最后再执行即可
KillMode:定义 Systemd 如何停止服务
* control-group:当前控制组里面的所有子进程,都会被杀掉(默认)
* process:只杀主进程
* mixed:主进程收到 SIGTERM 信号,子进程收到 SIGKILL 信号
* none:没有进程会被杀掉,只是执行服务的 stop 命令
PIDFile:用于服务的 PID 路径
EnvironmentFile:指定服务依赖配置文件
ExecStart:启动进程时执行的命令
ExecStop :关闭进程时执行的命令
ExecReload:重载服务时执行的命令
ExecStartPre:启动服务之前执行的命令
ExecStartPost:启动服务之后执行的命令
ExecStopPost:停止服务之后执行的命令
Restart:服务退出后,systemd 的重启方式
* no:退出后不会重启(默认)
* on-success:正常退出时(退出状态码为 0)才会重启
* on-failure:非正常退出时(退出状态码非 0)才会重启
* on-abnormal:只有被信号终止和超时才会重启
* on-abort:只有在收到没有捕捉到的信号终止时才会重启
* on-watchdog:超时退出才会重启
* always:不管是什么退出原因总是重启
RemainAfterExit:若设定 1 时,当该服务所属程序都终止之后,此服务会再次尝试启动(当Type=oneshot 的服务很有帮助)
TimeoutSec:强制结束等待时间
RestartSec:systemd 重启前需等待的时间(预设 100ms)
2)关于 NAME@.service:
* @以后 .service 以前的内容会作为参数传递进服务中
* 服务中通过 %I 进行参数调用
* 感兴趣的读者可以自行学习 /usr/lib/systemd/system/getty@.service
3)在 /etc/systemd/system/ 下创建 test.service:
[Unit]
Description=Test service for systemd
[Service]
Type=simple
ExecStart=/bin/bash /root/test_service.sh # 确定执行内容
[Install]
WantedBy=multi-user.target
4)使用 systemctl 进行控制:
* systemctl start test.service # 启动服务
* systemctl enable test.service # 设置开机启动
5)如需详细了解 .service,读者可通过 man systemd.service 获取。
下一篇是关于 .timer的简介,敬请期待。
| 留言与评论(共有 0 条评论) “” |