我的 bash 腳本n_commands.sh名為
command1 &
command2 &
..........
commandn &
當我bash n_commands.sh在終端上運行時,所有命令都在后臺運行。
當我嘗試停止所有正在使用資源的 n 行程時,我需要分別殺死每個行程。有什么方法可以立即停止由于該命令而正在運行的所有后臺行程,而bash n_commands.sh無需手動殺死它們?
uj5u.com熱心網友回復:
啟動所有后臺行程后,讓主腳本等待它們完成。然后你可以殺死主腳本的整個行程組,所有的子行程也會被殺死。
command1 &
command2 &
..........
commandn &
wait
在你開始這個之后,如果你輸入Control-c它會殺死所有的命令。
uj5u.com熱心網友回復:
您可以使用pkill殺死當前行程的所有子行程。
trap "pkill -P $$" SIGINT #intercept ^C
#if foreground ends before background jobs, the output below is
#an argument for a pkill -P arg comand.
echo $$
command1 &
command2 &
..........
commandn &
...
pkill -P $p #if you need to end bg jobs on exit.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/420377.html
標籤:
