如何清理Linux中的日志文件

说实话,我以前管Linux日志这事儿,真是踩了不少坑。
要我说啊,这四种方法各有各的妙用,但用不好照样炸毛。

就拿logrotate来说吧,这玩意儿绝对是懒人福音。
我上次给服务器装完系统,直接在/etc/logrotate.conf里配了条规则,把所有.log文件每天轮转,保留7 天,过期就压缩。
结果呢?第二天发现某个应用日志没了,一查才知道是配置里漏掉了。
所以说啊,用logrotate一定要细心,特别是create参数,指定了文件权限和属主,不然启动服务时会出乱子。

手动删除这招得看情况。
我有个客户用OpenStack,系统日志直接填满了5 00G分区。
当时系统管理员急得团团转,最后我直接用sudo >> /var/log/nova.log清空了内容。
不过得记住,清完马上得重启服务,不然日志系统会卡死。
特别是像syslog这种核心日志,随便清都可能让系统报错。

systemd的journalctl我刚开始用也懵。
有次服务器突然蓝屏,日志查了半天才发现是个拼写错误。
后来发现用--output=journalctl直接把日志转成文本格式,再用grep过滤,效率高多了。
但要注意,vacuum-size参数要慎用,我见过把用户家目录也清空的案例,当时真是哭笑不得。

最下饭的是直接删文件。
有次我顺手删了/var/log/yum.log,结果半夜系统升级装不上包。
所以说啊,像auth.log、secure.log这类日志,绝对不能随便动。
我有个习惯,每次清理前都用tar打包,备份到另一个分区。
虽然占点空间,但省得后悔。

要说总结吧,其实用logrotate的次数最多。
这玩意儿就像自动垃圾分类机,你只需要调好参数,它就能按周月自动处理。
但要说最快速,还是journalctl,特别是配合-d参数,清理systemd日志嗖嗖快。
关键是得知道每个服务在哪儿放日志,比如Nginx日志在/var/log/nginx/access.log,Apache日志在/var/log/httpd/access_log,这些得记心里。

Linux清理日志文件的方法是什么

logrotate自动管理日志,别手动全删。
3 0天前日志,find命令干掉。
systemd日志,journalctl轻松清。
日志轮转,rsyslog和syslog-ng来。
配置文件,/etc/logrotate.conf看。
你自己掂量。

如何使用Linux命令行清理无用文件

说白了,Linux清理无用文件就这几招,但每步都得留神——特别是命令行操作,一不小心就玩完。

先说最重要的,清理/tmp目录得先确认没程序在用。
去年我们跑那个项目,有个同学直接rm -rf /tmp/,结果编译工具卡死半天,因为编译产生的临时文件被删了。
建议用lsof /tmp看看谁在抢文件,或者直接重启系统后执行最保险。
另外一点,清理软件包缓存要看发行版,APT用apt-get clean留缓存,autoclean才真清空,YUM/DNF的yum clean all是把所有东西都倒掉。

还有个细节挺关键的,日志文件千万别手动删,logrotate是专门干这活的。
我们上次用truncate -s 0 /var/log/syslog清空系统日志,结果忘了备份一条关键错误记录,花了俩小时才找回来。
直接用logrotate -f /etc/logrotate.conf触发轮换更稳妥,还能自定义压缩规则。

我一开始也以为find删大文件最暴力,后来发现不预览直接干特别吓人。
有个同学用find / -type f -size +1 00M -exec rm -rf {} ;,结果把某个开发环境的临时代码库给整没了。
先用find / -type f -size +1 00M -ls看看清单,确认无误再执行。

删除旧内核尤其要小心,别把当前用的版本给删了。
之前有师傅用yum remove kernel-3 .1 0.0,结果系统直接蓝屏,因为uname -r没确认。
建议保留当前版本和最新备用版本,多余的用dpkg --purge或rpm -e干掉。

等等,还有个事,要是嫌命令行绕,BleachBit挺好用。
装了之后勾勾选选就能清缓存、临时文件,比Windows的CCleaner还简单。
不过别指望它啥都会,有些深层缓存还得自己用find搞定。

建议先备份再动手,特别是用rm -rf的时候。
磁盘空间是省出来了,但要是删错文件,哭都来不及。