进程查看命令ps和top

查看进程的命令有哪些?

pidof pgrep pstree ps top等等。

  • pidof命令用于查找指定名称的进程的进程号。
# pidof chrome 
31965 22019 22659 22641 22161 22120

这个命令无法模糊搜索,所以在使用的时候一定要知道准确的进程名字

  • pgrep命令以名称为依据从运行进程队列中查找进程,并显示查找到的进程id。
# pgrep -o chr -l
22019 chrome

这个命令不仅可以模糊搜索,还可以通过-o参数找到起始进程,-l打印名字。

  • pstree命令将所有行程以树状图显示。
# pstree 22019
chrome─┬─2*[cat]
       ├─chrome─┬─chrome
       │        └─7*[{chrome}]
       ├─chrome───8*[{chrome}]
       ├─chrome-sandbox───chrome─┬─chrome─┬─7*[chrome───10*[{chrome}]]
       │                         │        ├─chrome───9*[{chrome}]
       │                         │        ├─chrome───12*[{chrome}]
       │                         │        ├─2*[chrome───11*[{chrome}]]
       │                         │        └─chrome───13*[{chrome}]
       │                         └─chrome-sandbox───nacl_helper
       └─27*[{chrome}]

接下来我们详细讲一下ps和top命令。

常用命令之ps

ps命令用来列出系统中当前运行的那些进程。
ps命令参数众多,这里只讲两种搭配用法:
1.ps aux

# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1 165820 10644 ?        Ss   08:58   0:01 /lib/systemd/systemd --switched-root --system --deserialize 33
  • %CPU
    %CPU = cputime/realtime*100,这个值不可能达到100%。
    cputime:进程生命周期中使用cpu的时间。
    realtime:进程生命周期。
  • %MEM
    进程占用物理内存的百分比
  • VSZ
    进程占用虚拟内存的量,单位KB
  • RSS
    进程占用物理内存的量,单位KB
  • TTY
    该进程是在哪个终端机上面运作,若与终端机无关,则显示'?',另外,tty1-tty6是本机上面的登入者程序,若为pts/0等等的,则表示为由网络连接进主机的程序。
    守护进程因为脱离session,所以这一栏显示'?'。
  • STAT
    该程序目前的状态,主要的状态有:
D   不可中断睡眠(通常是在IO操作)收到信号不唤醒和不可运行,进程必须等待直到有中断发生
R   正在运行或可运行(在运行队列排队中)
S   可中断睡眠(休眠中,受阻,在等待某个条件的形成或接受到信号)
T   已停止的,进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行
W   正在换页(2.6.内核之前有效)
X   死进程(未开启)
Z   僵尸进程,进程已终止,但进程描述符存在,直到父进程调用wait()系统调用后释放
<   高优先级(not nice to other users)
N   低优先级(nice to other users)
L   有页被锁定在内存(实时和定制的IO)
s   首进程
l   多线程(使用CLONE_THREAD,像NPTL的pthreads的那样)
+   在前台进程组
  • START
    进程的启动时间
  • TIME
    累计使用cpu的时间,格式:hh:mm:ss
  • COMMAND
    所执行的指令

2.ps alx

# ps alx
F   UID   PID  PPID PRI  NI    VSZ   RSS WCHAN  STAT TTY        TIME COMMAND
4     0     1     0  20   0 165820 10644 -      Ss   ?          0:01 /lib/systemd/systemd --switched-root --system --deserialize 33
  • PPID
    父进程的pid
  • PRI
    进程的优先级。数字越大意味着优先级越低。
    PRI是内核动态调整的,我们使用者也无权去干涉。
  • NI
    进程的NICE值,数值大,表示较少占用CPU时间。
    nice值可调整的范围为-20至19。
    PRI(new)=PRI(old)+nice
  • WCHAN
    正在等待的进程资源。

常用命令之top

top命令用于实时显示进程的动态。

# top

1:Def - 13:54:34 up  4:56,  1 user,  load average: 0.47, 0.35, 0.32
Tasks: 219 total,   1 running, 218 sleeping,   0 stopped,   0 zombie
%Cpu(s):  3.2 us,  1.6 sy,  0.0 ni, 93.7 id,  0.0 wa,  0.0 hi,  1.6 si,  0.0 st
MiB Mem :   7941.9 total,   2662.9 free,   2790.4 used,   2488.6 buff/cache
MiB Swap:  11264.0 total,  11264.0 free,      0.0 used.   4530.0 avail Mem 

1  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                           
  4090 root      20   0  301276 141988 108788 S   6.2   1.7   9:02.77 Xorg
...

top命令展示的信息特别多,这边简单讲几个我觉得重要的:

  • load average
    一段时间(1分钟、5分钟、15分钟)内CPU平均负载。
    在top命令中按'1'可以看几个CPU分别的情况,一般load average的值 / CPU个数 > 1说明已经超负荷了。

  • Tasks
    警惕zombie僵尸进程,虽然不占用资源,但占pid。

  • %Cpu(s)

us		用户空间占用CPU百分比
sy		内核空间占用CPU百分比
ni		用户进程空间内改变过优先级的进程占用CPU百分比
id		空闲CPU百分比
wa		等待I/O的CPU时间百分比

这里要注意wa,如果系统卡,wa高,说明I/O可能出现了拥塞。

  • SHR
    共享内存大小,单位kb。详细可了解shmget()函数。

  • %CPU
    注意这边的%CPU与ps命令中的完全不同。
    top是从上次更新以来,进程占总CPU时间的百分比。
    一般几秒钟一刷,可以认为是即时的。值最高为CPU核数x100%。
    所以我们平时定位问题需要的是这个值。

  • COMMAND
    这里如果需要显示全需要加'-c'参数。

总结

以上是我们在用户态查看进程信息的常用命令。

个人博客:https://geanqin.github.io/

原文地址:https://www.cnblogs.com/gean/p/12837210.html