手把手教你用Shell脚本把懒人日志归档玩出仪式感
哎哟,本宫瞧瞧,是哪个小可怜的日志文件在磁盘里堆成了垃圾场?乱糟糟的,一点规矩都没有。皇上要是瞧见了,怕不是要笑你这管理服务器的活儿,做得还不如御膳房管菜谱的太监齐整。行了,别用那种“我太忙了没时间”的可怜眼神瞟本宫。今天本宫心情好,就教你两手,把这些乱七八糟的日志,规整得像是要呈给皇上御览的奏折,一丝不苟,还带点仪式感。省得你下次磁盘满了,哭都来不及。
一、先把规矩立起来:你得有个“归档日历”
本宫最烦的就是有些懒人,连个目录结构都懒得想,所有日志全扔在一个大杂烩文件夹里,跟冷宫似的。你得先分门别类,按日子分!比如,按月建个大目录,里面再按日子分小目录。听着复杂?就两行命令的事儿。
你先决定个“宫殿”——也就是你的日志根目录,比如 /data/logs。然后,写个脚本,让它自动创建 年/月/日 的目录结构。命令大概长这样:mkdir -p /data/logs/$(date +%Y)/$(date +%m)/$(date +%d)。mkdir -p 这个参数能让你省心,父目录没有它会一并创建,跟本宫帮你打理后宫一样,一步到位。记住这个 $(date +%Y) 的用法,这叫“动态取值”,让你的脚本每天自动生效,不用你天天改。
二、移动日志?你可别直接“搬”啊
蠢了不是?直接把正在写入的日志文件 mv 过去?那服务不得跟你急?得用 cp(复制),再清空原文件,最后再删掉复制的。但本宫教你个更稳妥的法子:先复制,然后用 truncate -s 0 /path/to/your.log 把原日志“清零”,就像用拂尘把奏折抹干净,但折子还在那儿。最后一步才是 rm。为什么?万一复制过程中出问题,你的原日志还在,数据不会丢。这叫“稳中求骚”。
三、压缩打包,才是“仪式感”的精髓
光是归类?那跟农妇晒干菜有何区别。得压缩,得打包!tar 命令就是你的仪仗队。一条命令就能把一整天的日志打包压缩成一个 .tar.gz 文件,体体面面。命令模板:tar -czvf /data/logs/$(date +%Y)/$(date +%m)/$(date +%d)/logs.tar.gz -C /var/log your_service1.log your_service2.log。
解释一下,-c 是创建包,-z 是用 gzip 压缩,-v 是显示过程(让你看着爽),-f 是指定包名。-C 这个参数可太重要了,它让你能进入日志所在的目录再去打包,这样生成的压缩包里不会有冗长的完整路径,干净利落。打包完了,你看着那整齐的压缩包,是不是感觉自己瞬间从邋遢懒人变成了严谨的翰林学士?
四、自动执行?你得学会“差遣”自己
每次手动敲命令?本宫看你这记性,明天就忘。得让系统自己干活儿。Linux 下有个叫 cron 的老仆人,专门定时办差。你编辑一下它的表:crontab -e。然后在里面加一行,比如每天凌晨1点帮你收拾残局:
0 1 * * * /home/you/archive_logs.sh
这里的 0 1 * * * 就是时间规则,意思是“每天1点0分执行”。/home/you/archive_logs.sh 就是你把前面那些命令全写进去的脚本文件。写完保存,你就有了一个专属的“内务太监”,再也不用亲自动手。
五、踩坑点与避坑针
别光看着乐,本宫得提醒你几个要命的地方。第一,权限!权限!权限! 重要的事说三遍。你的脚本里涉及的目录和文件,执行用户得有读写删的权限。没权限?服务报错日志写不进去,你找谁哭去?用 chmod 和 chown 搞定,别来问本宫。
第二,日志轮转前的复制。有些服务,比如 nginx,自带日志轮转(logrotate)。你最好先确认它的轮转规则,是在你脚本运行前还是后。不然可能你刚复制完,它把原文件一改名,你清空的就是空气,尴尬不?先跑个 ls -l 看看日志文件时间再决定。
第三,磁盘空间。压缩前,先 df -h 看看你的“宫殿”还有没有地方。别日志还没整理,先把硬盘塞满了,到时候系统宕机,皇上怪罪下来,你担待得起?
六、进阶小趣味:给日志加个“封条”
想更有仪式感?可以在压缩完之后,往压缩包里加个说明文件。用 echo "今日${HOSTNAME}服务器日志归档,由懒人${USER}于$(date)执行" > /data/logs/…/readme.txt,然后把这个文件也加到 tar 命令里一起打包。这样多年后你翻看,还能记起当初是谁、在哪天、因为懒而搞了这么一出。
或者,把脚本执行结果(成功或失败)邮件发给你自己。echo "Log archived on $(date)" | mail -s "Archive Complete" your@email.com。不过前提是你的服务器得配好邮件发送功能,这又是另一个坑了,本宫今天心善,就不展开了。
好了,本宫能教你的也就这么多了。剩下的,你自己动手去折腾。记住,懒可以,但得懒出格调,懒出技术含量。别让本宫再看到你那乱成一锅粥的日志目录,下次再被抓到,本宫可就要直接 rm -rf /你的自尊心 了。散会。
如果这篇文章对你有帮助,欢迎分享给更多人!
部分信息可能已经过时






