首页 > 编程知识 正文

linux如何查看进程状态,linux系统中查看进程的命令

时间:2023-05-06 05:39:56 阅读:230685 作者:2241

文章目录 top统计信息进程信息查看进程下的线程信息 perf排查导致cpu利用率过高的函数分析程序的cpu cache miss现象 ps查看进程占用的cpu,mem大小查看进程启动时间

top

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,监控linux的系统状况,类似于Windows的任务管理器。

统计信息

前五行是系统整体的统计信息。

第一行是任务队列信息,同 uptime 命令的执行结果。
第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。
最后两行为内存信息。具体内容如下:

在numa架构下,top后按3即可查看相应的numa上的cpu信息。意义如下:

us: is meaning of "user CPU time" 用户空间占用CPU百分比sy: is meaning of "system CPU time" 内核空间占用CPU百分比ni: is meaning of" nice CPU time" 用户进程空间内改变过优先级的进程占用CPU百分比id: is meaning of "idle" hxdbq百分比wa: is meaning of "iowait" 等待输入输出的CPU时间百分比hi:is meaning of "hardware irq" 硬件中断si : is meaning of "software irq" 软件中断st : is meaning of "steal time" 是当 hypervisor 服务另一个虚拟处理器时,虚拟 CPU 等待实际 CPU 的时间的百分比 进程信息

统计信息下方类似表格区域显示的是各个进程的详细信息,默认5秒刷新一次。在top命令中按f按可以查看显示的列信息,按对应字母来开启/关闭列,大写字母表示开启,小写字母表示关闭。带*号的是默认列。

A: PID = (Process Id) 进程Id;E: USER = (User Name) 进程所有者的用户名;H: PR = (Priority) 优先级I: NI = (Nice value) nice值。负值表示高优先级,正值表示低优先级O: VIRT = (Virtual Image (kb)) 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RESQ: RES = (Resident size (kb)) 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATAT: SHR = (Shared Mem size (kb)) 共享内存大小,单位kbW: S = (Process Status) 进程状态。D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程K: %CPU = (CPU usage) 上次更新到现在的CPU时间占用百分比N: %MEM = (Memory usage (RES)) 进程使用的物理内存百分比M: TIME+ = (CPU Time, hundredths) 进程使用的CPU时间总计,单位1/100秒 b: PPID = (Parent Process Pid) 父进程Id c: RUSER = (Real user name) d: UID = (User Id) 进程所有者的用户id f: GROUP = (Group Name) 进程所有者的组名 g: TTY = (Controlling Tty) 启动进程的终端名。不是从终端启动的进程则显示为 ? j: P = (Last used cpu (SMP)) 最后使用的CPU,仅在多CPU环境下有意义 p: SWAP = (Swapped size (kb)) 进程使用的虚拟内存中,被换出的大小,单位kb l: TIME = (CPU Time) 进程使用的CPU时间总计,单位秒 r: CODE = (Code size (kb)) 可执行代码占用的物理内存大小,单位kb s: DATA = (Data+Stack size (kb)) 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb u: nFLT = (Page Fault count) 页面错误次数 v: nDRT = (Dirty Pages count) 最后一次写入到现在,被修改过的页面数 y: WCHAN = (Sleeping in Function) 若该进程在睡眠,则显示睡眠中的系统函数名 z: Flags = (Task Flags <sched.h>) 任务标志,参考 sched.hX: COMMAND = (Command name/line) 命令名/命令行 查看进程下的线程信息 top -H -p PID perf 排查导致cpu利用率过高的函数

当我们需要排查cpu利用率过高的原因时,也可以用perf命令

// 查看某个进程各函数占用perf top -p PID//使用下列命令可以看到函数的调用栈perf record -ga sleep 5perf report --no-children --sort=symbol第一项敲回车打开调用栈 分析程序的cpu cache miss现象 perf stat -e L1-dcache-load-misses ./a.out ps 查看进程占用的cpu,mem大小 # ps -ef 显示所有进程 # ps -eo comm,pcpu //显示所有命令占用的cpu的大小 e显示所有进程,o指定命令的名字# ps -eo comm,pmem //显示所有命令占用的mem的大小# ps -eo 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' //显示内存占用等信息 ps auxUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDsmmsp 3521 0.0 0.7 6556 1616 ? Ss 20:40 0:00 sendmail: Queue runner@01:00:00 froot 3532 0.0 0.2 2428 452 ? Ss 20:40 0:00 gpm -m /dev/input/mice -t imps2dbus 3655 0.0 0.5 13840 1084 ? Ssl 20:41 0:00 dbus-daemon-1 --system....................................解释如下:VSZ–进程的虚拟大小RSS–驻留集的大小,可以理解为当前实际占用的物理内存(kb)TTY–控制终端的IDSTAT–当前进程的状态STRAT–该进程启动的时间TIME–进程已经消耗的CPU时间,注意是消耗CPU的时间COMMOND–命令的名称和参数STAT中的参数意义如下:D 不可中断 Uninterruptible(usually IO)R 正在运行,或在队列中的进程S 处于休眠状态T 停止或被追踪Z 僵尸进程W 进入内存交换(从内核2.6开始无效)X 死掉的进程< 高优先级N 低优先级L 有些页被锁进内存s 包含子进程+ 位于后台的进程组l 多线程,克隆线程

查看可用物理内存:

free -g或cat /proc/meminfo 查看进程启动时间 ps -p PID -o lstart

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。