示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[Unit] # 基本要素
Description=A high performance web server and a reverse proxy server # 描述
After=network.target # 依赖

[Service] # 说明本文件描述的是daemon
Type=forking
PIDFile=/run/nginx.pid # 用来追踪主进程
ExecStartPre=/usr/sbin/nginx -t -q -g 'daemon on; master_process on;' # 启动前执行
ExecStart=/usr/sbin/nginx -g 'daemon on; master_process on;' # 启动
ExecReload=/usr/sbin/nginx -g 'daemon on; master_process on;' -s reload # 重新加载配置文件
ExecStop=/usr/sbin/nginx -s quit # 停止命令

[Install] # 当执行install命令时,用来说明指定target依赖本服务
WantedBy=multi-user.target

Service

  • Type

    用来说明本服务类型

    • simple[默认] 不调用fork

    • forking 该服务是传统型unix daemon,会调用fork

  • PIDFile

    指定PID文件绝对路径,当Type=forking时,必须设置此项,systemd通过该文件来追踪服务主进程,以便管理

  • Restart

    指定服务进程自动重启的条件。

    • no:默认选项,服务不会被systemd自动重启。
    • on-success:当服务进程成功退出后重启(exit code=0,signals SIGHUP, SIGINT, SIGTERM or SIGPIPE, and additionally, 或SuccessExitStatus=选项指定的退出信号)。
    • on-failure:服务进程不正常退出时进行重启(exit code 为非0,或被信号中断)。
    • on-abnormal:服务进程被信号中断时进行重启。
    • no-watchdog:watchdog观测到服务进程过期后重启服务。
    • no-abort:进程被未捕获的信号中断时将进行重启。
    • always:服务在无论何种情况退出后或者超时时总是重启。

参考

  1. https://www.freedesktop.org/software/systemd/man/systemd.service.html
  2. http://fangpeishi.com/systemd_chapter2.html
  3. https://wiki.archlinux.org/index.php/systemd_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)#.E7.BC.96.E5.86.99.E5.8D.95.E5.85.83.E6.96.87.E4.BB.B6

留言

2016-11-01