systemd 常用命令和配置
# 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:定时器
After 和 Before 只涉及启动顺序,不涉及依赖关系。
Wants: 表示与 database.service 之间存在"弱依赖"关系,即如果 database.service 启动失败或停⽌运⾏,不影响当前服务继续执⾏。
Requires: 表示"强依赖"关系,即如果该服务启动失败或异常退出,那么当前服务也必须退出。
Service 分类
- 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-service
, Linux-command
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
2022-04-13 安装 KVM 虚拟机