1进程 ppid_杀死僵尸进程,你需要这些神奇的Linux命令行

Linux高手,其实都是玩儿命令行很熟练的人。

5042b9745092dccfc2b3701ae0d30a85.png

6cce17275da7be96dc53a1a7aa171e99.png命令行的学习捷径24c3994cf0aae48d7aff11c6dc0966e4.png

Linux命令有许多强大的功能:从简单的磁盘操作、文件存取,到进行复杂的多媒体图像和流媒体文件的制作,都离不开命令行。

在Linux的学习中,新手都会遇到这么一个问题2fffd8358d660f81ab51aaaaa7e33588.png:自己对系统的每个命令都很熟悉,但是在系统出现故障的时候,就无从下手了。

说到底,就是学习的理论知识没有很好地与系统实际操作相结合。

6cce17275da7be96dc53a1a7aa171e99.png5大系统运维状态24c3994cf0aae48d7aff11c6dc0966e4.png

对运维来说,查看系统运行状态是最基础的工作之一。

要了解CPU、内存、进程、磁盘、网络,这五大运维系统的运行状态,需要掌握的运维命令有ls、ps、free、top、uptime、ifconfig、su/sudo、dmesg、iostat、vmstat、sar、htop、iotop、smem等命令。

这些命令有的非常简单,不做过多介绍,重点介绍几个高效、神奇的命令,它能帮助我们快速了解系统运行状态,绝对是运维神器。

6cce17275da7be96dc53a1a7aa171e99.png典型Linux命令行24c3994cf0aae48d7aff11c6dc0966e4.png

Linux使用到了虚拟内存,因此要准确的计算一个进程实际使用的物理内存就不是那么简单。

Smem 是一款命令行下的内存使用情况报告工具,它能够给用户提供 Linux 系统下的内存使用的多种报告。

6cce17275da7be96dc53a1a7aa171e99.png内存状态检测工具24c3994cf0aae48d7aff11c6dc0966e4.png

要安装smem这个工具,需要在系统上安装EPEL软件源,安装过程如下:

[root@localhost ~]# yum install epel-release[root@localhost ~]# yum install smem python-matplotlib python-tk

要显示系统中每个进程的占用内存状态,可执行如下图指令:

e2b232659a8f227063903d0a527f00ba.png

上图中,“-k”参数用来显示内存单位,“-s”是排序,uss是对uss列进行排序,这样,就输出了系统中所有进行占用的内存大小,非常清晰明白。

smem还支持以百分比形式显示每个进程占用系统内存的比率,如下图所示:

c62ef60b7eaa077b0e614f1653456543.png

其中,“-p”表示以百分比的形式报告内存使用情况,这样每个进程占用的系统内存比重一目了然。

smem还可以显示系统中每一个用户的内存使用情况,如下图所示:

aadb5014e61326405e5e3c9a85c63f05.png

其中,“-u”表示显示用户占用内存信息。

最后,smem还支持查看某个进程占用内存大小,例如:

smem -P nginx 

smem -k -P nginx

由此可知,通过smem,对每个进程占用的内存资源可以很轻松的获取。绝对是运维必备工具。

6cce17275da7be96dc53a1a7aa171e99.pngCPU/内存占用进程24c3994cf0aae48d7aff11c6dc0966e4.png

这个应用需求在服务器的问题排查和故障处理上使用率非常高,要获取这些信息,只需要一些命令组合即可实现,可以说非常简单。

首先,获取当前系统占用CPU最高的前10个进程最简单的方式是通过ps命令组合实现,例如:

[root@localhost ~]# ps aux|head -1;ps aux|sort -rn -k3|head -10

其中,第一句主要是为了获取标题(USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND)信息。而“head:-N”可以指定显示的行数,默认显示10行。

第二个命令是一个输出加排序组合,ps参数的a指代all,表示所有的进程,u指代user id,就是执行该进程的用户id,x指代显示所有程序,不以终端机来区分。

接下来是sort命令,其中:r指代reverse,这里是指反向比较结果,输出时默认从小到大,反向后从大到小。n指代numberic sort,根据其数值排序。k代表根据哪一列进行排序,后面的数字3表示按照第3列排序。本例中,可以看到%CPU在第3个位置,因此k3表示根据%CPU的数值进行由大到小的排序。

接下来的“|”为管道符号,将查询出的结果导到下面的命令中进行下一步的操作。
最后的“head -10”命令获取默认前10行数据。

6cce17275da7be96dc53a1a7aa171e99.png清除僵尸过程24c3994cf0aae48d7aff11c6dc0966e4.png

一个僵尸进程产生的过程是:父进程调用fork创建子进程后,子进程运行直至其终止,它立即从内存中移除,但进程描述符仍然保留在内存中。

要查找系统中的僵尸进程,有多种方法,这里给出一种命令行探测僵尸进程的方法:

[root@localhost ~]# ps -e -o stat,ppid,pid,cmd | egrep  \\\\\\\'^[Zz]\\\\\\\'Z    10808 10812 [java]

介绍下几个参数:

-e:参数用于列出所有的进程

-o:参数用于设定输出格式,这里只输出进程的stat(状态信息)、ppid(父进程pid)、pid(当前进程的pid),cmd(即进程的可执行文件。

egrep:是linux下的正则表达式工具

\\\\\\\'^[Zz]\\\\\\\':这是正则表达式,^表示第一个字符的位置,[Zz],表示小写z或者大写的Z字母,即表示第一个字符为Z或者z开头的进程数据,只所以这样是因为僵尸进程的状态信息以Z或者z字母开头。

找到僵尸进程的pid后,直接通过”kill -9 pid“命令杀掉即可,但是如果僵尸进程很多的话,就会很繁琐,因此,还需要一个批量删除僵尸进程的办法:

[root@localhost ~]# ps -e -o stat,ppid,pid,cmd | grep -e \\\\\\\'^[Zz]\\\\\\\' | awk \\\\\\\'{print $2}\\\\\\\' | xargs kill -9

这是个命令组合,通过管道实现命令的组合应用。

“grep -e”相当于egrep命令。

“awk \\\\\\\'{print $2}\\\\\\\' ”是将前面命令的输出信息进行过滤,仅仅输出第二列的值,而第二列就是进程的ppid。

“xargs kill -9”这是将得到的ppid传给“kill -9”作为参数,也就是kill掉这些ppid。xargs命令可以将标准输入转成各种格式化的参数,这里是将管道的输出内容作为参数传递给kill命令。

杀掉僵尸进程,这个是治标不治本的。真正的办法是,不让它产生。那么如何避免僵尸进程的产生呢?

更多内容可以报名高俊峰《Linux高级架构师》系统培训课程深入学习~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/498093.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PostgreSQL 常见操作

1、在命令行登录指定数据库 2、创建表 CREATE TABLE weather (city varchar(80),temp_lo int, -- low temperaturetemp_hi int, -- high temperatureprcp real, -- precipitationdate date ); …

大数据统计分析毕业设计_数据分析毕业设计 大数据可视化毕业设计

做大数据分析相关的毕业设计,有什么好的题目或方向推荐吗?毛台九大数据其它九大数据油业,三农,科研,人文,……打算用Python做毕业设计,可以做哪些方面的?Python做毕业设计&#xff0…

MultipartFile文件上传

一、配置文件&#xff1a; SpringMVC 用的是 的MultipartFile来进行文件上传 所以我们首先要配置MultipartResolver:用于处理表单中的file。在springmvc.xml中进行配置&#xff0c;目录结构如下&#xff1a; <!-- 配置MultipartResolver 用于文件上传 使用spring的CommosMul…

一个简单的 iBatis 实现——完整示例

表和数据&#xff1a; CREATE TABLE weather (city varchar(80),temp_lo int, -- low temperaturetemp_hi int, -- high temperatureprcp real, -- average temperaturedate date );insert int…

测绘技术设计规定最新版_公示 | 29家单位申报甲级测绘资质审查意见

关于北京同创天成工程勘测有限公司等29家单位申报甲级测绘资质审查意见的公示  根据《中华人民共和国测绘法》和《测绘资质管理规定》《测绘资质分级标准》(国测管发〔2014〕31号)&#xff0c;我部对北京同创天成工程勘测有限公司、北京麦格天宝科技股份有限公司、中友四达(北…

智能驾驶时代已经到来

来源&#xff1a;中国科学报 概要&#xff1a;智能化、电动化、轻量化&#xff0c;无疑是被业界公认的汽车的三大发展方向。其中&#xff0c;汽车的智能化&#xff0c;或者说智能驾驶最为引人关注。 智能化、电动化、轻量化&#xff0c;无疑是被业界公认的汽车的三大发展方向。…

@requestparam @param @pathvariable @requestbody的区别

requestParam注解 用来获取前台传递过来的参数&#xff0c;例如获取以下链接的参数&#xff1a; http://api.nc.com/api/item/category/list?pid0 public String Demo1(RequestParam String pid){ System.out.println(“链接中请求参数的id&#xff1a;”pid); return null; }…

PostgreSQL 的一个简单连接和查询操作——示例

表和数据&#xff1a; CREATE TABLE weather (city varchar(80),temp_lo int, -- low temperaturetemp_hi int, -- high temperatureprcp real, -- average temperaturedate date );insert int…

8s nfs 挂载文件_Kubernetes集群使用网络存储NFS

NFS存储NFS即网络文件系统Network File System&#xff0c;它是一种分布式文件系统协议&#xff0c;最初是由Sun MicroSystems公司开发的类Unix操作系统之上的一款经典网络存储方案&#xff0c;其功能是在允许客户端主机可以像访问本地存储一样通过网络访问服务端文件。Kuberne…

2030全球新出行产业报告:2.2万亿美元蛋糕将这样分

来源:智东西 概要:汽车与出行产业面临的电动化、智能化、共享化以及轻量化变革,已经成了全球共识。

insert插入语句设置主键id回滚

insert添加记录时&#xff0c;如果id在数据库表t_ss中设置为自增主键&#xff0c;往往如果最后一条记录是id47&#xff0c;但是当你把这条数据进行删除&#xff0c;再次添加&#xff0c;则这条记录就会成为id48的记录&#xff0c;使得数据库中的数据id不以自己所期望的那样成为…

实现pv uv统计_聊聊前端监控(二)--行为监控的技术实现

上一篇梳理了前端监控的主要场景和类型&#xff0c;从本文开始&#xff0c;讨论下我知道的一些技术实现。前端黑科技层出不穷&#xff0c;个人眼界有限&#xff0c;尽量把了解到的实现方式都罗列出来&#xff0c;希望对大家有些启发&#xff0c;同时也欢迎流言讨论。限于篇幅&a…

Science:揭示人类大脑进化机制

来源&#xff1a;细胞 概要&#xff1a;人类与其它灵长类动物的最大区别在于我们大脑的不同&#xff0c;这也是我们作为人类最特殊的标志之一。 人类与其它灵长类动物的最大区别在于我们大脑的不同&#xff0c;这也是我们作为人类最特殊的标志之一。 然而&#xff0c;人类与灵长…

Redis哨兵的详解

1 哨兵的作用 哨兵是redis集群架构中非常重要的一个组件&#xff0c;主要功能如下&#xff1a; 集群监控&#xff1a;负责监控redis master和slave进程是否正常工作消息通知&#xff1a;如果某个redis实例有故障&#xff0c;那么哨兵负责发送消息作为报警通知给管理员故障转移…

单元格格式_单元格格式的用法你知道吗~~

想了解excel吗&#xff1f;&#xff1f;&#xff1f; 想从小白变大神吗&#xff1f;&#xff1f;&#xff1f; 快来look look excel单元格格式的用处吧&#xff01;&#xff01;&#xff01;先来了解一下单元格格式的…

人工智能名人堂第54期 | 深度学习鼻祖:Geoffrey Hinton

来源&#xff1a;德先生 概要&#xff1a;近日&#xff0c;他因提出capsule 概念&#xff0c;推翻反向传播再次引发广泛关注与热议。 Geoffrey Hinton&#xff0c;被称为“神经网络之父”、“深度学习鼻祖”&#xff0c;他曾获得爱丁堡大学人工智能的博士学位&#xff0c;并且为…

strut2 相关

1、strut2 的Eclipse 插件地址&#xff1a;http://mvcwebproject.sourceforge.net/install.html#Perform_installation

raid 物理盘缓存状态_使用MegaCli工具查看Raid磁盘阵列状态

文章本身我不做过多修改了&#xff0c;在这里我就把自己在安装时候碰到的难点跟大家提下。1.何处下载&#xff1f;首先&#xff0c;根据文章中的路径已经下载不到相应的文件了&#xff0c;在此我们就自己到http://www.lsi.com的网站上去搜&#xff0c;尝试了各种组合最后终于用…

eureka和zookeeper的区别

首先我们先说下&#xff1a; RDBMS>&#xff08;MySql,Oracle,SqlServer等关系型数据库&#xff09;遵循的原则是&#xff1a;ACID原则&#xff08;A&#xff1a;原子性。C&#xff1a;一致性。I&#xff1a;独立性。D&#xff1a;持久性。&#xff09;。 NoSql> &#…

struts2 防止重复提交 与 进入等待画面

演示重复提交的错误&#xff1a; 相关文件&#xff1a; struts.xml <?xml version"1.0" encoding"UTF-8"?> <!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""http://struts.apache…