在Mac下调试,启动server后想关闭,如果仅仅是Ctrl + Z
或者Ctrl + C
,在不退出当前shell的情况下,进程其实还是一直存在的,每次手动查进程号再kill掉有点麻烦,于是写了个简单的脚本,每次批量的全部杀掉。
#! /bin/sh
if [ $# == 0 ];then
echo "缺少程序名称"
exit 2
fi
processName=$1
pidArr=$(ps c | grep "$processName" | grep -v grep |awk '{print $1}')
for id in $pidArr
do
kill -9 $id
echo "killed $id"
done
$#
表示返回所有脚本参数的个数 如果不带参数,为了避免杀掉不该杀掉的进程,直接退出脚本。
$1
拿到需要杀掉进程的名称
ps c
列出程序时,显示每个程序真正的指令名称,这里没有用常用的ps au
,因为这样会把执行这条脚本的进程号也带进去
grep -v grep
使用grep过滤时往往会多查出来一行如下,这条语句实现过滤(其实 ps c已经不会显示grep的输出了)
awk
实现过滤,linux下awk特别强大,这里不再详细记录
也可简单的一行实现
ps a | grep node | grep -v grep | awk '{print $1}' | xargs kill -9
网友评论