systemd 自定义开机启动服务

 

 

# 对于那些支持 Systemd 的软件,安装的时候,会自动在/usr/lib/systemd/system目录添加一个配置文件。(以httpd.service为例)
systemctl enable httpd

# 上面的命令相当于在/etc/systemd/system目录添加一个符号链接,指向/usr/lib/systemd/system里面的httpd.service文件。
# 开机时,systemd只执行/etc/systemd/system 目录里的配置文件

systemctl cat命令可以用来查看配置文件,下面以sshd.service文件为例,它的作用是启动一个 SSH 服务器,供其他用户以 SSH 方式登录。

$ systemctl cat sshd.service

[Unit]
Description=OpenSSH server daemon
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target sshd-keygen.service
Wants=sshd-keygen.service

[Service]
EnvironmentFile=/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd -D $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
Type=simple
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target

上述配置文件分为3个区块:

  1. [Unit] 区块:启动顺序与依赖关系
  2. [Service] 区块:启动行为
  3. [Install] 区块:定义如何安装配置文件,即如何实现开机启动

 

 [Unit] 区块详解:

Description:服务的简单描述
Documentation:文档位置

After/Before:定义当前服务应该在哪些服务之后/之前启动 

After和Before只涉及启动顺序,不涉及依赖关系
设置依赖关系,需使用Wants和Requires
Wants和Requires只涉及依赖关系,与启动顺序无关,默认情况下是同时启动的
Wants:弱依赖,即前者启动失败或停止运行,不影响后者继续执行

Requires:强依赖,即前者启动失败或异常退出,后者也必须退出

 

posted on 2022-09-21 16:47  Karlkiller  阅读(353)  评论(0编辑  收藏  举报

导航