我正在尝试将 SIGINT 信号发送到多个进程,我认为这是正确的:
kill -2 <pid1> <pid2> ... <pid3>
但我无法确认...
答案1
是的,这是对的。手册页证实了这一点。跑步man kill
说道:
SYNOPSIS
kill [options] <pid> [...]
...
OPTIONS
<pid> [...]
Send signal to every <pid> listed.
您的 shell 可能提供其自己的内部版本kill
,该版本将优先,但它应该与所描述的接口兼容。您也许可以通过运行找到更多信息help kill
。
我会使用kill -INT
代替kill -2
,因为名称到数字的映射可能因 UNIX 变体而异。
答案2
这很容易用程序进行测试,该程序生成一堆自身的副本,对信号做出反应,并等待信号:
% perl -E '$SIG{INT}=sub {say "ouch"};fork();fork();say $$;sleep 999'
17344
17346
17345
17347
ouch
ouch
ouch
ouch
黑泽明擦拭到另一个终端
% kill -2 17344 17346 17345 17347
显然是跑了。
答案3
怎么样:
for i in <pid1> <pid2> <pid3>; do kill -2 $i; done
或者:
for i in {17344..17347}; do kill -2 $i; done