Linux 服务运维随笔

2026-08-12 · Linux

记一些 systemd 与日常排查的习惯用法,都是自己实际用到过的,谈不上系统, 但重复率比较高。

服务状态不能只看 active

systemctl is-active 返回 active 并不代表服务真的在正常工作。 比较常见的情况是主进程起来了,但 ExecStartPost 里的脚本失败, 或者服务在反复重启。看清楚状态要用:

systemctl status <服务名>
journalctl -u <服务名> -n 50 --no-pager

日志里如果看到 Scheduled restart job, restart counter is at N, N 很大就说明它一直在崩溃重启。

确认进程真的在监听

启动脚本执行成功不等于端口起来了。判断服务是否真的可用,看监听状态更直接:

ss -tlnp | grep <端口>

我吃过一次亏:以为某个测试服务起来了,实际上启动命令在管道里被跳过, 后续基于它做的一系列对比测试全部无效。所以现在的习惯是,起完服务先确认监听, 再确认本机自连通,最后才测外部访问。

配置校验先于重启

很多服务提供配置检查子命令,改完先校验再重启,能省掉一次故障:

nginx -t
caddy validate --config /etc/caddy/Caddyfile

但要注意,静态校验通过不代表运行时没问题。配置语法对、字段合法,运行时依然可能 因为端口冲突、权限不足、依赖服务未就绪而失败。所以重启之后还是要看日志。

改动前留退路

动线上配置之前先备份,这个习惯救过我几次。简单做法:

cp -a /etc/some/config.conf /root/backup-$(date +%Y%m%d-%H%M%S).conf

如果改的是网络相关配置,还有个风险是改完自己就连不上了。这种情况可以先布一个 定时恢复的任务,确认没问题再取消它,比事后找 KVM 控制台方便得多。

磁盘与日志

journal 日志默认可能占用不少空间,服务器磁盘吃紧时可以限制一下:

journalctl --vacuum-time=14d
journalctl --disk-usage
← 返回文章列表