假设我运行一个.sh
进程。现在我打开一个新的终端选项卡,我想向它发送信号,为此,我只需使用 kill:
kill -*signal number* *pid*
对吧?但是我想同时发送 13 个信号,我该怎么做?
答案1
您无法一次发送 13 个信号,而必须循环发送一些信号列表。以下脚本将执行此操作:
#!/usr/bin/env bash
pid=${1-""}
if [ -z "$pid" ]; then
echo "a pid must be given";
exit 1;
fi
siglist=(
SIGSTOP SIGCONT SIGSTOP SIGCONT SIGSTOP SIGCONT
SIGSTOP SIGCONT SIGSTOP SIGCONT SIGSTOP SIGCONT
SIGTERM
)
for sig in "${siglist[@]}"; do
kill -$sig $pid;
done
exit 0;
将脚本保存为send-sigs.sh
,应用chmod +x send-sigs.sh
,然后像这样调用它:
./send-sigs.sh 1234
我使用 STOP 和 CONT 信号交替冻结和解冻给定的 pid,但您可以根据自己的喜好使用不同的信号。但请注意,某些信号可能会停止目标进程,因此它之后不会收到任何信号。