У мене є такий сценарій:
#!/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
(вбудована оболонка).