共找到2條詞條名為kill的結果 展開

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
#include
定義函數 int kill(pid_t pid,int sig);
函數說明
kill()可以用來送參數sig指定的信號給參數pid指定的進程。參數pid有幾種情況:
pid>0 將信號傳給進程識別碼為pid 的進程。
pid=0 將信號傳給和當前進程相同進程組的所有進程
pid=-1 將信號廣播傳送給系統內所有的進程
pid<0 將信號傳給進程組識別碼為pid絕對值的所有進程
參數sig代表的信號:
SignalDescription
SIGABRT由調用abort函數產生,進程非正常退出
SIGALRM用alarm函數設置的timer超時或setitimer函數設置的interval timer超時
SIGBUS某種特定的硬體異常,通常由內存訪問引起
SIGCANCELSolaris Thread Library內部使用,通常不會使用
SIGCHLD進程Terminate或Stop的時候,SIGCHLD會發送給它的父進程。預設情況下該Signal會被忽略
SIGCONT當被stop的進程恢復運行的時候,自動發送
SIGEMT和實現相關的硬體異常
SIGFPE數學相關的異常,如被0除,浮點溢出,等等
SIGFREEZESolaris專用,Hiberate或者Suspended時候發送
SIGHUP發送給具有Terminal的Controlling Process,當terminal被disconnect時候發送
SIGILL非法指令異常
SIGINFOBSD 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的時候發送
SIGPROFSetitimer指定的Profiling Interval Timer所產生
SIGPWR和系統相關。和UPS相關。
SIGQUIT輸入Quit Key的時候(CTRL+\)發送給所有Foreground Group的進程
SIGSEGV非法內存訪問
SIGSTKFLTLinux專用,數學協處理器的棧異常
SIGSTOP中止進程。無法處理和忽略。
SIGSYS非法系統調用
SIGTERM請求中止進程,kill命令預設發送
SIGTHAWSolaris專用,從Suspend恢復時候發送
SIGTRAP實現相關的硬體異常。一般是調試異常
SIGTSTPSuspend Key,一般是Ctrl+Z。發送給所有Foreground Group的進程
SIGTTIN當Background Group的進程嘗試讀取Terminal的時候發送
SIGTTOU當Background Group的進程嘗試寫Terminal的時候發送
SIGURG當out-of-band data接收的時候可能發送
SIGUSR1用戶自定義signal 1
SIGUSR2用戶自定義signal 2
SIGVTALRMsetitimer函數設置的Virtual Interval Timer超時的時候
SIGWAITINGSolaris Thread Library內部實現專用
SIGWINCH當Terminal的窗口大小改變的時候,發送給Foreground Group的所有進程
SIGXCPU當CPU時間限制超時的時候
SIGXFSZ進程超過文件大小限制
SIGXRESSolaris專用,進程超過資源限制的時候發送
返回值 執行成功則返回0,如果有錯誤則返回-1。
錯誤代碼
EINVAL 參數sig 不合法
ESRCH 參數pid 所指定的進程或進程組不存在
EPERM 許可權不夠無法傳送信號給指定進程
範例
#include
#include
#include
#include
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 系統上的流行病毒。