linux下如何殺掉D狀態程序

2021-08-11 07:35:57 字數 1145 閱讀 1509

d狀態(disk sleep)程序用kill -9命令是不管用的,最簡單的方法就是reboot, 除此還可以修改核心,將其程序狀態轉化為別的狀態,然後kill掉。 

新建資料夾, cd進去,新建killd.c 檔案,**如下:

#include 

#include /*needed by all modules*/

#include

#include //for_each_process

module_license("bsd");

static

int pid = -1;

module_param(pid, int, s_irugo);

static

int killd_init(void)

} printk("not found");

//read_unlock(&tasklist_lock);

return

0; }

static

void killd_exit(void)

module_init(killd_init);

module_exit(killd_exit);

然後新建makefile檔案:

obj-m := killd.o 

all :

$(make) -c /lib/modules/$(shell uname -r)/build m=$(

pwd) modules

clean:

$(make) -c /lib/modules/$(shell uname -r)/build m=$(

pwd) clean

然後執行make命令進行編譯;

make
再執行如下命令:

sudo insmod ./hello.ko #載入

sudo rmmod hello #刪除 或者 sudo rmmod ./hello.ko

插入模組的時候提供d狀態的程序號,就可以將其轉換為t狀態,使用普通kill就可以殺死。

sudo insmod ./killd.ko pid=1234

Linux如何殺掉殭屍程序

殭屍程序是當子程序比父程序先結束,而父程序又沒有 子程序,釋放子程序占用的資源,此時子程序將成為乙個殭屍程序。如果父程序先退出 子程序被init接管,子程序退出後init會 其占用的相關資源。由於子程序的結束和父程序的執行是乙個非同步過程,即父程序永遠無法 子程序 到底什麼時候結束.那麼會不會因為父...

linux程序狀態D

程序狀態d,往往是由於 i o 資源得不到滿足而引發等待 舉個例子,當 nfs 服務端關閉之時,若未事先 umount 相關目錄,在 nfs 客戶端執行 df 就會掛住整個登入會話,按 ctrl c ctrl z 都無濟於事。斷開連線再登入,執行 ps axf 則看到剛才的 df 程序狀態位已變成了...

Linux下批量殺掉篩選程序

在做專案的時候,由於情況要求,需要把伺服器上符合某一條件的程序全部kill掉,但是又不能使用killall直接殺掉某一程序名稱包含的所有執行中的程序 即我們可能只需要殺掉某一類含有特定引數命令的程序 具體命令參考 ps ef grep test grep v grep awk xargs kill ...