志在指尖
用双手敲打未来

linux查看进程(命令ps -ef详解)

linux查看进程

程序是保存在外部存储介质(如硬盘)中的可执行机器代码和数据的静态调集,而进程是在CPU及内存中处于动态执行状况的计算机程序。在Linux体系中,每个程序发动后能够创立一个或多个进程。例如,供给Web服务的httpd程序,当有很多用户一起拜访Web页面时,httpd程序可能会创立多个进程来供给服务。
程序保存在硬盘、光盘等介质中的可执行代码和数据
静态保存的代码
进程在CPU及内存中运转的程序代码
动态执行的代码
父、子进程
每个进程能够创立一个或多个进程
下面咱们将一起来学习检查进程信息及控制进程相关的操作指令。
一、检查进程
运用不同的指令工具能够从不同的角度检查进程状况。
常用的进程检查指令
1.ps指令——检查静态的进程计算信息(ProcessesStatistic)
常见的选项:
a:显现当时终端下的一切进程信息,包含其他用户的进程。
u:运用以用户为主的格局输出进程信息。
x:显现当时用户在一切终端下的进程。
-e:显现体系内的一切进程信息。
-l:运用长(long)格局显现进程信息。
-f:运用完好的(full)格局显现进程信息。
需求留意的是,有一部分选项是不带“-”前缀的(增加“-”前缀后意义可能会有收支)。习惯大将上述选项组合在一起运用,如,“psaux”或“ps-elf”
示例1:psaux将以简单列表的方式显现出进程信息。如下图
上图中的输出信息中,第1行为列表标题,其间各字段的意义描绘如下:
USER:发动该进程的用户账号称号
PID:该进程的ID号,在当时体系中是唯一的
TTY:该进程在哪个终端上运转。“?”表不知道或不需求终端
STAT:显现了进程当时的状况,如S(休眠)、R(运转)、Z(僵死)、<(高优先级)、N(低优先级)、s(父进程)、+(前台进程)。对处于僵死状况的进程应予以手动终止。
START:发动该进程的时刻
TIME:该进程占用CPU时刻
COMMAND:发动该进程的指令的称号
%CPU:CPU占用的百分比
%MEM:内存占用的百分比
VSZ:占用虚拟内存(swap空间)的巨细
RSS:占用常驻内存(物理内存)的巨细
示例2:ps-elf以长格局显现体系中的进程信息,包含更丰富的内容。大概意思都相同,PPID为父进程的PID。
示例3:ps直接执行不带任何选项,只显现当时用户会话中翻开的进程。
示例4:结合管道操作和grep指令进行过滤,用于查询某一个进程的信息。
2.top指令——检查进程动态信息
以全屏交互式的界面显现进程排名,及时盯梢包含CPU、内存等体系资源占用状况,默许状况下每三秒刷新一次,其作用基本类似于Windows体系中的使命管理器。
示例:
上图中输出信息开头部分相关信息的意义如下:
Tasks(体系使命)信息:total,总进程数;running,正在运转的进程数;sleeping,休眠的进程数;stopped,中止的进程数;zombie,僵死无响应的进程数。CPU信息:us,用户占用;sy,内核占用;ni,优先级调度占用;id,闲暇CPU;wa,I/O等候占用;hi,硬件中断占用;si,软件中断占用;st,虚拟化占用。了解闲暇的CPU百分比,主要看%id部分。Mem(内存)信息:total,总内存空间;used,已用内存;free,闲暇内存;buffers,缓存区域。Swap(交流空间)信息:total,总交流空间;used,已用交流空间;free,闲暇交流空间;cached,缓存空间。在top指令的全屏操作界面中,按P键依据CPU占用状况对进程列表进行排序,或按M键依据内存占用状况排序,按N键依据发动时刻进行排序,按h键能够获得top程序的在线协助信息,按q键能够正常地退出top程序。
若经过top排名工具发现某个进程CPU占用率非常高,需求终止该进程的运转时,能够在top操作界面按k键,然后在列表上方将会呈现“PIDtokill”的提示信息,依据提示输入指定进程的PID号并按enter键确认即可终止对应的进程。
(个人感觉没必要都记住清清楚楚,了解一下吧,知道大概意思就行,用的时候拉出来看看)
3.pgrep指令——依据特定条件查询进程PID信息
示例:
4.pstree指令——检查进程树,以树形结构列出进程信息python

linux命令ps-ef详解

作为运维工程师,需要对ps指令把握的更全面一些,但是作为开发工程师,在这个指令的运用过程中,侧重点可能会稍有不同。因而本文主要是结合开发的实际需要,从中提取总结了一些比较实用的参数,并结合procrank工具和top指令,进行了必定程度的扩展。
进程占用内存
在讲解ps指令的参数之前,有必要先介绍一下Linux对进程占用内存的计算根据。由于Linux中的进程是运用虚拟地址的,这些进程经过malloc()或者mmap()向内存请求内存之后(这部分内存巨细称为VSS-VirtualSetSize),内核并不会马上为其分配实际的物理内存。比及进程真正运用到内存时(比方调用了memset()函数),内核才会为这个进程分配物理内存,并建立虚拟地址和物理地址之间的映射(参阅这篇文章)。
计算这段分配的物理内存的巨细并不难,但是Linux中的进程是广泛运用同享的动态链接库的(后缀名为so-sharedobject),而动态链接库本身也是要占据物理内存的,那这部分内存应该算在哪个进程头上呢?
为此就出现了三种不同的计算方法(计算口径),一种是只计算进程本身占用的物理内存,完全不包括同享库所占用内存的USS(UniqueSetSize),一种是把同享库占用的内存直接加到每个进程头上的RSS(ResidentSetSize)。
USS和RSS的计算方法虽然简略,但显得不是那么合理,更公平一点的做法是把一个同享库占用的内存,分摊到运用了这个同享库的各个进程头上,称为PSS(ProportionalSetSize),相似于小区里面的“公摊面积”。
之所以说“相似”,是由于两者仍是存在必定的区别,公摊面积一般是依照房子的实际巨细乘以一个百分比取得,也便是说房子面积越大,公摊面积也越大,而PSS虽然是叫”Proportional”,但这名字其实是具有误导性的,它实际的做法是平分。比方一个同享库占用了3MiB的物理内存,有3个进程运用了这个库,那么摊派到每个进程头上的都是1MiB。房子建好后巨细就固定了,但进程本身占用的内存是动态变化的,按份额分摊就太麻烦了。
假设现在这3个进程中有一个被kill掉了,那么同享库这3MiB的内存就要分摊到另外2个还存活的进程上,此刻这个被kill的进程所开释的内存巨细就不是它的PSS,而是它的USS。
ps指令的参数
介绍完了进程占用内存的计算根据,接下来就能够结合各个参数,来检查ps指令输出的各种信息了。要显现所有的用户进程和内核线程,加上参数”-e”即可:
假如只想检查用户进程,则加上参数”u”或”l”。”u”和”l”都能够显现VSZ(即VSS),RSS和执行时间计算,此外”u”还能够显现CPU和memory占用率:
而”l”能够显现优先级、nice值和PPID:
独自运用”-e”虽然能够检查所有进程/线程,但关于每个进程/线程的信息有限,并且甚至都无法分别其间的一项到底是用户进程仍是内核线程,因而”-e”参数一般应该配合”u”或”l”运用:
用”[]”包起来的便是内核线程,咱们能够运用这一特性来实现只检查内核线程,像这样:
ps-eu|grep’\[.*\]’
内核线程所占用的内存巨细不经过VSZ和RSS表达,所以在ps指令的输出中,内核线程对应的VSZ和RSS的值都为0。
由于用户进程之间存在承继联系,能够经过加”f”参数来检查这种联系,输出成果以树形摆放的方式出现:
独自运用”f”跟独自运用”-e”相同,得到的关于每一个进程/线程的信息有限,而”f”也同”-e”相同,能够联合”u”或”l”运用以取得更全面的进程信息。
既然”u”和”l”能够显现进程中各个特性的详细信息,那咱们肯定希望必要的时候,能够依照其间的某个特性来排序,比方按RSS排序以检查哪个进程消耗的内存最大(虽然并不是那么精确,但仍是能够看个大约嘛),这就要用到”k”参数。
“k”后边跟上某个特性的名称,就能够依照这个特性排序,例如”krss”即是按rss升序,”k-rss”则是按rss降序,其他常用的包括按CPU占用率排序的”%cpu”,按执行时间排序的”time”等。由于有些进程在启动时的名称很长(比方qemu),能够再加上一个”c”,让输出摆放的比较整齐。
在多核系统中,有时咱们可能还有爱好看看这个进程/线程现在是哪个核上运行啊,”-P”参数能够协助咱们检查这个信息。此外,一个用户进程往往是由多个线程组成的,能够经过加上”-L”参数来显现线程。
假如咱们把”-P”和”-L”结合起来检查启动QEMU虚拟机的”qemu-system-aarch64″进程的线程运行状况,能够看到它总共包括6个线程。
在启动这个QEMU虚拟机时,我运用的是”-smp4″,也便是4个CPU,咱们能够进入QEMU的指令行模式(经过”ctrl-a+c”),输入”infocpus”来检查这4个CPU的信息。
能够看到,这4个CPU运用了4个线程,而这4个线程的PID便是包括在咱们之前用ps指令看到的6个线程中的,并且这4个线程是运行在同一个CPU上。QEMU中guest运用的是虚拟CPU,每个虚拟CPU由host的一个线程来模仿,这4个虚拟CPU同享一个host上的一个物理CPU。

未经允许不得转载:IT技术网站 » linux查看进程(命令ps -ef详解)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载