2016-01-22 126 views
0

我試圖檢查pmon進程是否在CentOS和Oracle Linux shell命令中運行。我使用下面的命令。爲什麼'ps'命令在oracle Linux和CentOS中的工作方式不同

在CentOS的:

ps -e | grep pmon;echo $? 

輸出

61577 ?  00:00:00 ora_pmon_orcl 
0 

但是,甲骨文的Linux:

ps -e | grep pmon;echo $? 

輸出

1 

我無法理解他們爲什麼表現不同。 我可以得到一個命令,該命令將兩個操作系統上運行,如下

1 output for process not running 
0 output for process running 
+1

這是因爲在第一種情況下有一個匹配'pmon'的進程,第二種情況沒有,沒有?另外,你可能需要'grep -q'。 –

+1

你確定在第二種情況下,這個過程是否在運行?試試'ps -e | grep init; echo $?' –

+0

是的,它在那裏[oracle @ oel67ora111〜] $ ps -aef | grep pmon oracle 18160 15891 0 14:53 pts/4 00:00:00 grep pmon oracle 59040 1 0 11:16? 00:00:01 ora_pmon_db1 – Dipak

回答

1

編輯:由於Vatine和迪帕克 建議嘗試運行此

ps -ef|grep [p]mon|wc -l|awk '{if ($1 != 0) print "0"; else print "1";}' 

它將返回1如果進程不運行和0如果它正在運行。

+0

它在CentOS中仍然有相同的區別,在Oracle Linux中,它提供了1個 – Dipak

+2

'ps -e | grep [p] mon'使得需要'grep -v grep'消失(正則表達式'[p] mon'匹配字符串「pmon」,但與字符串「[p] mon」不匹配)。 – Vatine

+0

謝謝@Vatine。這是很好的知道和實施在未來的場景 – Utsav

相關問題