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

命令行的学习捷径

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

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

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

5 大系统运维状态

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

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

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

典型 Linux 命令行

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

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

内存状态检测工具

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

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

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

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

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

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

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

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

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

smem -P nginx smem -k -P nginx 

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

CPU/内存占用进程

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

首先,获取当前系统占用 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 行数据。

清除僵尸过程

一个僵尸进程产生的过程是:父进程调用 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 查当前pid_杀死僵尸进程,你需要这些神奇高效的Linux命令行相关推荐

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

    一.五大系统运维状态 对运维来说,查看系统运行状态是最基础的工作之一. 要了解CPU.内存.进程.磁盘.网络,这五大运维系统的运行状态,需要掌握的运维命令有ls.ps.free.top.uptime. ...

  2. linux上寻找并杀死僵尸进程

    linux 服务器上,多少会出现一些 僵尸进程 ,下面介绍如何快速寻找和消灭这些僵尸进程的方法 首先,我们可以用top命令来查看服务器当前是否有僵尸进程,在下图中可以看到僵尸进程数的提示,如果数字大于 ...

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

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

  4. linux上怎么杀死僵尸进程,Linux入门知识:杀死僵尸进程

    Linux并不把进程的树形结构导出给普通用户,然而在内核中,它却使用树形结构来管理进程.linux内核使用"子进程退出,父进程收尸,父进程退出,子进程被过继"这种方式来管理进程的死 ...

  5. linux使用管道显示某一进程的运行情况,pv - 显示当前在命令行执行的命令的进度信息,管道查看器...

    补充说明 pv命令 Pipe Viewer 的简称,由Andrew Wood 开发.意思是通过管道显示数据处理进度的信息.这些信息包括已经耗费的时间,完成的百分比(通过进度条显示),当前的速度,全部传 ...

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

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

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

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

  8. linux杀死僵尸进程

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

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

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

最新文章

  1. thinkpad 61系机器(T61 X61/X61S R61)休眠掉电问题解决办法
  2. Java基础知识回顾之四 ----- 集合List、Map和Set
  3. jquery学习——选择器
  4. mysql 8.14 rpm安装_centos8 安装 mysql8
  5. Keras:保存模型并载入模型继续训练
  6. iOS中如何优化Cell中图片的下载性能
  7. vue 获取url地址的参数_2020年 vue常见面试问题总结(干货)!
  8. android内存及内存溢出分析
  9. FlashPaper安装及使用方法
  10. 浏览器端的九种缓存机制介绍
  11. Bootstrap-分页插件Paginator
  12. atitit.常用编程语言的性能比较 c c++ java
  13. Bat To Exe Converter将bat转换为exe的方法
  14. win7误删文件怎么恢复?
  15. 名字里有计算机里没有的字体大小,公安13000字的庞大字库打不出这些字 五市民名字让电脑“犯晕”...
  16. (附源码)springBoot高校宿舍交电费系统 毕业设计 031552
  17. 30000台苹果电脑遭恶意软件入侵,包括最新的M1系列!
  18. 思考型人格分析,思考型人格的职业发展方向
  19. win11怎么看电脑显卡信息
  20. 自动驾驶仿真软件SCANeR studio(初级练习1):scenario构建之driver模式理解

热门文章

  1. mysql ddl dql_mysql DDL、DML、DCL、DQL区分
  2. 1093芯片做正弦波逆变器_正弦波逆变器中的SPWM调制(钟任生)
  3. mysql 5.0 数据库_mysql5.0常用命令
  4. html页面通过特殊链接:打电话,发短信,发邮件详细教程
  5. 前端面试题Vue-cli目录汇总
  6. 前端学习(3307):函数组件usermemo和usercallback三
  7. Leetcode刷题(5)最长公共前缀
  8. Taro+react开发(8)--控制跳转
  9. react学习(58)--this.props进行父子传值
  10. [html] 你写一个页面需要多长时间?