向进程发送多个终止信号

向进程发送多个终止信号

假设我运行一个.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,但您可以根据自己的喜好使用不同的信号。但请注意,某些信号可能会停止目标进程,因此它之后不会收到任何信号。

相关内容