您好,登錄后才能下訂單哦!
這篇文章給大家分享的是linux查看進程是否存在的方法。小編覺得挺實用的,因此分享給大家學(xué)習(xí)。如下資料是關(guān)于linux查看進程是否存在方法的內(nèi)容。
這個問題看起來好像很簡單,"ps -ef | grep xx"一下就行啦!這樣做當然可以,但是如果我們考究起性能來,這恐怕不是個好辦法。
假設(shè)我們現(xiàn)在要監(jiān)測某進程是否存活,每分鐘檢查一次,用上面的辦法就要每分鐘運行一次ps命令并且做一次grep正則查找。
這點開銷在服務(wù)器上似乎不算什么,然而如果我們要在同一節(jié)點上同時監(jiān)測數(shù)十個、數(shù)百個這樣的進程又如何呢?
所以,我們有必要從性能的角度出發(fā),發(fā)掘一些更好的辦法。
對于daemon進程,通常都會有自己的pid或者lock文件,我們可以檢查這些文件是否存在來判斷進程是否存在。然而有些異常情況下,pid文件存在進程卻并不存在。因此并不能依賴進程的pid文件來檢測進程是否存活。
一種可靠的方法是使用"kill -0 pid",kill -0不會向進程發(fā)送任何信號,但是會進行錯誤檢查。如果進程存在,命令返回0,如果不存在返回1。
[sw@gentoo ~]$ ps PID TTY TIME CMD pts/0 00:00:00 bash pts/0 00:00:00 ps [sw@gentoo ~]$ kill -0 15091 [sw@gentoo ~]$ echo $? [sw@gentoo ~]$ kill -0 15092 -bash: kill: (15092) - No such process [sw@gentoo ~]$ echo $? [sw@gentoo ~]$
但是,這種方法對于普通用戶來說只能用于檢查自己的進程,因為向其它用戶的進程發(fā)送信號會因為沒有權(quán)限而出錯,返回值也是1。
[sw@gentoo ~]$ kill 2993 -bash: kill: (2993) - Operation not permitted [sw@gentoo ~]$ echo $? [sw@gentoo ~]$
當然,如果你用特權(quán)用戶執(zhí)行kill命令的話,就沒有權(quán)限問題啦。
關(guān)于linux查看進程是否存在的方法就分享到這里了,解決問題并不止文章中和大家分析的辦法,不過本文分析的方法準確性是不容置疑的。如果喜歡本篇文章,不妨把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。