为了账号安全,请及时绑定邮箱和手机立即绑定

使用bash和regex在一行中查找并终止进程

使用bash和regex在一行中查找并终止进程

LEATH 2019-07-25 10:52:15
使用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 5124kill -9 5373等等(杀-15更优美,但稍慢)


奖金:

我还有.bash_profile中定义的2个快捷方式函数(〜/ .bash_profile用于osx,你必须看看哪些适用于你的* nix机器)。

  1. 关键字

    • 列出包含关键字的所有P rocesses

    • 使用如:p csp_buildp python

bash_profile代码:

# FIND PROCESSfunction p(){
        ps aux | grep -i $1 | grep -v grep}
  1. ka 关键字

    • ķ顽疾一个具有此关键字LL工艺

    • 使用如:ka csp_buildka python

    • 可选的死亡水平如:ka csp_build 15ka 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"}


查看完整回答
反对 回复 2019-07-25
  • 3 回答
  • 0 关注
  • 530 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信