一:配置文件内容
systemd服务配置文件存放在/usr/lib/systemd
目录下,有系统system和用户user之分,需要开机不登录就能运行的程序,放在/usr/lib/systemd/system/
目录下,每一个服务以.service结尾,配置文件分为3部分,[Unit]、[Service]、[Install]
。
[Unit]
Description=OpenSSH server daemon
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target sshd-keygen.service
Wants=sshd-keygen.service
[Service]
Type=notify
EnvironmentFile=/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd -D $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
-
[Unit]
-
[Service]
[types]
| 字段|说明|备注|
|:-😐 - |
|simple|ExecStart字段启动的进程为主进程|
|forking|ExecStart字段将以fork()方式启动,此时父进程将会退出,子进程将成为主进程|
|oneshot|类似于simple,但只执行一次,Systemd 会等它执行完,才启动其他服务|
|dbus|类似于simple,但会等待 D-Bus 信号后启动|
|notify|类似于simple,启动结束后会发出通知信号,然后 Systemd 再启动其他服务|
|idle|类似于simple,但是要等到其他任务都执行完,才会启动该服务。一种使用场合是为让该服务的输出,不与其他服务的输出相混合|[KillMode]
[Restart]
-
[Install]
Install区块,定义如何安装这个配置文件,即怎样做到开机启动。
WantedBy字段:表示该服务所在的 Target。
Target的含义是服务组,表示一组服务。WantedBy=multi-user.target指的是,sshd 所在的 Target 是multi-user.target。
这个设置非常重要,因为执行systemctl enable sshd.service命令时,sshd.service的一个符号链接,就会放在/etc/systemd/system目录下面的multi-user.target.wants子目录之中。
Systemd 有默认的启动 Target:systemctl get-default multi-user.target
上面的结果表示,默认的启动 Target 是multi-user.target。在这个组里的所有服务,都将开机启动。这就是为什么systemctl enable命令能设置开机启动的原因。
使用target的时候,systemctl list-dependencies
命令和systemctl isolate
#查看 multi-user.target 包含的所有服务 $ systemctl list-dependencies multi-user.target #切换到另一个 target #shutdown.target 就是关机状态 $ sudo systemctl isolate shutdown.target
一般来说,常用的 Target 有两个:一个是multi-user.target,表示多用户命令行状态;另一个是graphical.target,表示图形用户状态,它依赖于multi-user.target
二:配置文件位置
/usr/lib/systemd/system
/etc/systemd/system/
/etc/systemd/system/
- /usr/lib/systemd/system
- /etc/systemd/system/
- /etc/systemd/system/
三:开机启动配置
生成的软链接文件不可以直接拷贝到根文件系统源文件中,但是可以压缩以后再拷贝。