Скажите, что я выполняю a .sh
процесс. И теперь я открываю новую терминальную вкладку, и я хочу отправить сигналы в нее для этого, я просто использую, уничтожьте:
kill -*signal number* *pid*
правильно? Но я хочу отправить 13 сигналов одновременно, как я могу сделать это?
Вы не можете отправить 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
Я использовал ОСТАНОВКУ сигналов и ПРОДОЛЖЕНИЕ СЛЕДУЕТ поочередно замораживаться и таять данный pid, но можно использовать различные сигналы для симпатии. Но знайте, что некоторые сигналы могли бы остановить Ваш целевой процесс, таким образом, он не получит сигналов впоследствии.