Linux systemd 服务管理:启动、重启与故障排查
前言
在 Linux 云服务器上部署网站、代理程序或其他后台服务时,经常需要让程序开机自动启动,并在出现问题时查看运行状态。
Ubuntu、Debian 等常见发行版通常使用 systemd 管理系统服务。相比直接在终端里运行程序,systemd 可以统一管理服务的启动、停止、依赖关系和日志。
下面整理几个常用操作,以及服务启动失败时的排查方法。
一、查看服务运行状态
以 Nginx 为例:
systemctl status nginx
重点关注 Active 字段:
- active (running):服务正在运行。
- inactive (dead):服务当前未运行。
- failed:服务启动或运行过程中发生了错误。
需要注意,部分一次性执行任务的服务可能显示 active (exited),不能简单地把它当作异常。
如果只需要查看是否正在运行,可以使用:
systemctl is-active nginx
二、启动、停止与重启
常用命令如下:
sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx
三条命令分别用于启动、停止和重启服务。
有些服务还支持重新加载配置:
sudo systemctl reload nginx
reload 通常用于让程序重新读取配置,而 restart 会重新启动服务进程。
不过,并非所有服务都支持 reload,具体行为取决于对应的服务配置和程序本身。
三、设置开机自启
启用开机自启:
sudo systemctl enable nginx
取消开机自启:
sudo systemctl disable nginx
查看是否启用:
systemctl is-enabled nginx
这里有一个容易混淆的地方:
enable 不代表立即启动,disable 也不代表立即停止。
如果需要同时启用开机自启并立即启动,可以使用:
sudo systemctl enable --now nginx
四、查看服务日志
服务启动失败时,我更建议先看日志,而不是直接重新安装程序。
查看最近 50 条日志:
journalctl -u nginx -n 50 --no-pager
实时查看新日志:
journalctl -u nginx -f
如果想检查本次系统启动以来的日志,可以执行:
journalctl -b -u nginx
常见错误包括配置文件语法错误、端口被占用、文件权限不足,以及程序依赖的文件或目录不存在。
systemd 日志主要用于查看服务运行记录,程序如果另行写入日志文件,也需要结合应用自身的日志排查。
五、修改服务配置后为什么没生效?
systemd 服务一般通过 unit 文件定义,常见的扩展名是 .service。
可以使用下面的命令查看服务配置:
systemctl cat nginx
如果修改了 systemd 的 unit 文件或者 drop-in 配置,需要重新加载管理器配置:
sudo systemctl daemon-reload
然后根据实际情况重启对应服务:
sudo systemctl restart nginx
需要注意,daemon-reload 只会让 systemd 重新读取相关配置,不会自动重启服务。
如果修改的是 Nginx 自身的 nginx.conf,通常应先进行配置检查:
sudo nginx -t
检查通过后,再决定 reload 或 restart,不需要因为修改应用配置就一律执行 daemon-reload。
六、排查服务启动失败
遇到服务无法启动,可以按顺序检查:
第一步,查看状态:
systemctl status nginx
第二步,查看详细日志:
journalctl -u nginx -n 100 --no-pager
第三步,检查服务定义:
systemctl cat nginx
第四步,如果怀疑端口冲突,可以查看监听情况:
sudo ss -lntp
确认具体报错后再修改配置。
对于正在提供业务的服务器,不建议反复执行重启命令来碰运气,尤其是涉及数据库等重要服务时。
七、总结
systemd 服务管理最常用的命令其实不多:
- status:查看状态。
- start、stop、restart:控制服务。
- enable、disable:管理开机自启。
- journalctl:查看服务日志。
- daemon-reload:重新加载 systemd 管理器配置。
日常维护中,重点是区分服务是否正在运行、是否设置了开机自启,以及配置修改后究竟需要 reload 还是 restart。
养成先查看状态和日志、再进行操作的习惯,能减少很多不必要的排障时间。
- 点赞
- 收藏
- 关注作者
评论(0)