假设我想终止所有包含单词 amarok 的进程。我可以打印出我想要执行的命令。但我如何真正让 shell 执行它们呢?即。
ps aux | grep -ie amarok | awk '{print "kill -9 " $2}'
Output:
kill -9 3052
kill -9 3071
kill -9 3076
kill -9 3077
kill -9 3079
kill -9 3080
kill -9 3082
kill -9 3083
kill -9 3084
kill -9 3085
kill -9 3086
kill -9 3087
kill -9 3088
kill -9 3089
kill -9 4031
最佳答案
来自man 1 pkill
-f The pattern is normally only matched against the process name.
When -f is set, the full command line is used.
这意味着,例如,如果我们在 ps aux
中看到这些行:
apache 24268 0.0 2.6 388152 27116 ? S Jun13 0:10 /usr/sbin/httpd
apache 24272 0.0 2.6 387944 27104 ? S Jun13 0:09 /usr/sbin/httpd
apache 24319 0.0 2.6 387884 27316 ? S Jun15 0:04 /usr/sbin/httpd
我们可以使用 pkill -f
选项杀死它们:
pkill -f httpd
关于shell - 如何杀死所有匹配名称的进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6381229/