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
← 返回文章列表