10.8 ps命令

監控系統狀態

  • 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

相關文章
相關標籤/搜索