一、ps -ef
命令
1、ps -ef
查询运行进程
2、ps -ef
通过管道检索某个进程名称查询
3、ps -ef
查询并过滤进程id
ps -ef | grep find | grep -v grep | cut -c 9-15
4、ps -ef
查询并过滤进程id,并杀死该进程
ps -ef | grep find | grep -v grep | cut -c 9-15 | xargs kill -9
如果权限不足的话,尝试加上sudo
ps -ef | grep find | grep -v grep | cut -c 9-15 | xargs sudo kill -9
说明:
- “grep find”的输出结果是,所有含有关键字“find”的进程。
- “grep -v grep”是在列出的进程中去除含有关键字“grep”的进程。
- “cut -c 9-15”是截取输入行的第9个字符到第15个字符,而这正好是进程号PID。
- “xargs kill -s 9”中的xargs命令是用来把前面命令的输出结果(PID)作为“kill -s 9”命令 的参数,并执行该命令。“kill -s 9”会强行杀掉指定进程。
5、改进
ps -ef | grep find | awk '{print $2}' | xargs kill -9
6、再用命令回查,发现已经kill了
二、ps -aux
命令
ps -aux
是显示所有进程和其状态:
其余的检索方式跟ps -ef
差不多,可以直接将 ps -ef
命令替换成 ps -aux
。
三、kill 命令
作用是结束进程
1、kill
- 作用:根据进程号杀死进程
- 用法:kill [信号代码] 进程PID
- 注意:kill -9 来强制终止退出
特殊用法:
- kill -STOP [PID]:停止一个进程,而并不消灭这个进程。
- kill -CONT [PID]:重新开始一个停止的进程。
- kill -KILL [PID]:强迫进程立即停止,并且不实施清理操作。
- kill -9 -1:终止你拥有的全部进程。
2、killall
- 作用:通过程序的名字,直接杀死所有进程
- 用法:killall 正在运行的程序名
- 如killall -9 firefox
3、pkill
- 作用:通过程序的名字,直接杀死所有进程
- 用法:#pkill 正在运行的程序名
- 如 pkill firefox
四、ps aux
、ps -aux
、ps -ef
命令的区别
1、aux
:
- ps a 显示现行终端机下的所有程序,包括其他用户的程序
- ps u 以用户为主的格式来显示程序状况
- ps x 显示所有程序,不以终端机来区分。
所以,ps aux
就是打印所有进程。
2、-aux
ps -aux 不同于ps aux
。POSIX和UNIX的标准要求ps -aux
打印用户名为”x”的用户的所有进程,以及打印所有将由-a选项选择的过程。如果用户名为”x”不存在,ps的将会解释为ps aux
,而且会打印一个警告。这种行为是为了帮助转换旧脚本和习惯。它是脆弱的,即将更改,因此不应依赖。
如果你运行ps -aux >/dev/null
,那么你就会得到下面这行警告信息:
Warning: bad ps syntax, perhaps a bogus ‘-‘? See http://procps.sf.net/faq.html
3、-ef
- ps -e 此参数的效果和指定”A”参数相同
- ps -A 显示所有程序
所以,ps -ef
也是打印所有进程。
4、 ps -ef
和ps -aux
的区别是:显示格式不同。
- UID:用户
- PID:pid
- PPID:父进程pid
- C:CPU使用率
- STIME:进程开始时间
- TTY:终端ID
- TIME:进程运行时间
- CMD:command
- USER: 进程拥有者
- PID: pid
- %CPU: 占用的 CPU 使用率
- %MEM: 占用的内存使用率
- VSZ: 占用的虚拟内存大小
- RSS: 占用的驻留集大小或者实际内存的大小,不包含已交换出去的大小,单位kbytes
- TTY: 终端ID
- STAT: 该进程的状态
- START: 进程开始时间
- TIME: 执行的时间
- COMMAND:所执行的指令
其中STAT: 该进程的状态有以下:
D 不可中断 Uninterruptible(usually IO)
R 正在运行,或在队列中的进程
S 处于休眠状态
T 停止或被追踪
Z 僵尸进程
W 进入内存交换(从内核2.6开始无效)
X 死掉的进程
< 高优先级
n 低优先级
s 包含子进程
+ 位于后台的进程组
l 多进程的