我有一個shell腳本,我可以使用「trap」命令捕獲發送的信號。是否可以使用「kill」向進程發送信號而不強制進程退出?
當收到特定信號時,它會執行一些功能。
我使用「kill」命令來發送信號。
我只想觸發腳本中的函數,而不是真正殺死腳本。
本來我以爲SIGUSR1
和SIGUSR2
應該可以工作,但我錯了,腳本剛剛退出。
那麼有沒有一種方法可以使用kill來發送信號來觸發某些功能而不會真正殺死進程?
我有一個shell腳本,我可以使用「trap」命令捕獲發送的信號。是否可以使用「kill」向進程發送信號而不強制進程退出?
當收到特定信號時,它會執行一些功能。
我使用「kill」命令來發送信號。
我只想觸發腳本中的函數,而不是真正殺死腳本。
本來我以爲SIGUSR1
和SIGUSR2
應該可以工作,但我錯了,腳本剛剛退出。
那麼有沒有一種方法可以使用kill來發送信號來觸發某些功能而不會真正殺死進程?
根據殺手和信號(7)的手冊頁,你所希望的最好的方法就是停下來然後繼續。但我不認爲這會做你想做的。我也質疑使用「殺人」的願望,一個命名的目的非常明確的命令要做到這一點。幾乎所有可以通過kill發送的信號都是爲了終止一個進程或者導致其轉儲內核。我不是專家,但我認爲你正試圖在這裏使用錯誤的工具。
是的。也許我應該使用其他命令發送信號。本來我認爲「殺」是一種通用的方式:> –
我相信它很少使用,但我知道你可以參考一個常見的情況。
DD
您可以發送一個USR1信號運行時,DD,它會輸出進度。完全的用戶空間,並且工作良好,完全可移植的代碼。參考:http://en.wikipedia.org/wiki/Dd_(Unix)
請顯示您的shell腳本。 –
@BasileStarynkevitch只是一個實驗性的腳本,將永遠睡眠,只有當它接收到信號時纔打印某些東西......我認爲正如下面的答案所說的,我不應該使用「kill」 –
@BasileStarynkevitch我明白了。只有當我的腳本睡覺時它纔會退出。如果我在睡眠之間添加了一些東西,效果很好:> –