У меня есть следующий скрипт:
#!/bin/bash
echo "We are $$"
trap "echo HUP" SIGHUP
cat # wait indefinitely
Когда я отправляю SIGHUP
(использую kill -HUP pid
) ничего не происходит.
Если я немного изменю сценарий:
#!/bin/bash
echo "We are $$"
trap "kill -- -$BASHPID" EXIT # add this
trap "echo HUP" SIGHUP
cat # wait indefinitely
... тогда скрипт работает echo HUP
правильно при выходе (когда я нажимаю Ctrl + C):
roger@roger-pc:~ $ ./hupper.sh
We are 6233
^CHUP
Что происходит? Как я должен отправить сигнал (это не обязательно должно быть SIGHUP
) к этому сценарию?
while true; do read; done
в конце, иначе ввод текста заставляет его также выйти, и я хочу выйти из него по Ctrl + C.
cat
процесс завершится . Попробуйте свой оригинальный сценарий и нажмите,Ctrl+D
чтобы завершитьcat
процесс. Покаcat
процесс находится на переднем плане, наHUP
сигнал не воздействуют. Попробуйте еще раз сcat
заменой наread
(встроенная оболочка).