Linux 新手的第一课:用 df、du 和 journalctl 把磁盘和日志问题定位清楚
刚接触 Linux 服务器时,最让人心慌的往往不是命令记不住,而是磁盘突然满了、服务突然起不来,却不知道先看哪里。本文用三组最常用的命令,讲一个新手也能照着走的定位顺序:先看磁盘,再看占用,最后看日志。
一、先看磁盘还剩多少
df -h 是第一步。它按人类可读的方式列出每个挂载点的总容量、已用、可用和占用率。重点看根目录 / 和数据目录,比如 /var、/data。占用率到 90% 以上就要警惕,到 100% 时很多服务写不进日志、写不了临时文件,就会连锁报错。注意 tmpfs、docker overlay 这类挂载点也要看,容器日志胀满常常藏在这里。
还有一个容易忽略的点:df 显示可用空间为 0,不一定是文件真的占满了,也可能是已删除但仍被进程占用的文件。可以用 lsof | grep deleted 检查,重启对应服务或进程后空间才会释放。删除日志前,先确认它是不是还在被写。
二、再看是谁占了空间
du -sh /var/log/* 这类命令可以按目录汇总大小,帮你从大到小缩小范围。更常用的是 du -sh /home/* /var/*,先看一级目录,再一层层往下钻。配合 sort -h 排序,结果一目了然。生产环境上不要一上来就 du -sh /,全盘扫描又慢又吵,先从日志、备份、上传目录这几个嫌疑最大的地方开始。
找到大文件后先别急着删:先看它是什么服务的日志、能不能轮转。很多系统已经配了 logrotate,临时手动清理后,下次还会胀回来,根因可能是日志级别开得太细,或者某个任务在死循环写日志。
三、最后看日志说了什么
journalctl 是 systemd 系统的日志入口。journalctl -xe 可以看最近的错误,journalctl -u nginx --since '1 hour ago' 可以只看某个服务近一小时的记录。先找时间点:故障发生前后那几分钟,服务报了什么错,是连接失败、权限不足,还是磁盘写失败。把磁盘问题和日志问题串起来,结论往往就清楚了:磁盘满导致写日志失败,日志里就会出现 No space left on device;反过来,某个服务疯狂报错,也会反过来把磁盘写满。
新手常犯的错误是只盯着一条报错反复搜,而不看时间线。先把故障时间、磁盘占用曲线、日志报错时间对齐,再下结论,少走很多弯路。
四、一个可以复用的检查清单
磁盘满了怎么办,按这个顺序走:df -h 确认哪个挂载点满了;du 定位到具体目录和文件;journalctl 确认相关服务在故障时间点报了什么错;处理完大文件或日志后,再跑一次 df -h 确认空间确实释放;最后检查服务是否恢复,必要时重启受影响的服务。把这四步记下来,下次再遇到类似问题,就不用从零开始慌了。
- 点赞
- 收藏
- 关注作者
评论(0)