有一天,后台的一个定时脚本异常了,由于网络原因导致超时,而且每分钟一个进程。
ps aux | grep main.py
看了所有的进程,试图手动kill掉,可是几十个进程手动kill得累趴去。
root@ubuntu:/home/fage/Desktop/linux-perf-examples/nginx-high-cpu# ps aux | grep main.py
root 13110 0.0 0.3 32636 6664 pts/0 S 23:17 0:00 python main.py
root 13115 0.0 0.3 32636 6632 pts/0 S 23:17 0:00 python main.py
root 13116 0.0 0.3 32636 6572 pts/0 S 23:17 0:00 python main.py
root 13117 0.0 0.3 32636 6652 pts/0 S 23:17 0:00 python main.py
root 13118 0.0 0.3 32636 6592 pts/0 S 23:17 0:00 python main.py
root 13119 0.0 0.3 32636 6552 pts/0 S 23:17 0:00 python main.py
root 13120 0.0 0.3 32636 6484 pts/0 S 23:18 0:00 python main.py
root 13121 0.0 0.3 32636 6696 pts/0 S 23:18 0:00 python main.py
root 13122 0.0 0.3 32636 6424 pts/0 S 23:18 0:00 python main.py
root 13123 0.0 0.3 32636 6480 pts/0 S 23:18 0:00 python main.py
root 13124 0.0 0.3 32636 6584 pts/0 S 23:18 0:00 python main.py
root 13125 0.0 0.3 32636 6592 pts/0 S 23:18 0:00 python main.py
root 13126 0.0 0.3 32636 6520 pts/0 S 23:18 0:00 python main.py
这时我们的主角就要登场了
ps axu | grep main.py | awk '{print $2;}' | xargs kill -9
xargs 是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。
xargs 默认的命令是 echo,这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。如:
root@ubuntu:/home/fage/Desktop# cat test.txt
lkjafd
askfj
asdfj asdj asjf
asdfj asj sldfj
adfklj asdjklasjf asfj
root@ubuntu:/home/fage/Desktop# cat test.txt | xargs
lkjafd askfj asdfj asdj asjf asdfj asj sldfj adfklj asdjklasjf asfj