使用bash和regex在一行中查找并终止进程我经常需要在编程期间杀死进程。我现在这样做的方式是:[~]$ ps aux | grep 'python csp_build.py'user 5124 1.0 0.3 214588 13852 pts/4 Sl+ 11:19 0:00 python csp_build.py
user 5373 0.0 0.0 8096 960 pts/6 S+ 11:20 0:00 grep python csp_build.py[~]$ kill 5124如何自动提取进程ID并在同一行中终止它?像这样:[~]$ ps aux | grep 'python csp_build.py' | kill <regex that returns the pid>
3 回答
慕侠2389804
TA贡献1719条经验 获得超6个赞
一个班轮:
ps aux | grep -i csp_build | awk '{print $2}' | xargs sudo kill -9
打印第2栏:
awk '{print $2}'
sudo
是可选的运行
kill -9 5124
,kill -9 5373
等等(杀-15更优美,但稍慢)
奖金:
我还有.bash_profile中定义的2个快捷方式函数(〜/ .bash_profile用于osx,你必须看看哪些适用于你的* nix机器)。
p 关键字
列出包含关键字的所有P rocesses
使用如:
p csp_build
,p python
等
bash_profile代码:
# FIND PROCESSfunction p(){ ps aux | grep -i $1 | grep -v grep}
ka 关键字
ķ顽疾一个具有此关键字LL工艺
使用如:
ka csp_build
,ka python
等可选的死亡水平如:
ka csp_build 15
,ka python 9
bash_profile代码:
# KILL ALLfunction ka(){ cnt=$( p $1 | wc -l) # total count of processes found klevel=${2:-15} # kill level, defaults to 15 if argument 2 is empty echo -e "\nSearching for '$1' -- Found" $cnt "Running Processes .. " p $1 echo -e '\nTerminating' $cnt 'processes .. ' ps aux | grep -i $1 | grep -v grep | awk '{print $2}' | xargs sudo kill -klevel echo -e "Done!\n" echo "Running search again:" p "$1" echo -e "\n"}
- 3 回答
- 0 关注
- 530 浏览
添加回答
举报
0/150
提交
取消