監控系統狀態
- ps 查看系統進程
- 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命令 查看系統全部進程(兩種)
- 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