linux进程管理

Posted 遙遙背影暖暖流星

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux进程管理相关的知识,希望对你有一定的参考价值。

一、进程的简单介绍
进程:由操作系统定义,并由操作系统所操控的一个特殊的数据结构实例叫做进程。它连接了用户代码,拥有代码运行所需的独立内存空间,在调度器的调度下使用分配给它的处理器时间片来运行。
在这里插入图片描述

进程状态
运行态R:运行、就绪时。
可中断休眠状态s:意味进程在等待事件完成。
不可终端休眠状态D:通常这个状态进程会等待IO结束。
停止状态T:不做任何事,也不休眠。ctrl+z
僵死状态Z:进程已经退出,但是资源没有完全释放。kill无法杀死,可用kill -9强杀。

僵死状态
当进程退出并且父进程没有读取到子进程退出的返回代码时就会产生僵死进程。
僵死进程会以终止状态保持在进程表中,并且会一直等待父进程读取退出状态代码。
产生原因:子进程先于父进程退出,为了保存退出原因,资源没有被完全释放,这是通知父进程去获取子进程退出原因,再释放子进程资源:如果父进程并未关注子进程退出状态,子进程就会成为僵尸进程。
危害;资源泄漏。
避免:进程等待。
处理:退出父进程。

孤儿进程
原因:父进程先于子进程退出
结果:子进程运行在后台孤儿,被1号init进程领养。
孤儿进程退出不会变成僵尸进程。

守护进程/精灵进程:特殊的孤儿进程(在孤儿进程的基础上,脱离终端,脱离登录会话)(通常运行在后台默默工作,)

二、ps 命令查看进程
ps命令查找与进程相关的PID号:
ps a 显示现行终端机下的所有程序,包括其他用户的程序。
ps x 显示所有程序,不以终端机来区分。
ps u 以用户(终端)为主的格式来显示程序状况。
ps -e 。 显示所有程序
ps f 用ASCII字符显示树状结构,表达程序间的相互关系。

ps -l:使用长(Long)格式显示进程信息
ps -o 进程的某个内容:只显示所有进程的某个内容(ps -o user,pid 看进程的user和pdi)

ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
ps -A 显示所有程序。此参数的效果和指定"-e"参数相同
ps e 列出程序时,显示每个程序所使用的环境变量。
ps -H 显示树状结构,表示程序间的相互关系。
ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
ps s 采用程序信号的格式显示程序状况。
ps S 列出程序时,包括已中断的子程序资料。
ps -t<终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。

最常用的方法是ps aux,然后再通过管道使用grep命令过滤查找特定的进程,然后再对特定的进程进行操作。
ps aux | grep program_filter_word,
ps -ef |grep tomcat
ps -efl #长格式下,可以看到优先值
ps -ef|grep java|grep -v grep 显示出所有的java进程,去处掉当前的grep进程。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
ps -eo user,pid,stat | grep Z #查看过滤出僵尸进程

总结
ps -ef指令:查看所有进程信息。
ps -aux指令:更详细信息。cpu、内存、虚拟内存、物理内存使用率。
其他特殊需要看具体要求选择

三、top 的指令
top可以实时监控,每三秒更新一次,而ps的只能看瞬间的cpu的利用率

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
按z改变颜色
在这里插入图片描述
常用指令 top -d 5 -n 3 #top的刷新时间-d 5秒,-n次数为2
四,pgrep 过滤查看
pgrep -l 进程名 #看指定进程和它的进程号

pgrep -u 用户名 -l #看属于用户下的正在进行进程
在这里插入图片描述
在这里插入图片描述
五,pstree 看进程树
pstree
在这里插入图片描述
ps -ef下可以看到有一列是用户
在这里插入图片描述

pstree -l -u 用户名 #看该用户下的进程的父子关系
在这里插入图片描述

pstree -p #看进程数并显示对应pid
六,kill 杀进程
psgrep -l 进程 # 先看到进程的进程号
kill 进程号# 杀死该进程
kill -9 进程号 #强杀进程,so残忍
kill -l # 可以查看所有信号,常用信号有1,9,15,分别代表重启,杀死,完美终止
kill -9 %进程号 #关闭后台进程
killall +名称 #kill vim, 杀死vim所有进程
pkill -9 - f“ ping 8.8.8.8” #杀死指令,是指令不能使用
在这里插入图片描述
七,jobs,fg,bg,前后台的进程管理
jobs 看开台进程
vim jerry & #进行vim时,将其放在后台运行=命令行模式的ctrl 加z
fg 1 #将后台第一个进程转为前台
bg 1 #在后台恢复运行

以上是关于linux进程管理的主要内容,如果未能解决你的问题,请参考以下文章

linux c 退出进程的代码

Linux进程管理

Linux系统管理10——进程和计划任务管理

Linux中的进程管理

Linux进程和计划任务管理

Linux进程和任务管理