linux中的。 殭屍 程序

2021-04-07 06:32:56 字數 743 閱讀 1917

"殭屍"程序是乙個早已死亡的程序,但在程序表(processs table)中仍佔了乙個位置(slot)。由於程序表的容量是有限的,所以,defunct程序不僅占用系統的記憶體資源,影響系統的效能,而且如果其數目太多,還會導致系統癱瘓,以下是乙個無限建立子程序的程式:

#i nclude

#i nclude

main()

{for (;;)  /*製作乙個死迴圈*/

fork(); /*開始建立乙個子程序*/

如果執行了以上的程式就會生成無數個子程序造成系統癱瘓。如果對普通使用者進行程序限制就不會造成系統資源耗盡了。

* hard core 0

* hard rss 5000

* hard nproc 20

這裡的* 代表除了root的所有使用者,(* hard core 0) 是禁止core files"core 0",(* hard rss 5000) 是限制記憶體使用為5mb"rss  5000", (* hard nproc 20 )是限制程序數為"nproc 50"。大家可以根據自己系統記憶體大小進行合理配置。

session required /lib/security/pam_limits.so

好了,現在我們已經對普通使用者限制了程序和記憶體使用極限,修改完配置以後大家可以用root和普通使用者分別進行測試,結果當然是普通使用者執行完我們剛才做的程式不會宕機了。

用ps -ef|grep def命令可以檢視系統中是否存在殭屍程序,如果存在就殺死,釋放系統資源。

Linux中的殭屍程序

首先,設定sigchld的handler為sig ign能否避免殭屍程序呢?man signal,有以下解釋 避免殭屍程序通常有以下3種方法 1.fork兩次,使得孫子程序的父親為init,孫子程序去執行job init程序只要檢測有子程序終止就會呼叫wait或waitpid釋放資源,防止殭屍程序。...

Linux 中的殭屍程序與孤兒程序

在介紹殭屍程序和孤兒程序之前我們先了解一下程序的幾種狀態 程序狀態 1.r狀態 程序要麼在執行要麼在執行佇列中。2.s狀態 睡眠狀態,程序在等待某事件完成 可被中斷 3.d狀態 不可中斷的睡眠狀態 通常其在第等待io結的束 4.t狀態 被停止的程序 傳送訊號sigstop停止程序 sigcont讓程...

Linux 殭屍程序

怎樣產生殭屍程序的 乙個程序在呼叫exit命令結束自己的生命的時候,其實它並沒有真正的被銷毀,而是留下乙個稱為殭屍程序 zombie 的資料結構 系統呼叫 exit,它的作用是使程序退出,但也僅僅限於將乙個正常的程序變成乙個殭屍程序,並不能將其完全銷毀 在linux程序的狀態中,殭屍程序是非常特殊的...