huponexit 用於非登入 shell

huponexit 用於非登入 shell

這是後續登出時後台程序是否會收到 SIGHUP 訊號?

似乎huponexit只適用於登入 shell。如何獲得非登入 shell 的行為,例如在終端機視窗中啟動的 shell?

HUP從進程啟動的地方發送到 bash 按預期工作,但huponexit沒有。

答案1

您可以聲明自己的程式碼在 shell 退出時運行。

trap 'kill -HUP $(jobs -lp) 2>/dev/null || true' EXIT

(我之前的建議trap 'kill -HUP $$' EXIT在 bash 4.2 中不起作用,因為如果我正確理解原始程式碼,bash 會在已經處理退出條件時跳過其正常清理的一部分,包括 HUP 重新發送。)

答案2

trap 'kill -HUP -$$' exit

我似乎無法在上面添加評論。加上前綴負號來表示進程組。我想這會掛掉全部由 shell 產生的子進程包括孫子進程、曾孫進程等。

相關內容