查看进程树的命令
pstree 能够清晰的表达程序之间的层级相互关系
在centos/Redhat系统linux中,需要单独安装此命令
yum install psmisc -y
pstree
pgrep命令:通过程序的名字去查询相关进程,一般用来判断进程是否存活
pgrep nginx
pgrep ssh # 输出ssh进程的id号,判断ssh是否存活
pgrep -u root # 输出与root用户相关的进程
pgrep -l ssh # 输出进程id号以及进程名
kill命令:发送相关信号给进程,达到不同的停止效果
kill的参数
-l 列出所有的杀死,终止信号
常用信号如下
- SIGHUP:挂起进程,终端突然掉线,用户突然退出
- SIGINT:中断信号,一般常用 ctrl + c 发送信号2
- SIGQUIT:退出信号,一般用 ctrl + \ 发送信号3
- SIGKILL:强制中断信号,一般用于立即杀死某些进程
- SIGTERM:kill默认使用的就是15信号,终止进程
- SIGTSTP:暂停进程,通常是组合键 ctrl + z 发出暂停信号
jobs查看在后台暂停的进程
ps -ef|grep vim
kill pid号 # 发送15信号,终止进程
kill -9 pid # 立即停止进程,危险命令,可以杀死所有的进程,如僵尸进程等
此时打开的vim编辑器就会被关掉
kill特殊信号之0
ps -ef | grep ping
kill -0 PID
echo $? # 取出上次shell执行的结果
kill的特殊信号0,常用在shell脚本中
kill -0 $PID
表示不发送任何信号给pid,但是会对这个pid进行检查 ,如果执行结果是0,表示此进程存在,如果结果为1,进程不存在(信号0可以判断,pid是否存在)
kill -0 pid # 进程id存在的话,不做任何事情,可以检测pid是否存活
echo $? # shell的特殊变量,取出上一次命令的执行结果,为0表示命令正确,不为0都是错误状态码
killall命令
kill杀死进程,只能杀死一个pid进程,通过killall可以直接通过名字杀死进程
killall vim # 杀死所有的vim进程
killall nginx # 终止所有的nginx进程
pkill命令
pkill可以通过进程名字杀死多个进程,killall杀死进程可能一次杀不死(进程可能含有子进程,killall要杀死多次)。pkill可以直接杀死父进程和子进程
pkill nginx # 杀死所有的nginx进程
pkill ping # 杀死所有ping进程
通过终端的名字杀死进程
tty显示当前终端的名字,w显示登录这台机器所有的终端的名字
pkill -t pts/2 或 pkill -9 -t pts/2
-t表示指定终端的名字
网友评论