Linux systemd

一:配置文件内容

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
  1. [Unit]

    字段说明依赖
    After表示服务需要在***服务启动之后执行无依赖
    Before表示服务需要在***服务启动之前执行无依赖
    Wants弱依赖关系
    Requires强依赖关系***停止之后本服务也必须停止
  2. [Service]

    字段说明依赖
    ExecStart启动进程时执行的命令
    ExecReload重启服务时执行的命令
    ExecStop停止服务时执行的命令
    ExecStartPre启动服务之前执行的命令
    ExecStartPost启动服务之后执行的命令
    ExecStopPost停止服务之后执行的命令

    [types]
    | 字段|说明|备注|
    |:-😐 - |
    |simple|ExecStart字段启动的进程为主进程|
    |forking|ExecStart字段将以fork()方式启动,此时父进程将会退出,子进程将成为主进程|
    |oneshot|类似于simple,但只执行一次,Systemd 会等它执行完,才启动其他服务|
    |dbus|类似于simple,但会等待 D-Bus 信号后启动|
    |notify|类似于simple,启动结束后会发出通知信号,然后 Systemd 再启动其他服务|
    |idle|类似于simple,但是要等到其他任务都执行完,才会启动该服务。一种使用场合是为让该服务的输出,不与其他服务的输出相混合|

    [KillMode]

    字段说明备注
    control-group当前控制组里面的所有子进程,都会被杀掉默认值
    process只杀主进程
    mixed主进程将收到 SIGTERM 信号,子进程收到 SIGKILL 信号
    none没有进程会被杀掉,只是执行服务的 stop 命令

    [Restart]

    字段说明备注
    no退出后不会重启默认值
    on-success只有正常退出时(退出状态码为0),才会重启
    on-failure非正常退出时(退出状态码非0),包括被信号终止和超时,才会重启
    on-abnormal只有被信号终止和超时,才会重启
    on-abort只有在收到没有捕捉到的信号终止时,才会重启
    on-watchdog超时退出,才会重启
    always不管是什么退出原因,总是重启
  3. [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/
  1. /usr/lib/systemd/system
  2. /etc/systemd/system/
  3. /etc/systemd/system/

三:开机启动配置

在这里插入图片描述
生成的软链接文件不可以直接拷贝到根文件系统源文件中,但是可以压缩以后再拷贝。

四:systemctl使用

指令说明
systemctl start ssh.service启动sshd服务
systemctl stop ssh.service停止sshd服务
systemctl status ssh.service查看sshd服务状态
systemctl status查看所有服务状态
systemctl restart ssh.service重启sshd服务
systemctl enable ssh.service设置开机自启动
systemctl disable ssh.service禁止开机自启动
systemctl list-units --type=service查看所有已经启动的服务
centered systemctl daemon-reload重新加载配置文件
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值