linux的.service文件配置详解

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

xxx.service 文件配置详解

[Unit]

  • Description给出当前服务的简单描述。
  • Documentation给出文档位置。
  • After表示在什么服务之后启动。
  • Before表示在什么服务之前启动。
  • Wants表示该服务和某服务存在某种弱依赖关系即某服务停止运行或退出不影响该服务继续运行。
  • Requires则表示”强依赖”关系即某服务停止运行或退出改服务也必须停止运行。
  • Wants与Requires只涉及依赖关系与启动顺序无关默认情况下是同时启动的。
  • Conflicts代表冲突的服务即这个项目后面接的服务如果有启动那么我们这个 unit 本身就不能启动我们 unit 有启动则此项目后的服务就不能启动就是冲突性的检查。

注意After和Before只涉及启动顺序不涉及依赖关系。

[Service]

  • Type 定义启动类型

    • simple默认值ExecStart启动的进程为主进程
    • forkingExecStart将以fork()方式启动此时父进程将会退出子进程将成为主进程
    • oneshot类似于simple但只执行一次Systemd 会等它执行完才启动其他服务
    • dbus类似于simple但会等待 D-Bus 信号后启动
    • notify类似于simple启动结束后会发出通知信号然后 Systemd 再启动其他服务
    • idle类似于simple但是要等到其他任务都执行完才会启动该服务。一种使用场合是为让该服务的输出不与其他服务的输出相混
  • ExecStart定义启动进程时执行的命令就是手动启动时执行的命令。

  • ExecReload重启服务时执行的命令。

  • ExecStop停止服务时执行的命令。

  • ExecStartPre启动服务之前执行的命令。

  • ExecStartPost启动服务之后执行的命令。

  • ExecStopPost停止服务之后执行的命令。

  • killmod定义 Systemd 如何停止 sshd 服务。

    • control-group默认值当前控制组里面的所有子进程都会被杀掉
    • process只杀主进程
    • mixed主进程将收到 SIGTERM 信号子进程收到 SIGKILL 信号
    • none没有进程会被杀掉只是执行服务的 stop 命令
  • Restart定义了 sshd 退出后Systemd 的重启方式。

    • no默认值退出后不会重启
    • on-success只有正常退出时退出状态码为0才会重启
    • on-failure非正常退出时退出状态码非0包括被信号终止和超时才会重启
    • on-abnormal只有被信号终止和超时才会重启
    • on-abort只有在收到没有捕捉到的信号终止时才会重启
    • on-watchdog超时退出才会重启
    • always不管是什么退出原因总是重启

对于守护进程推荐设为on-failure。对于那些允许发生错误退出的服务可以设为on-abnormal。

  • RestartSec表示 Systemd 重启服务之前需要等待的秒数。

  • user可以设置服务的用户名

  • WorkingDirectory指定服务的安装目录

  • RemainAfterExit当设置为 RemainAfterExit=1 时则当这个 daemon 所属的所有程序都终止之后此服务会再尝试启动。这对于Type=oneshot 的服务很有帮助

  • TimeoutSec 若这个服务在启动或者是关闭时因为某些缘故导致无法顺利 “ 正常启动或正常结束” 的情况下则我们要等多久才进入 “ 强制结束 ” 的状态

  • EnvironmentFile可以指定启动脚本的环境配置文件例如 sshd.service 的配置文件写入到/etc/sysconfig/sshd 当中你也可以使用 Environment= 后面接多个不同的Shell 变量来给予设置

[Install]

  • WantedBy表示该服务所在的 TargetTarget的含义是服务组表示一组服务。WantedBy=multi-user.target指的是服务所在的Targetmulti-user.target

    Systemd 默认的启动 Target就是multi-user.target在这个组里的所有服务都将开机启动。
    查看 multi-user.target 包含的所有服务

     systemctl list-dependencies multi-user.target
    
  • Also当目前这个 unit 本身被 enable 时 Also 后面接的 unit 也请 enable。 也就是具有相依性的服务可以写在这里。

  • Alias进行一个链接的别名当 systemctl enable 相关的服务时则此服务会进行链接文件的创建以multi-user.target 为例这个组是用来作为默认操作环境default.target 的规划因此当你设置成 default.target时这个/etc/systemd/system/default.target 就会链接到/usr/lib/systemd/system/multi-user.target

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: linux