2014-03-05 36 views
0

我有一個進程正在運行,我需要發送HUP信號並確認它是否完成。如何檢查hup信號是否完成日誌解析以外的進程?

pkill HUP [process] 

我做到了目前使用的日誌文件,但也有很多事情,我需要照顧..
相同的日誌文件被更新與HUP完成消息100倍,我不得不解析所做的最新HUP等等

是否有任何標誌集或系統事件集如果聯合王國解僱和完成?

有沒有人在做這樣的檢查,如在進程中觸發hup信號,並檢查它是否真的完成了?

感謝答覆

+0

你是什麼意思「完成其過程」?使用'dtrace'告訴你什麼時候目標進程即將開始執行SIGHUP的信號處理程序非常簡單。如果你想知道信號處理器什麼時候完成某些事情,那有點困難,這取決於你想要尋找什麼東西。 –

+0

感謝您的評論,實際上這是惡魔進程,這是不是我的控制,在後臺寫日誌,我只需要檢查何時火災東西寫在日誌中,解析它和檢查完成,有沒有更好的方法像任何系統事件或標誌設置時,任何信號發送惡魔? – user1145280

回答

0

您可以使用dtrace來監視信號通過proc:::signal-handle探頭被處理。類似探針的列表可以在the dtrace proc provider documentation中找到。

下面是一個示例,它將監視由特定進程ID處理的SIGHUPdtrace相當靈活,並且還可以觀察具有給定名稱或用戶標識的所有進程。

# cat sig.d 
proc:::signal-handle 
/pid == $1 && args[0]==SIGHUP/
{ 
    printf("pid %d - %s - got signal %d at %Y\n", pid, execname, args[0], walltimestamp); 
} 
# sleep 300 & 
1054 
# dtrace -q -s sig.d 1054 & 
1057 
# kill -HUP 1054 
# pid 1054 - sleep - got signal 1 at 2014 Mar 13 10:31:03 
1054 Hangup 
# 
+0

感謝評論,如果hup過程完成,是否有任何標誌設置?是取決於進程處理還是任何簽名句柄在完成後釋放等? – user1145280

+0

@ user1145280這取決於「完成」的含義。請舉例說明您希望監控的接收信號的過程。 –

+0

事實上,事情就像守護進程一樣,爲了進行配置更新,我做了 - 從我的源中選取-HUP ,我可以在日誌中看到類似於HUP的消息:開始和之後,bla bla更新它說HUP:done now ...因爲在我手中沒有控制權,我只能在發射HUP之後解析日誌,直到它發出HUP:done ..這個日誌解析的不確定事件..我想知道是否還有其他的事情可以完成..?像你說的信號東西等 – user1145280

相關問題