• 进程查看命令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/

  • 相关阅读:
    这可能是全网最全的流媒体知识科普文章
    JavaCV实战专栏文章目录(JavaCV速查手册)
    JavaCV复杂滤镜filter特效处理入门教程和常用案例汇总
    【PC桌面软件的末日,手机移动端App称王】写在windows11支持安卓,macOS支持ios,龙芯支持x86和arm指令翻译
    如何在龙芯架构和国产化操作系统平台上运行javacv
    如何在国产龙芯架构平台上运行c/c++、java、nodejs等编程语言
    JavaCV开发详解之35:使用filter滤镜实现画中画,以屏幕画面叠加摄像头画面为例
    JavaCV开发详解之34:使用filter滤镜实现字符滚动和无限循环滚动字符叠加,跑马灯特效制作
    JavaCV开发详解之33:使用filter滤镜实现动态日期时间叠加
    JavaCV开发详解之32:使用filter滤镜实现中文字符叠加
  • 原文地址:https://www.cnblogs.com/gean/p/12837210.html
Copyright © 2020-2023  润新知