Python技术迷

9 个实用 shell 脚本,建议收藏!

哎我跟你说…我这会儿刚从我们楼下那个奶茶店上来,拿着杯半凉不热的乌龙,不知道为啥脑子突然想起前两天有兄弟问我:“东哥,有没有那种…嗯…日常能直接抄就能用的 shell 脚本?”我当时就乐了,我说这种东西吧,我手机备忘录里一堆,都是半夜排查线上故障的时候随手记的,你们要是用得上我就随便念两句。

我就边喝边想…嗯…我挑几个我自己常用的,九个吧,图个吉利。你们就当我在微信群语音里断断续续说话哈,别太较真语法。

我昨天晚上十一点多还在改需求的时候,小李问我磁盘满了咋查,我说我平时就敲这个,贼快:

du -sh * | sort -h

就那种…怎么说呢…一眼看出来哪个目录吃得最凶,基本都是 log 惹的祸。这个脚本我用得太多了,熟练得像吃饭。

然后前天在公司楼下抽烟的时候,另一个同事说某个服务不知道为啥 CPU 飙满,我说我一般都用这个脚本看下最吃 CPU 的进程…啊等下等下我电话响了——

……好了继续说,就是这个:

ps -eo pid,ppid,%cpu,%mem,cmd --sort=-%cpu | head

一看就知道是谁干的坏事…通常都是哪个 Java 进程在那疯狂 GC。

说到这里我突然想到,有次线上 MySQL 卡住,我怀疑连接打爆了,我就用这个脚本:

mysqladmin -uroot -p status

你们别笑,我就是经常忘记命令名,打到一半还得翻 zsh 历史,那个状态里一看到 Threads 200 多,我心态直接崩掉。

对了对了,有兄弟问我怎么快速找大文件,我每次都是用这个,特别粗暴:

find / -type f -size +500M 2>/dev/null

不过别随便扫整台机器,运维会打你,说影响 IO,我上次就被骂了。

我前段时间写那个自动备份脚本,里面有个上传服务器前压缩的命令,我给你们念下:

tar -czvf backup-$(date +%F).tar.gz /data/project

这个…基本谁都会,但我就是总记不住 -z -v 哪个放前面,反正抄就完事。

对了我想到一个更常用的,就是检查端口占用,看哪个服务又偷偷跑起来了,我天天都敲:

lsof -i:8080

你们知道吧,特别是开发环境,经常一个端口被谁霸占你都不知道,小王每次都问我“为啥我服务起不来”,我帮他一看就是他自己跑了两份。

我还经常看磁盘 IO,线上突然变慢的时候特别好用,我就敲:

iostat -x 1 5

这个输出谁第一次看都看不懂…我也是后来摸索的,反正 %util 90% 以上就说明磁盘被干爆了。

还有一个,自动把 log 删除的,我自己写过一个小脚本,每晚跑一次,不然磁盘就炸:

find /var/log/app -name "*.log" -mtime +7 -delete

你们懂的,线上日志一天比一天能写,我之前一个项目 log 写满 200GB,我被领导骂到怀疑人生。

最后一个…嗯…就是我自己最喜欢的小脚本,用来监控服务是否活着,不活就重启那种,但是我们运维说危险我就不贴全了,给你们最核心一段:

if ! pgrep -f "my-service.jar" > /dev/null; then
echo"$(date) service down" >> monitor.log
fi

这个…别随便放生产哈,出事我不负责。

哎我也不知道我说没说全,反正就是这些乱七八糟的小脚本,我平时真的是哪需要就粘哪。你们要是想让我整理成那种…嗯…更正式一点的文章,我明天再说吧,我现在奶茶喝完了想去补点水。

算了我先去接小孩放学,等会儿再聊……

-END-

我为大家打造了一份RPA教程,完全免费:songshuhezi.com/rpa.html

🔥虎哥私藏精品🔥

虎哥作为一名老码农,整理了全网最全《python高级架构师资料合集》,总量高达650GB