没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
内容概要:本文详细介绍了 Linux 命令的组合应用,涵盖了四个主要方面:查询进程线程数、检测并处理僵尸进程、获取占用 CPU 或内存最多的进程、文件的连接、合并、排序与去重。具体包括通过 for 循环结合 ps 和 sort 命令查询 Java 进程线程数;使用 ps 和 egrep 查找僵尸进程并通过 kill 命令批量删除;利用 ps、sort 和 head 获取占用 CPU 或内存最高的进程;以及通过 join、paste、sort 和 uniq 命令实现文件的连接、合并、排序和去重。每个命令组合都附有详细的参数解释和示例,帮助读者理解其工作原理和应用场景。 适合人群:具备一定 Linux 操作系统基础知识的运维工程师、系统管理员和技术爱好者。 使用场景及目标:①服务器性能监控与优化,如快速定位高 CPU 或内存占用的进程;②系统故障排查,特别是处理僵尸进程等异常情况;③日常文件处理任务,如文件内容的连接、合并、排序和去重,提高工作效率。 其他说明:本文不仅提供了具体的命令组合及其应用,还深入解析了每个命令的工作机制和参数设置,帮助读者不仅知其然,更知其所以然。建议读者在实践中多加尝试,结合实际需求灵活运用这些命令组合,以达到最佳效果。
资源推荐
资源详情
资源评论































第六篇《命令的组合使用》
6.1、查询当前整个系统每个进程的线程数
我们经常遇到这样的问题,比如某台服务器的 CPU 使用率飙升,通过 top 命令查看是
某个程序(例如 java)占用的 cpu 比较大,现在需要查询 java 各个进程下的线程数情况。
可以通这一个命令组合实现:
[root@localhost ~]# for pid in $(ps -ef|grep -v grep|grep "java"|awk '{print $2}');do
echo ${pid} > /tmp/a.txt ;cat /proc/${pid}/status|grep Threads > /tmp/b.txt;paste
/tmp/a.txt /tmp/b.txt;done|sort -k3 –rn
11133 Threads: 51
先解释下这个脚本:
1)、for pid in $(ps -ef|grep -v grep|grep java |awk '{print $2}')
这部分是获取${pid}变量为 java 进程的 pid 号。
2)、echo ${pid} > /tmp/a.txt
这 部 分 是 将 java 进 程 的 pid 号 都 打 印 到 /tmp/a.txt 文 件 中 。

3)、cat /proc/${pid}/status|grep Threads > /tmp/b.txt
这部分是将各个 pid 进程号下的线程信息打印到/tmp/b.txt 文件中。
4)、paste /tmp/a.txt /tmp/b.txt
这部分是以列的形式展示 a.txt 和 b.txt 文件中的信息。
5)sort -k3 -rn
这部分是对输出的信息进行排序,其中,-k3 表示以第三列进行排序,“ -rn”表示降序
排列。将上面命令组合放入系统执行完毕后,输入内容如下:
~]囊
for
pid
in
S(pS ef|g 薹 ep
v
grep|g 薹 ep ”java”|a‖k {pt1nt S2}):do
echo
s{p 主 d}
〉
/Cmp/aCxC :cat /proc/${p1d}/Status|grep
Thread8 >
/t 辽【p/btxt:pa3te /t′覃
!p/at 二 xt /t 皿 p/btxt 麦 done|sort
k3 rn
4589 ThreadS: 280
18265 Th 薹 ead8: 131
12277 ThreadS: 68
6685 Th 薹 ead8: 45
从输出可以看出,第一列显示的是 java 的进程号,最后一列显示的每个 java 进程对应
的线程数量。这个例子是一个 for 循环加上 ps 命令和 sort 命令综合应用的实例。
6.2、如何检测系统中的僵尸进程并 kill 掉
要查找系统中的僵尸进程,有多种方法,这里给出一种命令行探测僵尸进程的方法:
[root@localhost ~]# ps -e -o stat,ppid,pid,cmd | egrep '^[Zz]'
Z 10808 10812 [java] <defunct>
介绍下用到的几个参数:
-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 命令。
其实这个命令组合是将僵尸进程的父进程杀掉,进而关闭僵尸进程的,为什么要这么做
呢,其实一般僵尸进程很难直接用 kill 杀死,因为僵尸进程已经是死掉的进程,它不能再接
收任何信号。所以,需要通过 kill 僵尸进程的父进程,这样父进程杀掉后,僵尸进程就成了”
孤儿进程,” 而所有的孤儿进程都会交给系统的 1 号进程(init 或 systemd)收养,1 号进
程会周期性地去调用 wait 系统调用来清除这些僵尸进程。因此,我们可以发现,父进程杀
掉之后,僵尸进程也跟着消失,其实是 1 号进程作用的结果!
6.3、如何查看当前占用 CPU 或内存最多的几个进程
这个应用需求在服务器的问题排查和故障处理上使用率非常高,要获取这些信息,只需
要一些命令组合即可实现,可以说非常简单。
( 1 ) 、 获 取 当 前 系 统 占 用 CPU 最 高 的 前 10 个 进 程
剩余13页未读,继续阅读
资源评论


奔向理想的星辰大海

- 粉丝: 9980
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 酒店电气系统安全用具管理规定.doc
- 数据库安全审计技术及应用探讨.docx
- 某供电公司能力素质(项目管理)模型.doc
- 智慧城市规划设计探讨.docx
- 项目管理融资模式.doc
- 基于单片机交通灯方案设计书[2].doc
- 电子商务上机实习标准答案.doc
- 与计算机视觉相关的各类技术操作方法
- 电子科技大学(UESTC)计算机视觉与模式识别研究方向 电子科技大学(UESTC)计算机视觉及模式识别领域探索 UESTC(电子科技大学)计算机视觉与模式识别学科方向 UESTC(电子科技大学)计算机
- 《计算机组装与维护技术》课程教学的研究与探讨.docx
- 公共事业管理专业“公共政策学”课程教学探讨的论文-计算机网络论文.docx
- 可转位球头立铣刀的建模与基于实例推理的CAD系统开发与研究.doc
- 项目信息化工程管理培训.ppt
- SDM241大规模软件开发过程与研发管理.ppt
- 善用大数据提升城市治理现代化水平.docx
- 高校校园网络与信息安全管理工作的实践与探索.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
