守护进程 - systemd(Systemctl)
# 基本命令 - systemctl
# 重新加载 systemd 配置
sudo systemctl daemon-reload
# 启用服务(开机运行)
sudo systemctl enable my_service.service
# 运行服务
sudo systemctl start my_service.service
# 检查服务状态
sudo systemctl status my_service.service
# 停止服务
sudo systemctl stop my_service.service
# 重启服务
sudo systemctl restart my_service.service
# 查看日志
journalctl -u my_service.service
# 基本命令 - service
Tip
systemd
系统的管理工具为 systemctl
,但为兼容传统的 SysVinit
系统管理工具 service
,因此在 systemd
的系统上, service
命令通常会直接调用 systemctl
来兼容旧版用法。就个人而言,相较于 systemctl
的 systemctl start [服务名]
顺序,更喜欢使用 service [服务名] start
。
service [服务名] reload
chkconfig [服务名] on
chkconfig [服务名] off
service [服务名] start
service [服务名] status
service [服务名] stop
service [服务名] restart
# 自定义 Service
# 特点
- 可开机启动
- 进程守护(挂了自动重启)
# 创建
systemd 服务文件存放在 /etc/systemd/system
目录下,文件名以 .service
结尾
sudo nano /etc/systemd/system/my_service.service
# 配置
[Unit]
Description=My Custom Service # 服务的描述
After=network.target # 指定服务启动顺序,网络启动后再启动
[Service]
ExecStart=/path/to/your/command # 服务的启动命令,需填写完整路径
ExecStop=/path/to/your/stop_command # 停止服务的命令(可选)
Restart=on-failure # 指定重启策略,如 on-failure
[Install]
WantedBy=multi-user.target # 设定服务在多用户模式下启动
# Unit.After
指定服务启动顺序
network.target
: 在基础网络服务准备好后启动,但不确保网络连接。适用于只需要基本网络支持的服务。network-online.target
:在网络连接完全可用时启动,适合需要互联网访问或稳定网络的服务。multi-user.target
:在多用户模式启动(即非图形界面的默认模式),通常是绝大多数后台服务启动后。graphical.target
: 在图形界面可用后启动,适用于需要图形用户界面支持的服务。syslog.target
:在系统日志服务启动后启动,适用于依赖系统日志的服务。local-fs.target
:在本地文件系统挂载完成后启动,适用于依赖本地文件存储的服务。remote-fs.target
:在远程文件系统挂载完成后启动,适用于依赖远程文件系统(如 NFS)的服务。basic.target
: 这是大多数基础服务的依赖目标,表明基本系统设施已经加载完成。time-sync.target
:在系统时间同步后启动,适用于依赖准确时间的服务。dbus.service
:在 D-Bus 消息总线可用后启动,适用于使用 D-Bus 进行进程间通信的服务。
# Service.Restart
指定重启策略
no
:不自动重启服务。服务停止后不会尝试再次启动。always
:无论服务是正常退出还是异常退出,始终重新启动服务。适用于希望服务持续运行的情况。on-success
:当服务正常退出(返回退出代码为0
)时重启。用于处理服务在某些正常情况下退出并需要重新启动的场景。on-failure
:当服务因错误退出(退出代码不为0
,如崩溃或异常退出)时重启。适合希望在发生错误时重新尝试启动的服务。on-abnormal
:仅在服务因为信号(如SIGKILL
或SIGSEGV
)异常退出时重启,适合应对异常信号的情况。on-abort
:当服务因为系统或用户强制停止(接收到SIGABRT
)时重启。适用于检测并处理被意外终止的服务。on-watchdog
:当服务因 watchdog 超时被终止时重启,适合启用 Watchdog 功能来监控服务健康状态的情况。
# 参考
上次更新: 2024/11/16, 16:33:39