Linux中的vim,linux系统中top命令
Killall命令Linux系统中的killall命令用于杀死指定名称的进程(按名称杀死进程)。我们可以使用kill命令终止具有指定进程PID的进程。如果要找到需要杀死的进程,还需要先使用ps等命令再配合grep找到进程,而killall将这两个进程合二为一,是一个非常有用的命令。
1.命令格式
kill all[参数][进程名称]
2.命令参数
-Z只杀死拥有scontext的进程。
-e需要匹配的进程名。
-我忽略小写。
-g杀死进程组而不是进程。
-i交互模式,在杀死进程前询问用户。
-我列出了所有已知的信号名称。
-q不输出警告信息。
-s发送指定的信号。
-v报告信号是否成功发送。
-w等待进程停止
help显示帮助信息。
版本显示版本显示
3.范例
1.杀死所有同名进程killall nginx killall -9 bash2。向进程发送指定信号killall -TERM ngixn或killall -KILL nginx KILL命令。Linux中的kill命令用于终止指定进程的运行,是Linux下进程管理中的常用命令。通常,Ctrl+C键可用于终止前台进程。但是,对于后台进程,必须使用kill命令来终止它。我们需要使用PS/pidof/p tree/top等工具先获取进程的PID,然后使用kill命令杀死进程。kill命令通过向进程发送指定的信号来结束相应的进程。默认情况下,使用15号$ TERM信号。术语信号将终止所有不能捕获信号的进程。对于那些可以捕获到这个信号的进程,应该使用编号为9的kill信号来强行“杀死”该进程。
1.命令格式
终止[参数][进程id]
2.命令参数
-l信号。如果没有添加信号的number参数,则“-l”参数将列出所有信号名称。
-a处理当前进程时,命令名和进程号的对应关系不受限制。
-p指定kill命令只打印相关进程的进程号,而不发送任何信号。
-s指定发送信号。
-u指定用户
1.kill命令可能有也可能没有信号编号选项。如果没有信号号,kill命令会发出一个终止信号(15),该信号可以被进程捕获,以便进程在退出前清理并释放资源。您还可以使用kill向进程发送特定的信号。例如:
Kill -2 123它的作用相当于前台正在运行一个PID为123的进程时按Ctrl C。而普通用户最多只能使用不带信号参数或-9信号的kill命令。
2.kill可以将进程ID号作为参数。当用kill向这些进程发送信号时,您必须是这些进程的所有者。如果您试图取消一个没有权限的进程或一个不存在的进程,您将得到一个错误消息。
3.可以用信号通知或终止多个进程。
4.当kill成功发送信号时,shell会在屏幕上显示进程的终止信息。有时,此消息不会立即显示,而只会在通过按Enter键再次出现shell的命令提示符时显示。
5.需要注意的是,信号强制进程终止,往往会带来一些副作用,比如数据丢失或者终端无法恢复到正常状态。发送信号的时候一定要小心,只有在万不得已的情况下才使用kill信号(9),因为进程无法先捕获它。要撤消所有后台作业,可以输入kill 0。因为后台运行的一些命令会启动多个进程,所以要跟踪找到所有要被杀死的进程的PID是非常麻烦的。这时使用kill 0终止当前shell启动的所有进程是一种有效的方法。
2.范例
示例:列出所有信号名称的命令:kill-l output:[root @ localhosttest 6]# kill-l 1)sighup 2)SIG int 3)SIG quit 4)sigill 5)SIG trap 6)sigabrt 7)SIG bus 8)sigfpe 9)SIGKILL 10)sigusr 11)SIGSEGV 12)sigusr 213)SIGPIPE 14)SIGALRM 15)SIGTERM 16)sigstkflt 17)SIGCHLD 18)SIGCONT 19)SIG stop 20) SIGRTMIN 5 40)SIGRTMIN 6 41)SIGRTMIN 7 42)SIGRTMIN 843)SIGRTMIN 9 44)SIGRTMIN 10 45)SIGRTMIN 11 46)SIGRTMIN 13 48)SIGRTMIN 14 49)SIGRTMIN 15 50)SIGRTMAX-1451)SIGRTMAX-13 52)SIGRTMAX-12 53)SIGRTMAX-11 54)sigt max-1054 SIGTMAX描述常用的信号有:HUP 1终端断开INT 2中断(同Ctrl C)QUIT 3退出(同Ctrl )TERM 15终止KILL 9强制终止CONT 18继续(与STOP相反, Fg/bg命令)STOP 19 Pause(同Ctrl Z)例2:获取指定信号的值[root @ localhost test 6]# Kill-l Kill 9[root @ localhost test 6]# Kill-l sigkill 9[root @ localhost test 6]# Kill-l term 15[root @ localhost test 6]# Kill-l sigterm 15[root @ localhost test 6]#例3:先用ps找到进程, 然后用kill杀死命令:Kill 3268[root @ localhosttest 6]# PS-ef grep vim root 3268 2884 0 16:21 pts/1 00:00:00 vim install . log root 370 2822 0 16:21 pts/00:00:00:00 grep vim[root @ localhosttest 6]# Kill 3268例4:彻底杀死进程。 命令:kill9 3268//-9强制终止进程。ps:init是Linux系统操作中必不可少的程序之一。所谓init进程,就是内核启动的用户级进程。内核自启动后(已经加载到内存,开始运行,所有设备驱动和数据结构已经初始化等。),它通过启动用户级程序init来完成引导过程。因此,init总是第一个进程(它的进程号总是1)。所有其他进程都是init进程的后代。不能终止初始化进程!
PKILL pkill的应用方法和killall一样,直接杀死正在运行的程序;如果要杀死单个进程,请用kill杀死它。
方法:#pkill正在运行程序名。
centos kill all install yum install PS misc
一般的杀人过程如下
$ PS-ef grep Django-admin . py grep-v grep 501 20060 1 0 0:00.11 ttys 001 0:00.38 python Django-admin . py runserver 0 . 0 . 0 . 0:8002501 20063 20060 0 0:00.35 ttys 001 0:01.07 python Django-admin . py runserver 0 . 0 . 0:8002 $ kill-term首先用PS查看流程。该方法如下:
$ ps -ef……smx 1822 1 0 11:38?00:00:49 gnome-terminals MX 1823 1822 0 11:38?00:00:00 gnome-pty-helpersmx 1824 1822 0 11:38 pts/0 00:00:02 bash smx 1827 1 4 11:38?00:26:28/usr/lib/Firefox-3 . 6 . 18/Firefox-chdlzsmx 1857 1822 0 11:38 pts/1 00:00:00 bash smx 1880 1619 0 11:38?00:00:00 Update-Notifier…smx 11946 1824 0 21:41 PTS/0 00:00:00:00 PS-EF or:$ PS-AUX…smx 1822 0.1 0.8 58484 18152?sl 11:38 0:49 gnome-terminals MX 1823 0.0 0.0 1988 712?s 11:38 0:00 gnome-pty-helpersmx 1824 0.0 0.1 6820 3776 pts/0 Ss 11:38 0:02 bash smx 1827 4.3 5.8 398196 119568?sl 11:38 26:13/usr/lib/Firefox-3 . 6 . 18/Firefox-chdlzsmx 1857 0.0 0.1 6688 3644 pts/1 Ss 11:38 0:00 bash smx 1880 0.0 0.6 41536 12620?S11: 38 0: 00更新通知程序.smx 11953 0.0 0 2716 1064 pts/0r 21:42 0:00 PS-aux此时,如果我想杀死Firefox的进程,我会在终端输入:
$ kill -s 9 1827
其中-s 9确定传输给进程的信号是9,即尽快强制终止进程。每个终端信号及其功能见附录。
827是上面ps找到的火狐的PID。
很简单,但是有个问题。流程少一点没关系,流程多了就觉得疼了。无论是ps -ef还是ps -aux,每次都要在一大串进程信息中找到要杀的进程,要花上你所有的眼睛才能看到。
预付款:
改进:
ps的查询结果通过管道传递给grep,以查找包含特定字符串的进程。管道符号“”用于分隔两个命令,管道符号左边的命令输出将用作管道符号右边的命令输入。
$ PS-ef grep Firefox smx 1827 1 4 11:38?00:27:33/usr/lib/Firefox-3 . 6 . 18/Firefox-chdlzsmx 12029 1824 0 21:54 pts/0 00:00:00:00 grep-color=autofirefox这次刷新了。然后
$kill -s 9 1827还是打字太多?
改进——使用pgrep:
看到pgrep你首先会想到什么?没错,grep!pgrep的p表示该命令是一个grep for process query。
$ pgrep firefox1827看到了什么?没错,火狐的PID,然后我还要再打一遍:
$kill -s 9 1827
改进——使用pidof:
看到皮多夫你有什么想法?没错,xx的pid,直译过来就是xx的PID。
相比pgrep,$ pidof firefox-chdlz1827稍有劣势。Pidof必须给出进程的全名。那就老生常谈了:
$kill -s 9 1827不管是用ps然后慢慢找进程PID,grep找包含对应字符串的进程,还是pgrep直接找包含对应字符串的进程PID,然后手动输入kill,都有点麻烦。有没有更方便的方法?是啊!
改进:
$ PS-EF grep Firefox grep-v grep Cut-C 9-15 Xargs Kill-S 9描述:
“grep firefox”的输出结果是所有包含关键字“firefox”的进程。
“grep -v grep”是从列出的进程中删除了关键字“grep”的进程。
“cut -c 9-15”截取输入行的第9个字符到第15个字符,而这恰好是进程号PID。
“xargs kill -s 9”中的xargs命令用于将前一个命令的输出结果(PID)作为“kill -s 9”命令的参数,并执行该命令。“kill -s 9”会强行杀死指定的进程。
你不想抱怨些什么吗?是的,太长了。
改进:
如果知道pgrep和pidof,为什么还要打这么长的单子!
$ pgrep Firefox xargs kill-s 9
改进:
$ PS-ef grep Firefox awk“{ print $ 2 }” xargs kill-9 kill:没有这样的进程有些令人沮丧。已正确找到进程并终止,但执行后提示找不到进程。
awk“{ print $ 2 }”用于打印第二列的内容。根据常规文章,我们可以知道ps输出的第二列正好是PID。通过xargs把要杀死的进程对应的PID作为参数传递,杀死对应的进程。
改进:
是不是每次都要调用xargs才能通过PID杀?答案是否定的:
$ kill-s 9 ` PS-aux grep Firefox awk { print $ 2 } `
改进:
没错,命令依然有点长,换成pgrep。
$ kill-s 9 pgrep Firefox
改进9——pkill:
看到粒子清除想到了什么?没错进程查找和杀!pkill=pgrep kill。
$pkill -9 firefox说明:-9 即发送的信号是9、pkill与杀在这点的差别是:pkill无须“s”,终止信号等级直接跟在"-" 后面。之前我一直以为是"-第9条",结果每次运行都无法终止进程。
-f该模式通常只与进程名匹配。当设置-f时,使用完整的命令行。这意味着,例如,如果我们在著名图象处理软件中看到这些线
辅助:
阿帕奇24268 0.0 2.6 388152 27116?六年级月13日0:10/usr/schdlz/httpdapache 24272 0.0 2.6 387944 27104?六年级月13日0:09/usr/schdlz/httpdapache 24319 0.0 2.6 387884 27316?6月15日0:04 /usr/schdlz/httpd我们可以使用pkill -f选项将它们全部杀死:
pkill -f httpd
改进10——killall:
中止进程或任务和粒子清除是相似的,不过如果给出的进程名不完整,killall会报错100 .粒子清除或者进程查找只要给出进程名的一部分就可以终止进程。
$killall -9火狐