我有一个 bash 脚本在后台运行并想发送SIGRTMAX-9向它发出信号。
SIGRTMAX-* 情况
为什么kill
命令无法识别SIGRTMAX-9信号?
╭─ /tmp/tmp.KHFbrCQhOB
╰─ kill -SIGRTMAX-9 $(pgrep bash)
kill: unknown signal: SIGRTMAX-9
kill: type kill -l for a list of signals
如果我使用以下命令运行kill命令sudo
:
╭─ /tmp/tmp.KHFbrCQhOB
╰─ sudo kill -SIGRTMAX-9 $(pgrep bash)
kill: invalid argument S
Usage:
kill [options] <pid> [...]
...
For more details see kill(1).
SIGRTMIN+* 情况
如果我发送SIGRTMIN+3它仅适用于sudo
:
╭─ /tmp/tmp.KHFbrCQhOB
╰─ kill -SIGRTMIN+3 $(pgrep bash)
kill: unknown signal: SIGRTMIN+3
kill: type kill -l for a list of signals
╭─ /tmp/tmp.KHFbrCQhOB
╰─ sudo kill -SIGRTMIN+3 $(pgrep bash)
╭─ /tmp/tmp.KHFbrCQhOB
╰─ echo $?
0
答案1
我解决了这个问题,很简单,只需将which kill
其打印出来即可kill: shell built-in command
;事情是我在里面zsh 会话,并且它有一个内置kill
命令,我修复了它调用/bin/kill -SIGRTMAX-9 $(pgrep bash)
而不是仅仅调用kill -SIGRTMAX-9 $(pgrep bash)
.