我经常需要在编程期间终止一个进程。

我现在的做法是:

[~]$ 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>

当前回答

我的任务是杀死所有与regexp匹配的放在特定目录中的内容(在selenium测试之后,并不是所有内容都停止了)。这招对我很管用:

for i in `ps aux | egrep "firefox|chrome|selenium|opera"|grep "/home/dir1/dir2"|awk '{print $2}'|uniq`; do kill $i; done

其他回答

我开始使用这样的东西:

kill $(pgrep 'python csp_build.py')

你只能使用pkill '^python*'来杀死正则表达式进程。

如果你想知道你要杀死什么或在杀死之前找到什么,只需使用pgrep -l '^python*',其中-l输出进程的名称。如果你不想用 Pkill,用just:

pgrep '^python*' |Xargs Kill

ps不需要用户开关。

kill `ps ax | grep 'python csp_build.py' | awk '{print $1}'`

我的任务是杀死所有与regexp匹配的放在特定目录中的内容(在selenium测试之后,并不是所有内容都停止了)。这招对我很管用:

for i in `ps aux | egrep "firefox|chrome|selenium|opera"|grep "/home/dir1/dir2"|awk '{print $2}'|uniq`; do kill $i; done

解决方案是用精确的模式过滤进程,解析pid,并构造一个参数列表来执行kill进程:

ps -ef  | grep -e <serviceNameA> -e <serviceNameB> -e <serviceNameC> |
awk '{print $2}' | xargs sudo kill -9

文件说明:

Ps实用程序显示标题行,后面的行包含 关于拥有控制终端的所有进程的信息。

-e显示其他用户的进程信息

-f显示uid、pid、父pid、最近CPU使用率、进程启动

grep实用程序搜索任何给定的输入文件,选择行 -e pattern,——regexp=pattern 指定搜索输入期间使用的模式:输入 如果匹配任何指定的模式,则选择该行。 当使用多个-e选项时,此选项最有用 指定多个模式,或者当一个模式以破折号开始时 (“-”)。

Xargs -构造参数列表并执行实用程序

终止—终止进程或给进程发信号

9号信号- KILL(不可捕捉,不可忽略的杀死)

例子:

ps -ef  | grep -e node -e loggerUploadService.sh -e applicationService.js |
awk '{print $2}' | xargs sudo kill -9