2013-02-06 82 views
0

我想在.5秒後發送SIGNAL進程。通過PIPE發送Unix/Linux信號

也許這不是一個好主意,但我想做一個不尋常的臨時案件。

我試過像下面,但它不工作。

(sleep .5;kill -9)| some_process 

回答

1

sleep .5; kill -9 $(pidof some_process)應該工作。 pidof返回進程名稱的進程ID。 $()將命令的結果返回給kill命令。另一種方法是:對細節

sleep .5; pidof some_process | xargs kill -9

檢查man pidof

編輯:也有timeouttimeout -s SIGKILL 0.5s some_process應該做的伎倆,如果我正確地理解你的問題。

+0

我要殺死的過程這是本'PIPE'後號。這個'some_process'不是一個不同的過程。 – Suku

+0

基本上,我不會得到'some_process'的pid。所以需要通過管道發送'SIGNAL'到'some_process' – Suku

+1

所以這個過程應該開始,應該在0.5秒後被殺死?也許'人超時'在這裏有幫助嗎? 'timeout -k'例如? –

5

信號不針對管道;他們被引導到處理標識符(pid)。我可能會嘗試這樣的事:

some_process & sleep .5; kill -KILL $! 

這會在後臺運行some_process(這是什麼&是)。半秒鐘後,它將使用變量$!,它指示最後一次後臺處理的pid。

(雖然sleep在某些系統僅接受的整數。)