kill[IT行業語]

kill[IT行業語]
更多義項 ▼ 收起列表 ▲

說明:kill 送出一個特定的信號 (signal) 給行程 id 為 pid 的行程根據該信號而做特定的動作,若沒有指定,預設是送出終止 (TERM) 的信號

Linux

linux命令提示符

命令名稱:kill

使用許可權:所有使用者

使用方式:

kill [-s sigspec | -n signum | -sigspec] pid | jobspec … or kill -l [sigspec]

說明:kill 送出一個特定的信號 (signal) 給行程 id 為 pid 的行程根據該信號而做特定的動作,若沒有指定,預設是送出終止 (TERM) 的信號

-s (signal) : 其中常用的訊號有 HUP (1),KILL (9),TERM (15),分別代表著重跑,砍掉,結束; 詳細的信號可以用 kill -l (見下結果,可用數字帶入)

-p : 印出 pid,並不送出信號

-l (signal) : 列出所有可用的信號名稱

這個就是kill -l的查詢結果:

1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL

5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE

9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2

13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT

17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP

21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU

25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH

29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN

35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4

39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8

43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12

47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14

51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10

55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6

59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2

63) SIGRTMAX-1 64) SIGRTMAX

一般範例:

將 pid 為 323 的執行緒砍掉 (kill) :

kill -9 323

將 pid 為 456 的執行緒重跑 (restart) :

kill -HUP 456

一般來講,查詢PID的命令是

ps -ef | grep yum(表示查詢的是yum的PID,根據查詢的東西不同而異)。

舉一個實際的例子:

比方說,fedora的線上更新命令yum鎖鎖住了,常見的提示是

Existing lock /var/run/yum.pid: another copy is running as pid 19698.

Another app is currently holding the yum lock; waiting for it to exit…

Another app is currently holding the yum lock; waiting for it to exit…

Another app is currently holding the yum lock; waiting for it to exit…

Another app is currently holding the yum lock; waiting for it to exit…

Another app is currently holding the yum lock; waiting for it to exit…

…….

這裡就沒必要使用ps命令了,因為已經知道PID就是19698這個值了,因此不用在查詢。

這時就要使用kill將19698的進程殺死。其中的19698就是PID。

所以在命令行內輸入:

kill -9 19698

就能成功的殺死這個進程。

kill的改進用法如下:

一、把ps的查詢結果通過管道給grep查找包含特定字元串的進程。管道符“|”用來隔開兩個命令,管道符左邊命令的輸出會作為管道符右邊命令的輸入。

$ ps -ef | grep firefox

smx 1827 1 4 11:38 ? 00:27:33 /usr/lib/firefox-3.6.18/firefox-bin

smx 12029 1824 0 21:54 pts/0 00:00:00 grep –color=auto firefox

這次就清爽了。然後就是

$kill -s 9 1827

還是嫌打字多?

二、使用pgrep:

一看到pgrep首先會想到什麼?沒錯,grep!pgrep的p表明了這個命令是專門用於進程查詢的grep。

$ pgrep firefox

1827

看到了什麼?沒錯火狐的PID,接下來又要打字了:

$kill -s 9 1827

VB語句

kill({檔案地址(可不填)}+檔案名稱)

語句作用:刪除檔案

範例:kill "1.ini"

C函式

kill(傳送信號給指定的進程,使用 kill -l 命令可查看linux系統中信號。)

相關函式 raise,signal

表頭檔案

#include<sys/types.h>

#include<signal.h>

定義函式 int kill(pid_t pid,int sig);

函式說明

kill()可以用來送參數sig指定的信號給參數pid指定的進程。參數pid有幾種情況:

pid>0 將信號傳給進程識別碼為pid 的進程。

pid=0 將信號傳給和當前進程相同進程組的所有進程

pid=-1 將信號廣播傳送給系統內所有的進程

pid<0 將信號傳給進程組識別碼為pid絕對值的所有進程

參數sig代表的信號:

Signal Description
SIGABRT 由調用abort函式產生,進程非正常退出
SIGALRM 用alarm函式設定的timer逾時或setitimer函式設定的interval timer逾時
SIGBUS 某種特定的硬體異常,通常由記憶體訪問引起
SIGCANCEL 由Solaris Thread Library內部使用,通常不會使用
SIGCHLD 進程Terminate或Stop的時候,SIGCHLD會傳送給它的父進程。預設情況下該Signal會被忽略
SIGCONT 當被stop的進程恢復運行的時候,自動傳送
SIGEMT 和實現相關的硬體異常
SIGFPE 數學相關的異常,如被0除,浮點溢出,等等
SIGFREEZE Solaris專用,Hiberate或者Suspended時候傳送
SIGHUP 傳送給具有Terminal的Controlling Process,當terminal被disconnect時候傳送
SIGILL 非法指令異常
SIGINFO BSD signal。由Status Key產生,通常是CTRL+T。傳送給所有Foreground Group的進程
SIGINT 由Interrupt Key產生,通常是CTRL+C或者DELETE。傳送給所有ForeGround Group的進程
SIGIO 異步IO事件
SIGIOT 實現相關的硬體異常,一般對應SIGABRT
SIGKILL 無法處理和忽略。中止某個進程
SIGLWP 由Solaris Thread Libray內部使用
SIGPIPE 在reader中止之後寫Pipe的時候傳送
SIGPOLL 當某個事件傳送給Pollable Device的時候傳送
SIGPROF Setitimer指定的Profiling Interval Timer所產生
SIGPWR 和系統相關。和UPS相關。
SIGQUIT 輸入Quit Key的時候(CTRL+\)傳送給所有Foreground Group的進程
SIGSEGV 非法記憶體訪問
SIGSTKFLT Linux專用,數學協處理器的棧異常
SIGSTOP 中止進程。無法處理和忽略。
SIGSYS 非法系統調用
SIGTERM 請求中止進程,kill命令預設傳送
SIGTHAW Solaris專用,從Suspend恢復時候傳送
SIGTRAP 實現相關的硬體異常。一般是調試異常
SIGTSTP Suspend Key,一般是Ctrl+Z。傳送給所有Foreground Group的進程
SIGTTIN 當Background Group的進程嘗試讀取Terminal的時候傳送
SIGTTOU 當Background Group的進程嘗試寫Terminal的時候傳送
SIGURG 當out-of-band data接收的時候可能傳送
SIGUSR1 用戶自定義signal 1
SIGUSR2 用戶自定義signal 2
SIGVTALRM setitimer函式設定的Virtual Interval Timer逾時的時候
SIGWAITING Solaris Thread Library內部實現專用
SIGWINCH 當Terminal的視窗大小改變的時候,傳送給Foreground Group的所有進程
SIGXCPU 當CPU時間限制逾時的時候
SIGXFSZ 進程超過檔案大小限制
SIGXRES Solaris專用,進程超過資源限制的時候傳送

返回值 執行成功則返回0,如果有錯誤則返回-1。

錯誤代碼

EINVAL 參數sig 不合法

ESRCH 參數pid 所指定的進程或進程組不存在

EPERM 許可權不夠無法傳送信號給指定進程

範例

#include<unistd.h>

#include<signal.h>

#include<sys/types.h>

#include<sys/wait.h>

main()

{

pid_t pid;

int status;

if(!(pid= fork())){

printf(“Hi I am child process!\n”);

sleep(10);

return;

}

else{

printf(“send signal to child process (%d) \n”,pid);

sleep(1);

kill(pid,SIGABRT);

wait(&status);

if(WIFSIGNALED(status))

printf(“chile process receive signal %d\n”,WTERMSIG(status));

}

}

執行 sen signal to child process(3170)

Hi I am child process!

child process receive signal 6

防毒軟體

KILL 網路防病毒系統(別名“ KILL 安全胄甲”)是冠群金辰公司旗下的企業級防病毒軟體,可全面查殺計算機病毒、蠕蟲、木馬等惡意程式,保護用戶網路範圍內計算機系統環境安全。KILL 防病毒系統採用自主智慧財產權的防病毒引擎,依託美國 CA 公司強大的技術背景和國內雄厚的研發服務實力,在十幾年的發展中,贏得了廣大用戶的普遍信任,其產品在政府、電信、金融、稅務等各個領域都有著廣泛的成功套用。

KILL 網路防病毒系統支持在 Windows 9x/ME/NT/2000/XP/2003/Vista 等平台上運行,同步支持微軟 Windows 作業系統的各個版本。KILL 防病毒引擎榮獲西海岸實驗室( West Coast Labs )基於 Windows Vista 平台的 Checkmark 權威認證,屬全球首家,確保在 Vista 平台上穩定運行;首批榮獲國際病毒公告牌( Virus Bulletin ) Windows Vista 平台病毒查殺 VB100 認證,可 100% 查殺 Vista 系統上的流行病毒。

相關詞條

熱門詞條

聯絡我們