linux/solaris 使用一个命令终止多个进程

linux/solaris 使用一个命令终止多个进程

是否可以用一个命令杀死所有查找进程?

我不想像、等那样杀死每个进程kill -9 25295kill -9 11994相反,我想要一种简单的方法或命令来杀死所有找到的进程(我的目标是在 Linux 和 Solaris 机器上执行此操作)。

$ ps -ef | grep find 
root 25295 25290   0 08:59:59 pts/1 0:01 find /etc -type f -exec grep -l 100.106.23.152 {} ; -print
root 11994 26144   0 09:04:18 pts/1 0:00 find /etc -type f -exec grep -l 100.106.23.153 {} ; -print
root 25366 25356   0 08:59:59 pts/1 0:01 find /etc -type f -exec grep -l 100.106.23.154 {} ; -print
root 26703 26658   0 09:00:05 pts/1 0:01 find /etc -type f -exec grep -l 100.106.23.155 {} ; -print

答案1

这将在 Linux 和 Solaris 上起作用,并且精确地完成您的需要:

pgrep -f 'find /etc'     # verify the listing before proceeding
pkill -9 -f 'find /etc'

在你的情况下,请避免killall。如果你在 Linux 上使用它,迟早你会误认为 ssh 会话在 Solaris 上运行它,从而造成不必要的风险。

pgrep/pkill选项-f表示匹配整个命令行。如果您需要匹配程序或脚本的路径(/var/tmp/test.sh),则如果您使用整个路径运行它,则此方法有效。准确地说,您只需要转义,因此.您需要

pkill -9 -f '/var/tmp/test\.sh'

如果您运行了相同的程序,则./test.sh需要将其终止。请参阅-f中的选项ps

答案2

使用( )pkill find的变体。在 Linux 上,也可以使用。pgrepprocess grepkillall find

答案3

是的,你可以使用 killall 命令

killall find 

相关内容