systemd 管理的服务启动失败,systemctl status 只给一行红字,详细信息在 journal 里。
常用命令
# 看某个服务的全部日志
journalctl -u nginx.service
# 看最近 100 行并持续输出
journalctl -u php-fpm.service -n 100 -f
# 看本次启动以来的日志
journalctl -u mysql.service -b
# 按时间范围
journalctl -u myservice --since "2020-12-03 10:00" --until "2020-12-03 11:00"
# 只看错误级别
journalctl -u myservice -p err
实战:PHP-FPM 起不来
systemctl status php-fpm
# Active: failed (Result: exit-code)
journalctl -u php-fpm -n 50 --no-pager
日志里看到:
ERROR: unable to bind listening socket for address '127.0.0.1:9000': Address already in use
端口被占了。查一下:
ss -lntp | grep 9000
# 发现有个旧的 php-fpm 进程没退干净
kill -9
systemctl start php-fpm
日志太大怎么办
# 限制 journal 最大占用
journalctl --vacuum-size=500M
# 或按时间清理
journalctl --vacuum-time=7d
改 /etc/systemd/journald.conf 里的 SystemMaxUse 可以永久限制。
systemd 服务出问题,第一反应就是 journalctl -u xxx -n 100 --no-pager,比翻各种日志文件快。

Comments 2 条评论
端口被占这个太常见了
比翻日志文件快多了