10.8 ps命令

时间:2022-04-27
本文章向大家介绍10.8 ps命令,主要内容包括监控系统状态、ps命令 查看系统所有进程(两种)、ps命令查看进程是否在存在、重点部分 STAT、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。

监控系统状态

  • ps 查看系统进程
    • 用法:ps aux、ps -elf
  • STAT部分说明
    • D 不能中断的进程
    • R run状态的进程
    • S sleep状态的进程
    • T 暂停的进程
    • Z 僵尸进程
    • < 高优先级进程
    • N 低优先级进程
    • L 内存中被锁了内存分页
    • s 主进程
    • l 多线程进程
    • 字符+ 前台进程

ps命令

  • ps命令,汇报当前系统的进程状态
  • ps用法(常用两种方法)
    • ps aux 会把系统中所有的进程给列出来,静态的显示出来
[root@localhost ~]# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.7  50772  7156 ?        Ss   15:49   0:01 /usr/lib/systemd/system
root         2  0.0  0.0      0     0 ?        S    15:49   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    15:49   0:00 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S<   15:49   0:00 [kworker/0:0H]
root         6  0.0  0.0      0     0 ?        S    15:49   0:00 [kworker/u128:0]
root         7  0.0  0.0      0     0 ?        S    15:49   0:00 [migration/0]
root         8  0.0  0.0      0     0 ?        S    15:49   0:00 [rcu_bh]
root         9  0.0  0.0      0     0 ?        S    15:49   0:00 [rcuob/0]
root        10  0.0  0.0      0     0 ?        S    15:49   0:00 [rcuob/1]
root        11  0.0  0.0      0     0 ?        S    15:49   0:00 [rcuob/2]
root        12  0.0  0.0      0     0 ?        S    15:49   0:00 [rcuob/3]
root        13  0.0  0.0      0     0 ?        S    15:49   0:00 [rcuob/4]
root        14  0.0  0.0      0     0 ?        S    15:49   0:00 [rcuob/5]
root        15  0.0  0.0      0     0 ?        S    15:49   0:00 [rcuob/6]
root        16  0.0  0.0      0     0 ?        S    15:49   0:00 [rcuob/7]
等等等,只截取了一部分——>这里显示出了所有的进程

对比

  • top命令,动态显示,把cpu的、内存的做一个排行榜出来
  • ps命令,是静态的显示,一次性把所有的状况列出来
    • ps和top命令显示的结果非常相似

ps命令 查看系统所有进程(两种)

  • ps aux 查看系统所有进程
  • ps -elf 显示出的效果和ps aux基本类似
[root@localhost ~]# ps aux    //查看系统所有进程
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.7  50772  7156 ?        Ss   11月28   0:01 /usr/lib/systemd/syst
root         2  0.0  0.0      0     0 ?        S    11月28   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    11月28   0:00 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S<   11月28   0:00 [kworker/0:0H]
root         6  0.0  0.0      0     0 ?        S    11月28   0:00 [kworker/u128:0]
root         7  0.0  0.0      0     0 ?        S    11月28   0:00 [migration/0]
root         8  0.0  0.0      0     0 ?        S    11月28   0:00 [rcu_bh]
root         9  0.0  0.0      0     0 ?        S    11月28   0:00 [rcuob/0]
root        10  0.0  0.0      0     0 ?        S    11月28   0:00 [rcuob/1]
root        11  0.0  0.0      0     0 ?        S    11月28   0:00 [rcuob/2]
等等等,只截取了一部分——>这里显示出了所有的进程

[root@localhost ~]# ps -elf    //查看系统所有进程
F S UID        PID  PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
4 S root         1     0  0  80   0 - 12693 ep_pol 11月28 ?      00:00:01 /usr/lib/syst
1 S root         2     0  0  80   0 -     0 kthrea 11月28 ?      00:00:00 [kthreadd]
1 S root         3     2  0  80   0 -     0 smpboo 11月28 ?      00:00:00 [ksoftirqd/0]
1 S root         5     2  0  60 -20 -     0 worker 11月28 ?      00:00:00 [kworker/0:0H
1 S root         6     2  0  80   0 -     0 worker 11月28 ?      00:00:00 [kworker/u128
1 S root         7     2  0 -40   - -     0 smpboo 11月28 ?      00:00:00 [migration/0]
1 S root         8     2  0  80   0 -     0 rcu_gp 11月28 ?      00:00:00 [rcu_bh]
1 S root         9     2  0  80   0 -     0 rcu_no 11月28 ?      00:00:00 [rcuob/0]
1 S root        10     2  0  80   0 -     0 rcu_no 11月28 ?      00:00:00 [rcuob/1]
等等等,只截取了一部分——>这里显示出了所有的进程
  • 第一列,显示出进程的运行用户
  • 第二列,进程的PID
    • 在杀死一个进程的时候,就回需要使用PID,命令 kill PID号
      • 例子:kill 1346
      • 然后ps aux |grep qmgr 会看到的该进程被杀掉了
    • 在系统被黑了,遇到一个不知道的进程(有可能是被入侵的进程),在杀死该进程的时候,就需要先知道PID号
      • 先查看PID号,进程在哪里启动起来的
        • ls -l /proc/PID号 ,会看到进程启动的目录
  • 第三列,CPU百分比
  • 第四列,内存百分比
  • 第五列,虚拟内存
  • 第六列,物理内存
  • 第七列,是在哪一个TTY上
  • 第八列,STAT,表示进程的状态,是我们需要关注的一列!
    • STAT有这几种状态
    • D 不能中断的进程 (会直接影响CPU资源)
    • R run状态的进程(正在跑的进程,表示某一个时间段内,使用的CPU)
    • S sleep状态的进程
    • T 暂停的进程
    • Z 僵尸进程
    • 字符< 高优先级进程
    • N 低优先级进程
    • L 内存中被锁了内存分页
    • s 主进程
    • l 多线程进程
    • 字符+ 前台进程
  • 第九列,什么时候启动的
  • 第十列,TIME,运行了多久了
  • 第十一列,命令
线程和进程最大的区别: 
1 进程里包含了线程,线程是进程的子单元
2 同一个进程下的线程全部共享相同的内存,而进程之间内存相互隔离。

ps命令查看进程是否在存在

  • ps aux |grep nginx //查看nginx进程是否在存在
  • ps aux |grep mysql //查看mysql进程是否存在
[root@localhost ~]# ps aux |grep nginx    //查看nginx进程是否在存在
root      2619  0.0  0.0 112656   984 pts/0    R+   00:00   0:00 grep --color=auto ngin
[root@localhost ~]# ps aux |grep mysql    //查看mysql进程是否存在
root      2643  0.0  0.0 112656   984 pts/0    R+   00:02   0:00 grep --color=auto mysq
[root@localhost ~]# 

重点部分 STAT