Linux每日一讲---Linux武器-kill
-
==此帖欢迎转载,转载请注明出处==
[size=99px]善用Linux武器--kill[/size]今天来讨论一个很有攻击性的话题kill。也许出于人类动物攻击性的本能,人们总是对这个话题异常兴奋。(女性可能不在此列,毕竟她们来自于另外一个星球)所以为了保持冷静,建议大家和我一样准备一杯绿茶在手。茶是大众饮料中唯一能多次冲泡,反复体味的,好了,在学习kill绝技前,我们再来体味一下昨天关于进程及ps的介绍。
其实在Linux的终端里运行的进程又可以被分为前台进程和后台进程。前台进程就像公司门前接待处的漂亮MM,后台进程就象公司阴暗角落里的老板。当您在终端里运行一个命令或开启一个程序时,终端要等到命令或程序运行完毕后,才能再被使用,就象要进入人家公司必须要和前台MM交涉完毕才可以。要终止前台进程的运行通常只要CTRL+C就可以了,那么要终止那些躲在后面施计的家伙要怎么办呢?这时候我们就要祭出kill法宝了。(事实上,Linux是可以支持人事调动的,就是把前台程序调到后台运行,这个以后介绍)
kill到底是个什么东东呢?我们输入:
kill -l
- SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
- SIGTRAP 6) SIGABRT 7) SIGBUS SIGFPE
- SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
- SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT
- SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
- SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU
- SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH
- SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN
- SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4
- SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
- SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12
- SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14
- SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10
- SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6
- SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
- SIGRTMAX-1 64) SIGRTMAX
这些是kill可以发给系统处理的信号。所以kill是领导,由它发布命令,系统来执行。当然我们向来不能滥杀无辜,所以就要用到昨天介绍的鸟鸟的ps。
ps aux
[color=#cccccc][color=#000000][/color]
[color=black]USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND[/color]
[color=black]root 1 0.0 0.7 1096 472 ? S Sep10 0:03 init [3][/color]
[color=black]root 2 0.0 0.0 0 0 ? SW Sep10 0:00 [kflushd][/color]
[color=black]root 3 0.0 0.0 0 0 ? SW Sep10 0:00 [kpiod][/color]
[color=black]root 4 0.0 0.0 0 0 ? SW Sep10 0:00 [kswapd][/color][/color]
[color=#cccccc][color=black]root 5 99 50 2222 889 ? R [badguy][/color][/color]比如在上面我们看到了PID为5的这个叫badguy的坏鸟,它使用了我们99%的CPU,50%的内存,搞得我们CPU狂喘,风扇猛转,电脑速度爆慢。IT'S THE TIME FOR KILL, HEHEHE.
kill 5
或
kill badguy我们安静的结束了一场战斗,再ps一下,看,叫badguy的家伙不见了。其实kill就是让你能像做外科手术一样对系统进行维护,而不用在遇到问题时每一次都重新启动系统。下面列举一些kill的常用选项:
kill -STOP [pid] 发送SIGSTOP (17,19,23)停止一个进程,而并不消灭这个进程。
kill -CONT [pid] 发送SIGCONT (19,18,25)重新开始一个停止的进程。
kill -KILL [pid] 发送SIGKILL (9)强迫进程立即停止,并且不实施清理操作。
kill -9 -1 终止你拥有的全部进程。另外,还有很多kill的同门兄弟比如:killall, pkill, xkill。如果你工作在Xwindows下就是Linux的图形界面下,做个实验:
启动一个应用程序,比如FireFox浏览器,然后打开终端。在终端里输入 xkill 。看你的鼠标箭头变成了什么?然后点一下你之前打开的程序窗口,怎么样了?酷吧![color=#cccccc][color=black]善用kill武器做一个好杀手吧。我们明天就来讨论终端和shell吧,昨天就有人问起的吧。
[/color][/color]
[[i] 本帖最后由 digitalsatori 于 2007-9-3 10:36 编辑 [/i]]