Linux命令(2):kill&killall
来源:互联网 发布:网络课程什么意思 编辑:程序博客网 时间:2024/06/10 22:13
今天不经意学到了两个Linux命令,也是因为工作中要用到,所以看着师傅学的。
一,kill
Linux中的kill命令用来终止指定的进程(terminate a process)的运行。一般输入进程号就可以杀掉该进程。
命令格式:
kill[参数][进程号]
命令参数:
-l 信号,如果不加信号的编号参数,则使用“-l”参数会列出全部的信号名称
-a 当处理当前进程时,不限制命令名和进程号的对应关系
-p 指定kill 命令只打印相关进程的进程号,而不发送任何信号
-s 指定发送信号
-u 指定用户
应当注意的是:信号使进程强行终止,这常会带来一些副作用,如数据丢失或者终端无法恢复到正常状态。发送信号时必须小心,只有在万不得已时,才用kill信号(9),因为进程不能首先捕获它。要撤销所有的后台作业,可以输入kill 0。因为有些在后台运行的命令会启动多个进程,跟踪并找到所有要杀掉的进程的PID是件很麻烦的事。这时,使用kill 0来终止所有由当前shell启动的进程,是个有效的方法。
例1.kill -l (列出所有信号名称)
例2.得到指定信号的数值
例3.先用ps查找进程,然后用kill杀掉
#ps auv|grep 10954
#kill 10954
此处,该进程已经被杀掉,所以找不到该进程。
例4.彻底杀死进程
命令:kill -9 3268
#ps aux|grep 3268#kill -9 3268
二,killall
Linux系统中的killall命令用于杀死指定名字的进程(kill processes by name)。只要输入进程的名称,就可以杀掉相同名称的所有进程。
命令格式:
killall[参数][进程名]
命令功能:
用来结束同名的的所有进程
命令参数:
-Z 只杀死拥有scontext 的进程
-e 要求匹配进程名称
-I 忽略小写
-g 杀死进程组而不是进程
-i 交互模式,杀死进程前先询问用户
-l 列出所有的已知信号名称
-q 不输出警告信息
-s 发送指定的信号
-v 报告信号是否成功发送
-w 等待进程死亡
–help 显示帮助信息
–version 显示版本显示
例1.杀死所有同名进程
命令:
killall vi
输出:
[root@localhost ~]#ps -ef|grep viroot 17581 17398 0 17:51 pts/0 00:00:00 vi test.txtroot 17611 17582 0 17:51 pts/1 00:00:00 grep vi[root@localhost ~]# ps -ef|grep viroot 17581 17398 0 17:51 pts/0 00:00:00 vi test.txtroot 17640 17612 0 17:51 pts/2 00:00:00 vi test.logroot 17642 17582 0 17:51 pts/1 00:00:00 grep vi[root@localhost ~]# killall vi[root@localhost ~]# ps -ef|grep viroot 17645 17582 0 17:52 pts/1 00:00:00 grep vi
例2.把所有的登录后的shell给杀掉
命令:
killall -9 bash
输出:
[root@localhost ~]# w18:01:03 up 41 days, 18:53, 3 users, load average: 0.00, 0.00, 0.00USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATroot pts/0 10.2.0.68 14:58 9:52 0.10s 0.10s -bashroot pts/1 10.2.0.68 17:51 0.00s 0.02s 0.00s wroot pts/2 10.2.0.68 17:51 9:24 0.01s 0.01s -bash[root@localhost ~]# killall -9 bash[root@localhost ~]# w18:01:48 up 41 days, 18:54, 1 user, load average: 0.07, 0.02, 0.00USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATroot pts/0 10.2.0.68 18:01 0.00s 0.01s 0.00s w[root@localhost ~]#
说明:运行命令:killall -9 bash 后,所有bash都会被卡掉了,所以当前所有连接丢失了。需要重新连接并登录。
注意:init进程是不可杀的。
init是Linux系统操作中不可缺少的程序之一。所谓的init进程,它是一个由内核启动的用户级进程。内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。所以,init始终是第一个进程(其进程编号始终为1)。 其它所有进程都是init进程的子孙。init进程是不可杀的!
- Linux命令(2):kill&killall
- linux 命令:kill and killall
- linux命令:kill、killall、pkill、xkill
- kill命令&&killall命令
- Linux kill, killall, kill -9
- Linux kill, killall, kill -9
- Linux kill, killall, kill -9
- Linux kill, killall, kill -9
- Linux kill, killall, kill -9
- Linux kill, killall, kill -9
- Linux kill, killall, kill -9
- Linux kill, killall, kill -9
- Linux kill, killall, kill -9
- Linux kill, killall, kill -9
- Linux kill, killall, kill -9
- Linux进程控制命令之kill与killall
- Linux中kill,pkill,killall和xkill命令汇总讲解
- Linux杀死进程命令kill,pkill,killall,xkill
- qt之正则表达式
- iOS xib或者sb 添加控件的圆角,边框,及边框颜色
- C/C++宏定义中的do{...} while(0)
- 性能测试新手误区(二):为什么我模拟的百万测试数据是无效的
- 一些好用的网页 存一下哈哈哈哈
- Linux命令(2):kill&killall
- 数据库设计三范式
- Python中的property() 函数 和@property 装饰符
- 精述字符编码(读这篇绝对不够)
- 欢迎使用CSDN-markdown编辑器
- Java 语言实现清除带 html 标签的内容
- Mariadb和mysql那点事儿 截取
- Windows平台下IDEA中git出现could not read from remote repository解决方案
- html之框架的使用