2010-01-13 287 views
1

我有一個我寫的shell腳本,它在有限循環內執行以下步驟:殺死進程殺死其他進程

我產生一個進程,並等待它結束。如果沒有在40秒內完成,我執行:

kill -SIGTERM pid 

我有時發現,即使是做殺-SIGTERM PID,進程並不被殺害迴應。在這種情況下,等待它殺死自己另外40秒鐘後,我再執行:

kill -9 pid 

大多數時候,這已經足夠了,我轉移到這些步驟的下一次迭代。

問題: 有時在做上述一系列步驟時,我不僅終止了我打算殺死的進程,還殺死了運行執行這些步驟循環的腳本的shell。

問題:這是什麼原因造成的?

+4

如何顯示您的代碼? – ghostdog74 2010-01-13 02:30:48

+1

聽起來很呃...有一次,我不得不寫一個cron作業,如果它們超過一分鐘,它會每分鐘殺掉MySQL查詢。呸。 – gahooa 2010-01-13 02:33:56

+0

它很明顯,如果你使用命令Kill -9,它會殺死整個進程樹 – 2010-01-13 02:40:42

回答

1

兩種可能性:

1)你傳遞的PID殼或腳本,而不是子進程

2)你的shell /腳本簡單地退出正常的,因爲與子進程死了沒有什麼可以做的。