kill(IT行業語)

本詞條是多義詞,共2個義項
更多義項 ▼ 收起列表 ▲

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

基本介紹

  • 中文名:kill
  • 命令名稱:kill
  • 使用許可權:所有使用者
  • 實質:linux命令提示符
Linux,VB語句,C函式,防毒軟體,

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 系統上的流行病毒。

相關詞條

熱門詞條

聯絡我們