zoukankan      html  css  js  c++  java
  • 浅谈Linux系统中如何查看进程 ——ps,pstree,top,w,全解


      进程是一个其中运行着一个或多个线程的地址空间和这些线程所需要的系统资源。一般来说,Linux系统会在进程之间共享程序代码和系统函数库,所以在任何时刻内存中都只有代码的一份拷贝。

      1,ps命令

      作用:ps命令主要用于查看系统中进程的状态。

      用法:ps [选项]

      主要选项如下:

      -e 显示所有进程

      -a 跟终端无关的进程 (BSD风格,不加横杆)

      -x 跟终端有关的进程

      -u 发起者

      -F 额外信息

      -f 显示完整信息

      -j 以作业的方式显示进程

      -H 显示进程的关系

      -o 自定义显示哪些字段

      单一的命令往往显示的结果不是很理想,这里我们可以多个选项同时使用。

      例:ps aux 命令可以获得终端上所有用户的有关进程的所有信息

      USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

      root 1 0.0 0.1 2064 652 ? Ss 10:05 0:00 init [3]

      其中VSZ 虚拟地址大小

      RSS 物理内存大小

      例:例:ps ax

      pid tty stat time command

      1 ? Ss 0:00 init [3]

      其中 tty中?表示与终端无关

      stat(状态)

      D 不可中断 sleep

      S 可中断 sleep

      R 正在运行或可运行的

      T 停止态

      Z 僵尸态 父进程替子进程收尸

      父进程死的时候会先替子进程找到另外一个父进程

      x 死亡状态

      w paging

      状态的变化:stoped--sleep--ready--running

      注:sleep (可中断sleep 和不可中断sleep)

      PID 这个进程的ID,下面的PPID为父进程的ID

      在BSD中也会有:

      < 表示高优先级的进程

      N 低优先级

      + 属于某个前台组的进程

      s 某一个回话的leader进程

      l 线程加锁

      + 后台运行进程组

      例:ps -l

      [root@station100 ~]# ps -l

      F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD

      4 S 0 9706 9704 0 75 0 - 1166 wait pts/1 00:00:00 bash

      4 R 0 9908 9706 0 77 0 - 1052 - pts/1 00:00:00 ps

      F:表示这个进程的标志(flag),4表示用户为超级用户。

      S:表示这个进程的状态(STAT)。

      PID:这个进程的ID,下面的PPID为父进程的ID。

      C:CPU使用的资源百分比

      PRI:Priority(优先级)的缩写。

      NI:Nice值

      ADDR 这是核心功能,指出该进程在内存的那一部分,如果是运行的进程一般都是“-”

      SZ:用掉的内存大小

      WCHAN 当前进程是否正在运行,若为“-”表示正在运行。

      TTY:登录者的终端位置。

      TIME:用掉的CPU时间。

      CMD 所执行的命令。

      例:ps auxw --sort=rss

      按内存占用情况对进程排序

      例:ps auxw --sort=%cpu

      在进行系统维护时,如果CPU负载突然增加,而又不知道是哪一个进程造成的

      其他部分ps命令:

      To see every process on the system using standard syntax:

      ps -e

      ps -ef

      ps -eF 显示PID及PPID信息

      ps -ely 会显示nice值NI及优先级PRI

      To see every process on the system using BSD syntax:

      ps ax

      ps axu

      To print a process tree:

      ps -ejH

      ps axjf 相当于ps -aFH或afh 显示进程关系

      To get info about threads

      ps -eLf

      ps axms

      To get security info:

      ps -eo euser,ruser,suser,fuser,f,comm,label

      ps axZ

      ps -eM

      To see every process running as root (real & effective ID) in user format:

      ps -U root -u root 自定义显示格式

      To see every process with a user-defined format:

      ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm

      ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm

      ps -eopid,tt,user,fname,tmout,f,wchan

      Print only the process IDs of syslogd:

      ps -C syslogd -o pid=

      Print only the name of PID 42:

      ps -p 42 -o comm=

      2,pstree:显示进程状态树

      作用:pstree命令列出当前的进程,以及它们的树状结构。

      用法:pstree [选项] [pid|user]

      主要选项如下。

      -a:显示执行程序的命令与完整参数。

      -c:取消同名程序,合并显示。

      -h:对输出结果进行处理,高亮显示正在执行的程序。

      -l:以长用法显示。

      -n:以PID大小排序。

      -p:显示PID。

      -u:显示UID信息。

      -G:使用VT100终端编码显示,生成比较清晰的树

      -U:使用UTF-8(Unicode)编码显示。

      它能将当前的执行程序以树状结构显示。pstree命令支持指定特定程序(PID)或使用者(USER)作为显示的起始。

      3,top:显示进程

      作用:top命令用来显示系统当前的进程状况。

      用法:top [选项]

      主要选项如下。

      -b:以批处理的方式执行top,通常会搭配数据流重导向,将批处理的结果输出为文件。

      -c:显示程序并显示程序的完整相关信息,如名称、路径等。

      -i:忽略闲置或已经冻结的程序。

      -d:后面可以接秒数,就是整个进程画面更新的秒数,默认是5秒。

      -n:与-b搭配,需要进行几次top的输出结果。

      -p<进程号>:指定某些个PID来进行观察检测。

      -s:安全模式。

      -u:指定用户名。

      -v:显示版本信息。

      -h:显示帮助信息。

      top命令和ps命令的基本作用是相同的,都是显示系统当前的进程状况。但是top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态。

      例:top

      top - 19:21:34 up 9:15, 3 users, load average: 0.00, 0.00, 0.00

      Tasks: 80 total, 1 running, 79 sleeping, 0 stopped, 0 zombie

      Cpu(s): 0.0%us, 0.3%sy, 0.0%ni, 99.0%id, 0.7%wa, 0.0%hi, 0.0%si, 0.0%st

      Mem: 515444k total, 360684k used, 154760k free, 99876k buffers

      Swap: 1048568k total, 0k used, 1048568k free, 214912k cached

      PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

      9954 root 15 0 2196 992 804 R 0.3 0.2 0:00.05 top

      1 root 15 0 2064 620 536 S 0.0 0.1 0:04.26 init

      2 root RT -5 0 0 0 S 0.0 0.0 0:00.00 migration/0

      3 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0

      4 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/0

      第一行表示的项目依次为当前时间、系统启动时间、当前系统登录用户数目、平均负载。

      第二行显示的是所有启动的、目前运行的、挂起(Sleeping)的和无用(Zombie)的进程。

      第三行显示的是目前CPU的使用情况。

      第四行显示物理内存的使用情况,包括总的可以使用的内存、已用内存、空闲内存、缓冲区占用的内存。

      第五行显示交换分区的使用情况,包括总的、使用的、空闲的和用于高速缓存的交换分区。

      第六行显示的项目最多,下面列出了详细解释。

      PID(Process ID):进程标志号,是非零正整数。

      USER:进程所有者的用户名。

      PR:进程的优先级别。

      NI:进程的优先级别数值。

      VIRT:进程占用的虚拟内存值。

      RES:进程占用的物理内存值。

      SHR:进程使用的共享内存值。

      STAT:进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数

      %CPU:该进程占用的CPU使用率。

      %MEM:该进程占用的物理内存和总内存的百分比。

      TIME:该进程启动后占用的总的CPU时间。

      COMMAND:进程启动的启动命令名称,如果这一行显示不下,进程会有一个完整的命令行。

      在top执行过程中可以使用的按键命令:

      ?:显示在top中可以输入的按键命令。

      <空格>:立刻刷新。

      P:按CPU的使用资源排序显示。

      T:该进程使用的CPU时间累积(TIME+)排序。

      m:切换显示内存信息。

      t:切换显示进程和CPU状态信息。

      c:切换显示命令名称和完整命令行。

      M:按内存的使用资源排序显示。

      N:按PID来排序

      W:将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。

      r:给某个PID重新确定一个值。

      q:退出top命令。

      top命令是一个功能十分强大的监控系统的工具,对于系统管理员而言尤其重要。但是,它的缺点是会消耗很多系统资源。

      例:top -c

      显示程序及其完整相关信息

      例:top -d 3

      设定top命令的时间间隔为3秒

      例:top -n 5

      设定系统任务信息更新5次后结束top命令

      4,who

      作用:该命令主要用于查看当前在线上的用户情况。

      who命令的常用参数进行说明。

      -m 和“who am i”的作用一样,显示运行该程序的用户名。

      -q,--count 只显示用户的登录帐号和登录用户的数量,该选项优先级高于其他任何选项。

      -s 忽略。主要是用于和其他版本的who命令兼容。

      -i,-u,--idle 在登录时间后面显示该用户最后一次对系统进行操作至今的时间,也就是常说的“发呆”时间。

      -H,--heading 显示一行列标题

      5,w命令

      该命令也用于显示登录到系统的用户情况,但是与who不同的是,w命令功能更加强大,它不但可以显示有谁登录到系统,还可以显示出这些用户当前正在进行的工作,并且统计数据相对who命令来说更加详细和科学,可以认为w命令就是who命令的一个增强版。

      相应参数进行说明:

      -h 不显示标题。

      -u 当列出当前进程和CPU时间时忽略用户名。这主要是用于执行su命令后的情况。

      -s 使用短模式。不显示登录时间、JCPU和PCPU时间。

      -f 切换显示FROM项,也就是远程主机名项。默认值是不显示远程主机名,当然系统管理员可以对源文件作一些修改使得显示该项成为默认值。

      -V 显示版本信息。

      6,其他配合使用的命令

      pgrep -G root 显示所有的pid

      pidof cupsd 获取某个进程的pid(cupsd为一个进程名)

      free -m 查看虚拟内存的使用情况

      kill 进程号 默认信号是15

      killall 进程名

      例:killall httpd

      pkill SINGAL pattern

      7,nice值及优先级

      静态优先级:100-139 ,可以调整

      动态优先级:0-99 数字小优先级小 (实时优先级)

      手动调整,nice(-20 - 19)默认为零 把自己的优先级降低(普通用户)

      可以随意调整自己的优先级(root管理者)

      nice 启动进程时直接指定nice值

      nince -n 6 COMMAND

      renice:对已经启动过的进程调整其nice值

      renice -5 423 (-5为nice值,优先级,423为进程号)

      8,作业控制(job)

      实际中是:shell结束 作业也结束

      使用&后: shell结束 作业不结束

      例:nohup cp -r /etc /tmp/abc &

      shell结束,作业不结束

      ctrl+z 把job送到后台 stoped状态

      & 在后台也在运行

      fg 调用到前台

      jobs 查看在后台的作业

      fg 默认调用的是带+号的作业,调用后台job

      ps aux | ls 查看ls的id

      bg %2 2为作业号

      kill %2 直接杀死作业 显示已终止

      kill -9 %2 直接杀死 显示已杀死

    原文出自【比特网】,转载请保留原文链接:http://soft.chinabyte.com/os/283/12130783.shtml

  • 相关阅读:
    在VScode下搭载Perl的调试环境
    32.最长有效括号(Longest Valid Parentheses)
    23.合并K个排序链表(Merge k Sorted Lists)
    10.正则表达式匹配(Regular Expression Matching)
    4.寻找两个有序数组的中位数(Median of Two Sorted Arrays)
    C++中不引人瞩目的细节
    关于C++项目中头文件相互包含的问题
    关于css中hover下拉框的一个bug
    DFS-BFS(深搜广搜)原理及C++代码实现
    trie(字典树)原理及C++代码实现
  • 原文地址:https://www.cnblogs.com/zhouhbing/p/4018275.html
Copyright © 2011-2022 走看看