一、五大系统运维状态

对运维来说,查看系统运行状态是最基础的工作之一。
要了解CPU、内存、进程、磁盘、网络,这五大运维系统的运行状态,需要掌握的运维命令有ls、ps、free、top、uptime、ifconfig、su/sudo、dmesg、iostat、vmstat、sar、htop、iotop、smem等命令。

二、内存状态检测工具

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

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

要显示系统中每个进程的占用内存状态,可执行如下图指令(smem -k -s uss):

上图中,"-k"参数用来显示内存单位,"-s"是排序,uss是对uss列进行排序,这样,就输出了系统中所有进行占用的内存大小,非常清晰明白。
smem还支持以百分比形式显示每个进程占用系统内存的比率(smem -p -s uss),如下图所示:

其中,"-p"表示以百分比的形式报告内存使用情况,这样每个进程占用的系统内存比重一目了然。
smem还可以显示系统中每一个用户的内存使用情况(smem -u -k),如下图所示:

其中,"-u"表示显示用户占用内存信息。
最后,smem还支持查看某个进程占用内存大小,例如:

smem -P nginx
smem -k -P nginx

由此可知,通过smem,对每个进程占用的内存资源可以很轻松的获取。

三、CPU/内存占用进程

这个应用需求在服务器的问题排查和故障处理上使用率非常高,要获取这些信息,只需要一些命令组合即可实现,可以说非常简单。
首先,获取当前系统占用CPU最高的前10个进程最简单的方式是通过ps命令组合实现,例如:

[root@localhost ~]# ps aux | head -1
[root@localhost ~]# 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行数据。

四、清除僵尸过程

一个僵尸进程产生的过程是:父进程调用 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 命令相关推荐

  1. linux僵尸进程杀不掉,杀死僵尸进程,你需要这些神奇高效的 Linux 命令

    原标题:杀死僵尸进程,你需要这些神奇高效的 Linux 命令 Linux高手,其实都是玩儿命令行很熟练的人. 命令行的学习捷径 Linux命令有许多强大的功能:从简单的磁盘操作.文件存取,到进行复杂的 ...

  2. linux 查当前pid_杀死僵尸进程,你需要这些神奇高效的Linux命令行

    Linux 高手,其实都是玩儿命令行很熟练的人. 命令行的学习捷径 Linux 命令有许多强大的功能:从简单的磁盘操作.文件存取,到进行复杂的多媒体图像和流媒体文件的制作,都离不开命令行. 在 Lin ...

  3. 【Linux高效小trick】Linux下杀死僵尸进程,释放GPU内存,让代码全速运行~

    问题描述 在自己电脑上或Linux服务器上是不是经常看到这个页面,进程很多,但是进入进程详细信息就会发现明明进程老早就停止了,但是还是在占用内存???强迫症的真受不了,还影响把自己深度下去!!!下面的 ...

  4. linux如何kill僵尸进程,linux 如何杀死僵尸进程——原理及操作

    linux 如何杀死僵尸进程 Posted on 2011 年 9 月 20 日 by Open-Source In UNIX System terminology, a process that h ...

  5. linux 识别僵尸进程,Linux上寻找并杀死僵尸进程

    转载: http://blog.csdn.net/shanzhizi/article/details/47320595 linux服务器上,多少会出现一些僵尸进程,下面介绍如何快速寻找和消灭这些僵尸进 ...

  6. linux杀死僵尸进程

    linux杀死僵尸进程 输入ps查看所有进程的pid 输入kill -9 pid杀死目标进程

  7. linux系统僵尸进程杀死,如何在Linux上杀死僵尸进程

    是什么导致Linux上的僵尸进程? 写得不好的父进程可能不会调用该wait()创建子进程时, 函数. 这意味着没有任何东西在监视子进程中的状态变化,并且该SIGCHLD信号将被忽略. 或者,可能是由于 ...

  8. Linux查找并杀死僵尸进程

    1.查看系统是否有僵尸进程 使用Top命令查找,当zombie前的数量不为0时,即系统内存在相应数量的僵尸进程. 2.定位僵尸进程 使用命令ps -A -ostat,ppid,pid,cmd |gre ...

  9. java 杀死僵死的线程_Ubuntu中找到并杀死僵尸进程

    Ubuntu中产生zombie进程让人很懊恼啊.Windows中在任务管理器里直接找到无响应的进程并结束他就行了,但是ubuntu中需要用命令去解决. System information as of ...

最新文章

  1. python机器学习入门(Day11:ANN)
  2. tcp协议timestamp字段导致问题分析
  3. 计算机上能玩vr游戏吗,VR设备是什么? 听说可以用来玩电脑游戏的?
  4. HTTP请求与接收get/post方式
  5. 【控制】《现代控制理论》谢克明老师-第3章-线性控制系统的能控性和能观测性
  6. 连接端口 配置hive_Hadoop大数据平台数据仓库Hive管理操作
  7. UOJ #277 BZOJ 4739 定向越野 (计算几何、最短路)
  8. IE6不能用gzip压缩脚本,一个流毒甚广的谣言
  9. 最小生成树——安慰奶牛(蓝桥杯试题集)
  10. 两大开源硬件之树莓派与a_开源硬件之美
  11. 获取本周的周一和周日
  12. 【每日算法Day 61】LeetCode 672. 灯泡开关 Ⅱ
  13. 论文笔记_知名期刊与会议_CV_SLAM_3D Reconstruction
  14. Atitit 数据存储的数据表连接attilax总结
  15. linux系统镜像下载
  16. 分享个最终幻想勇气启示录脚本,手游上能一键推图自动升级
  17. 国产CAD_手机也能看CAD图纸了?国产软件助力CAD告别电脑时代!
  18. 2020年中国轴承套圈行业市场现状分析,国内市场格局十分分散「图」
  19. 醉枕江山第五十二章 公主中的公主
  20. Ps 初学者教程「63」如何在 Ps 中制作 GIF 动画?

热门文章

  1. 如何通过查看硬件厂商ID和设备ID来查找驱动
  2. php充值代码,腾讯充值示例代码
  3. windows 7 注册表启动项位置
  4. ADUM1400CRWZ-RL四通道数字隔离器ADI 4/0通道定向性
  5. 《阿弥陀佛么么哒》读后感
  6. gitignore 忽略特定文件
  7. 苹果cms去掉链接index.php,如何去除苹果cms链接中的index.php
  8. 为什么brave 浏览器没有收益
  9. Ta 的朋友圈,“凡尔赛”了一整年
  10. visual studio 和visual studio code 的区别是什么?