概念
Systemctl是一个systemd工具,主要负责控制systemd系统和服务管理器。
基本操作
|
|
检查服务状态
服务执行时有可能出现失败等情况,这时需要查看服务状态
|
|
Loaded行:配置文件的位置,是否设为开机启动
Active行:表示正在运行
Main PID行:主进程ID
Status行:由应用本身(这里是 httpd )提供的软件当前状态
CGroup块:应用的所有子进程
日志块:应用的日志
将服务设置为开机启动
|
|
上面的命令相当于在/etc/systemd/system
目录添加一个符号链接,指向/usr/lib/systemd/system里面的httpd.service文件。
这是因为开机时,Systemd只执行/etc/systemd/system
目录里面的配置文件。这也意味着,如果把修改后的配置文件放在该目录,就可以达到覆盖原始配置的效果。
自定义服务
找到配置文件目录/usr/lib/systemd/system
,我们打开sshd.service
|
|
[Unit]区块
After: 表示ssh.service
在network.target
sshd-keygen.service
后启动
Wants: 表示与sshd-keygen.service
存在弱依赖关系,如果sshd-keygen.service
启动失败或异常退出,不影响sshd.service
继续运行
Requires: 表示”强依赖”关系,即如果该服务启动失败或异常退出,那么sshd.service
也必须退出。
After只表示执行顺序,不表示依赖
Want、Requires只表示依赖,不表示顺序,默认是同时执行
[Service]区块
启动命令
ExecReload字段:重启服务时执行的命令
ExecStop字段:停止服务时执行的命令
ExecStartPre字段:启动服务之前执行的命令
ExecStartPost字段:启动服务之后执行的命令
ExecStopPost字段:停止服务之后执行的命令
启动类型
通过Type字段指定启动类型
simple(默认值): systemd认为该服务将立即启动。服务进程不会 fork 。如果该服务要启动其他服务,不要使用此类型启动,除非该服务是socket 激活型
forking:systemd认为当该服务进程fork,且父进程退出后服务启动成功。对于常规的守护进程(daemon),除非你确定此启动方式无法满足需求,使用此类型启动即可。使用此启动类型应同时指定 PIDFile=,以便 systemd 能够跟踪服务的主进程。
oneshot:这一选项适用于只执行一项任务、随后立即退出的服务。可能需要同时设置 RemainAfterExit=yes
使得 systemd 在服务进程退出之后仍然认为服务处于激活状态。
dbus:类似于simple,但会等待 D-Bus 信号后启动
notify:与 Type=simple
相同,但约定服务会在就绪后向 systemd 发送一个信号。这一通知的实现由 libsystemd-daemon.so 提供。
idle:systemd会等待所有任务处理完成后,才开始执行 idle 类型的单元。其他行为与 Type=simple 类似。
设定独立临时文件
PrivateTmp=true
[Install]区块
Install区块,定义如何安装这个配置文件,即怎样做到开机启动。
WantedBy字段:表示该服务所在的 Target。
Target的含义是服务组,表示一组服务。WantedBy=multi-user.target指的是,sshd 所在的 Target 是multi-user.target。
Systemd默认的target是multi-user.target
一般来说常用的target有两个
multi-user.target
表示多用户命令行状态graphical.target
表示图形用户状态,它依赖于multi-user.target
编写自定义服务
|
|
最后记得使用systemctl daemon-reload
重载配置
环境变量
|
|