Systemd


以下只是我常用的一部分,具体可以查看实战教程

  • Wants字段: 假如你的web程序用到了redis,就可以写上Wants=redis.service,systemd会在redis没有启动的时候帮你启动一次,但Wants只管依赖不管顺序,如果需要在redis启动后再启动web应用,需要加上After=redis.service。因为Wants代表弱依赖,所以当redis启动失败时,web应用仍然会启动。强依赖使用Requires字段,当redis启动失败,web应用也会失败。
  • Type字段: 如果是持续启动的服务,比如一个http服务器,就使用simple,服务启动他会立刻标记状态为active,进程结束就会标记为inactive。如果是一次性命令,使用oneshot,需要配合RemainAfterExit=yes,否则它的状态始终是inactive。当服务启动后,它会等进程结束才会标记为active,这样一些需要在它之后启动的服务(After=服务A),就可以等它执行完再启动。当使用stop命令停止时,会标记为inactive。
  • RemainAfterExit字段: 设置为yes时,即使进程退出,systemd仍然认为它在运行(active状态),默认为no
  • Restart字段: 如果服务端崩溃或意外退出,Systemd 会自动将其重启。always 表示无论何种原因退出都重启;on-failure 表示只有非正常退出(错误码不为 0)时才重启。
  • RestartSec字段: 例如 RestartSec=5,崩溃后等待5秒再执行重启操作,防止死循环无限瞬间重启。
  • User字段: 设置为root代表以root用户身份执行命令,假如你的命令需要访问目录/root,那就需要设置为root