2013-07-28 26 views
1

我有一個shell腳本,我可以使用「trap」命令捕獲發送的信號。是否可以使用「kill」向進程發送信號而不強制進程退出?

當收到特定信號時,它會執行一些功能。

我使用「kill」命令來發送信號。

我只想觸發腳本中的函數,而不是真正殺死腳本。

本來我以爲SIGUSR1SIGUSR2應該可以工作,但我錯了,腳本剛剛退出。

那麼有沒有一種方法可以使用kill來發送信號來觸發某些功能而不會真正殺死進程?

+0

請顯示您的shell腳本。 –

+0

@BasileStarynkevitch只是一個實驗性的腳本,將永遠睡眠,只有當它接收到信號時纔打印某些東西......我認爲正如下面的答案所說的,我不應該使用「kill」 –

+0

@BasileStarynkevitch我明白了。只有當我的腳本睡覺時它纔會退出。如果我在睡眠之間添加了一些東西,效果很好:> –

回答

1

根據殺手和信號(7)的手冊頁,你所希望的最好的方法就是停下來然後繼續。但我不認爲這會做你想做的。我也質疑使用「殺人」的願望,一個命名的目的非常明確的命令要做到這一點。幾乎所有可以通過kill發送的信號都是爲了終止一個進程或者導致其轉儲內核。我不是專家,但我認爲你正試圖在這裏使用錯誤的工具。

+0

是的。也許我應該使用其他命令發送信號。本來我認爲「殺」是一種通用的方式:> –

3

我相信它很少使用,但我知道你可以參考一個常見的情況。

DD

您可以發送一個USR1信號運行時,DD,它會輸出進度。完全的用戶空間,並且工作良好,完全可移植的代碼。參考:http://en.wikipedia.org/wiki/Dd_(Unix)

相關問題