前段時間,一哥們,去殺linux伺服器的程序,發現kill命令失靈了,怎麼殺都殺不死。
然後上網查了下資料,原來是要被殺的程序,成為了殭屍程序。
殭屍程序的檢視方法:
利用命令ps,可以看到有標記為z的程序就是殭屍程序。
知道了原因,就想怎麼去把這個殭屍程序乾掉。網上說了兩種方法,一種最簡單的方法,重啟伺服器,相當於清理記憶體了。方法很簡單,但是不是很實用,因為伺服器,不是你乙個人在用,伺服器是不能隨隨便便重啟的。第二種方法,殺掉其父程序,父程序乾掉後,該殭屍程序也就消失了。
可以用 ps -ef | grep 程序id ,找到其父程序,然後 kill -9 父程序id
其中ps命令:
user
:該 程序 屬於哪個使用者
•
pid
:該 程序 的id。
• %
cpu
:該 程序 使用掉的
cpu
資源百分比;
• %
mem
:該 程序 所占用的物理記憶體百分比;
•
vsz
:該 程序 使用掉的虛擬記憶體量 (kbytes)
•
rss
:該 程序 占用的固定的記憶體量 (kbytes)
•
tty
:該 程序 是在哪個終端機上面運作,若與終端機無關,則顯示 ?,另外, tty1-tty6 是本機上面的登入者程式,若為 pts/
0
等等的,則表示為由網路連線進主機的程式。
•
stat
:該程式目前的狀態,主要的狀態有:
o
r
:該程式目前正在運作,或者是可被運作;
o
s
:該程式目前正在睡眠當中 (可說是 idle 狀態啦!),但可被某些訊號 (signal) 喚醒。
o
t
:該程式目前正在偵測或者是停止了;
o
z
:該程式應該已經終止,但是其父程式卻無法正常的終止他,造成 zombie (疆屍) 程式的狀態
•
start
:該 程序被觸發啟動的時間;
•
time
:該 程序 實際使用
cpu
運作的時間。
•
command
:該程式的實際指令為何
Android 殺不死的程序
首先,正常下,當我們退出程式或手動殺死後,我們的程式就停止執行了。或者不退出在後台執行時,使用360加速球清理時,也會殺死我們的程序。個人理解360加速時,把不被新增信任的程序用乙個for迴圈,在迴圈裡乙個個的kill。於是有了一種思路,在我們應用中開啟兩個程序,當乙個程序被殺死時,另外乙個程序啟動...
殺不死的Service
專案需要,這兩天研究了一下service 1 onstartcommand 中 return start stick 2 onstartcommand 中 startforeground 3 ondestroy 中 startservice 4 註冊broadcastreceiver 監聽系統廣播 ...
Android中的程序保活(不死程序)
android中的程序保活方式主要分為以下三種 白色保活 啟動前台service 灰色保活 利用系統的漏洞啟動前台service 黑色保活 白色保活灰色保活 這種保活手段是應用範圍最廣泛。它是利用系統的漏洞來啟動乙個前台的service程序,與普通的啟動方式區別在於,它不會在系統通知欄處出現乙個no...