Title here
Summary here
喺默認情況下,Bash Shell 會忽略 SIGQUIT(3)
同 SIGTERM(15)
信號,
所以執行下面嘅命令唔會有任何反應($$
係當前 Shell 嘅進程 ID)。
kill -3 $$
kill -15 $$
如果收到 SIGHUP(1)
信號,Bash Shell 會退出,但喺退出之前,
佢會把 SIGHUP
信號傳畀所有由該 Shell 啟動嘅進程同腳本。
kill -1 $$
可以用 trap
命令捕捉信號。
trap commands signals
鍵盤 Ctrl+C
嘅信號係 SIGINT
。
#!/usr/bin/env bash
trap "echo ' Trapped Ctrl-C'" SIGINT
count=1
while [ $count -le 5 ]
do
echo "loop #$count"
sleep 1
count=$[ $count + 1 ]
done
loop #1
loop #2
^C Trapped Ctrl-C
loop #3
loop #4
^C Trapped Ctrl-C
loop #5
可以捕捉腳本退出時候嘅信號。
trap "echo ' Trapped Ctrl-C'" EXIT
用 --
就可以移除信號。
trap -- SIGINT
No Hang Up,由該命令啟動嘅進程或者腳本會忽略 SIGHUP 信號。 即係話,即使終端退出,由該終端啟動嘅進程或者腳本唔會跟住一齊退出。
run a command immune to hangups, with output to a non-tty
nohup ./foo
默認會把 STDOUT
同 STDERR
重定向到 nohup.out
。
-rw------- 1 kuga kuga 40 Sep 2 18:46 nohup.out
自己重定向會好啲。
nohup ./foo > out.log 2>&1
-rw-rw-r-- 1 kuga kuga 62 Sep 2 18:50 out.log
控制進程優先級嘅參數。nice
值越高,進程嘅優先級越低,分配到嘅 CPU 資源越少。
nice
值嘅範圍從 -20
到 19
:
-20
:最高優先級。0
:默認優先級。19
:最低優先級。nice -n VALUE command
nice -n 10 ./foo
renice VALUE -p PID
renice 5 -p 404