當我有這個簡單的bash腳本不響應:我的bash腳本的信號打開新的shell會話
#!/bin/bash
trap "rm /testfile; service apache2 stop;" SIGTERM
service apache2 start
# Here I want to create new bash session for some reasons.
/bin/bash
現在一些其他程序可以somewhen發送SIGTERM
這個腳本,但實際上腳本不會迴應這個信號,它會一直掛在新的bash會話上,當我使用sleep infinity
之類的其他東西而不是打開新的bash會話時(這只是爲了測試,因爲我需要bash會話)。
如何讓此腳本對該SIGTERM做出響應?新bash會話如何終止並不重要,我只想確保我在trap
中寫的內容將被執行。
正如@Fred所說。你本質上是在'trap'rm/testfile; service apache2 stop'之前執行'service apache2 start'; SIGTERM'被稱爲。你可能想在'trap'中包含'start'。可能最好讓'trap'調用一個同時執行'stop'('rm')和'start'的助手腳本。 (你的第二個'/ bin/bash'沒有幫助) –
你想達到什麼目的?爲什麼其他進程不會簡單地停止Apache而不是發出這個腳本的信號來讓這個腳本停止Apache? – Fred
檢查了這個 - http://unix.stackexchange.com/questions/146756/forward-sigterm-to-child-in-bash –