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 ...