# systemd 配套命令
hostnamectl #查看设置主机名
localectl #查看设置本地化语⾔
timedatectl #查看设置时间时区
loginctl #查看登录⽤户
journalctl #⽇志管理
# 配置目录
/etc/systemd/system/ #当前系统本地配置本地⽣效的配置
/lib/systemd/system/ #软件包自带的各种配置
systemctl enable xxxx.service 相当于 ln -s /lib/systemd/system/xxxx.service /etc/systemd/system/multi-user.target.wants/xxxx.service
Unit 分类
- Service unit:系统服务
- Target unit: 多个 Unit 构成的⼀个组
- Device Unit:硬件设备
- Mount Unit:⽂件系统的挂载点
- Automount Unit:⾃动挂载点
- Path Unit:⽂件或路径
- Scope Unit:不是由 Systemd 启动的外部进程
- Slice Unit:进程组
- Snapshot Unit:Systemd 快照,可以切回某个快照
- Socket Unit:进程间通信的 socket
- Swap Unit:swap ⽂件
- Timer Unit:定时器
- simple(默认值):ExecStart 字段启动的进程为主进程
- forking: ExecStart 字段将以 fork() ⽅式启动,此时⽗进程将会退出,⼦进程将成为主进程
- oneshot:类似于 simple ,但只执⾏⼀次,Systemd 会等它执⾏完,才启动其他服务
- dbus:类似于 simple ,但会等待 D-Bus 信号后启动
- notify:类似于 simple ,启动结束后会发出通知信号,然后 Systemd 再启动其他服务
- idle:类似于 simple ,但是要等到其他任务都执⾏完,才会启动该服务。⼀种使⽤场合是为了让该服务的输出,不与其他服务的输出相混合
Exec 相关:
- ExecStart:启动当前服务的命令
- ExecStartPre:启动当前服务之前执⾏的命令
- ExecStartPost:启动当前服务之后执⾏的命令
- ExecReload:重启当前服务时执⾏的命令
- ExecStop:停⽌当前服务时执⾏的命令
- ExecStopPost:停⽌当其服务之后执⾏的命令
KillMode 相关:
- control-group(默认值):当前控制组⾥⾯的所有⼦进程,都会被杀掉
- process:只杀主进程
- mixed:主进程将收到 SIGTERM 信号,⼦进程收到 SIGKILL 信号
- none:没有进程会被杀掉,只是执⾏服务的 stop 命令。
Restart 相关:
- no(默认值):退出后不会重启
- on-success:只有正常退出时(退出状态码为0),才会重启
- on-failure:⾮正常退出时(退出状态码⾮0),包括被信号终⽌和超时,才会重启
- on-abnormal:只有被信号终⽌和超时,才会重启
- on-abort:只有在收到没有捕捉到的信号终⽌时,才会重启
- on-watchdog:超时退出,才会重启
- always:不管是什么退出原因,总是重启
# 配置模版,[Mount] 为可选类
[Unit] Description=..... After=network.target Requires=database.service disk-data.mount [Service] Type=simple ExecStart=the-program $ENV_OPTIONS ExecReload=/bin/kill -HUP $MAINPID EnvironmentFile=/etc/sysconfig/xxxx Environment=ENV_KEY=env_value KillMode=process Restart=on-failure RestartSec=10s [Mount] What=/dev/by-res Where=/mnt/the-path [Install] WantedBy=multi-user.target 标签:systemd,服务,启动,simple,配置,常用命令,进程,Unit From: https://www.cnblogs.com/demoduan/p/17314484.html