Linux入门——用 systemctl 与 journalctl 快速定位服务启动失败
服务起不来时,最忌讳上来就反复重启。重启会冲掉现场,还可能把一条原本很清楚的报错埋在重复日志里。更稳妥的顺序是:先看状态,再看日志,再看配置与端口占用。状态告诉你它停在哪一步,日志告诉你它为什么停,配置和端口告诉你它下次能不能正常起来。
第一步,先看状态。systemctl status 会把当前状态、最近日志片段和主进程信息放在一起:先确认它是 failed 还是 inactive,再看 Active 后面的时间点、退出码和 Main PID。failed 说明它尝试启动过但失败了,inactive 则可能是从未启动,或者被 stop 后没有再拉起来,两者的排查方向并不相同。
以 nginx 为例,把服务名换成你自己的服务即可:systemctl status nginx --no-pager。加上 --no-pager 是为了让输出一次显示完,不进入分页器,方便复制关键行。如果状态里已经出现配置文件路径、权限不足或找不到可执行文件等提示,这一步就已经足够定位方向,不必急着翻全部日志。
第二步,再看日志。状态里只有最近几行,往往不够判断原因,这时用 journalctl 只看这一个服务的本次启动日志:journalctl -u nginx --no-pager -n 100。-u 指定服务,-n 100 只看最后 100 行,避免被系统其他日志淹没。重点看时间戳最接近失败时刻的那几行,常见的关键词有 failed、error、permission denied、no such file、address already in use,把整句报错抄下来再去搜索,比只记一个词更有效。
第三步,再看配置与端口占用。很多启动失败来自改错的配置文件或端口已被占用:先确认配置文件语法有没有改错,再确认监听端口是否已被其他进程占用。改完配置后不要只重启一次就下结论,先用 status 确认它真的进入 active 状态,再用 journalctl 看一次新日志,确认没有新的报错。养成先状态、再日志、再配置与端口的顺序,下次服务起不来时,十分钟内一般就能找到方向。
- 点赞
- 收藏
- 关注作者
评论(0)