一、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 多进程的