觀察程式的狀態,殭屍程序

2021-06-22 12:26:11 字數 2022 閱讀 3600

利用靜態的 ps 或者是動態的 top,還能以 pstree 來查閱程式樹之間的關係

[root@www ~]# ps aux 

<==觀察系統所有的程式資料

[root@www ~]# ps -la

<==也是能夠觀察所有系統的資料

[root@www ~]# ps axjf

<==連同部分程式樹狀態

直接背兩個比較不同的選項,

乙個是只能查閱自己 bash 程式的『 ps -l 』乙個則是可以查閱所有系統執行的程式『 ps aux 』!

[root@www ~]# ps -l

f s uid pid ppid c pri ni addr sz wchan tty time cmd

4 s 0 13639 13637 0 75 0 - 1287 wait pts/1 00:00:00 bash

4 r 0 13700 13639 0 77 0 - 1101 - pts/1 00:00:00 ps

系統整體的程式執行是非常多的,但如果使用 ps -l 則僅列出與你的操作環境 (bash) 有關的程式而已,亦即最上一級的父程式會是你自己的 bash 而沒有延伸到 init 這支程式去!那麼 ps -l 秀出來的資料有哪些呢?我們就來觀察看看:

s:代表這個程式的狀態 (stat),主要的狀態有:

uid/pid/ppid:代表『此程式被該 uid 所擁有/程式的 pid 號碼/此程式的父程式 pid 號碼』

c:代表 cpu 使用率,單位為百分比;

pri/ni:priority/nice 的縮寫,代表此程式被 cpu 所執行的優先順序,數值越小代表該程式越快被 cpu 執行。詳細的 pri 與 ni 將在下一小節說明。

addr/sz/wchan:都與記憶體有關,addr 是 kernel function,指出該程式在記憶體的哪個部分,如果是個 running的程式,一般就會顯示『 - 』 / sz 代表此程式用掉多少記憶體 / wchan 表示目前程式是否執行中,同樣的,若為 - 表示正在執行中。

tty:登陸者的終端機位置,若為遠端登陸則使用動態終端介面 (pts/n);

time:使用掉的 cpu 時間,注意,是此程式實際花費 cpu 執行的時間,而不是系統時間;

cmd:就是 command 的縮寫,造成此程式的觸發程式之命令為何。

所以你看到的 ps -l 輸出資訊中,他說明的是:『bash 的程式屬於 uid 為 0 的使用者,狀態為睡眠 (sleep),之所以為睡眠因為他觸發了 ps (狀態為 run) 之故。此程式的 pid 為 13639,優先執行順序為 75 ,下達 bash 所取得的終端介面為 pts/1 ,執行狀態為等待 (wait) 。』

範例五:找出與 cron 與 syslog 這兩個服務有關的 pid 號碼?

[root@www ~]# ps aux | egrep '(cron|syslog)'

root 4286 0.0 0.0 1720 572 ? ss mar11 0:00 syslogd -m 0

root 4661 0.0 0.1 5500 1192 ? ss mar11 0:00 crond

root 14286 0.0 0.0 4116 592 pts/1 r+ 16:15 0:00 egrep (cron|syslog)

# 所以號碼是 4286 及 4661 這兩個羅!就是這樣找的啦!

除此之外,我們必須要知道的是『殭屍 (zombie) 』程式

是什麼?通常,造成殭屍程式的成因是因為該程式應該已經執行完畢,或者是因故應該要終止了,但是該程式的父程式卻無法完整的將該程式結束掉,而造成那個程式一直存在記憶體當中。如果你發現在某個程式的 cmd 後面還接上 時,就代表該程式是殭屍程式啦,例如:

Linux 程序狀態 殭屍程序 孤兒程序

檢視程序狀態的命令 ps aux ps axj 命令 r running 可執行狀態 並不一定正在占有cpu,它表明程序要麼是正在執行,要麼是在執行佇列裡。實際上分為running和ready兩種狀態。s task interruptible 可中斷的睡眠狀態 處於這個狀態的程序因為等待某事件的發生...

程序狀態解析 如何殺死殭屍程序

某日利用阿里雲的基線檢查,發現2個殭屍程序,因此,我想要殺死它們。怎麼殺?首先先的抓出殭屍。執行的程序,都會有程序的狀態 只有在該狀態的程序才可能在cpu上執行。而同一時刻可能有多個程序處於可執行狀態,這些程序的task struct結構 程序控制塊 被放入對應cpu的可執行佇列中 乙個程序最多只能...

Linux 殭屍程序 Z狀態 和孤兒程序

先了解下程序都有什麼狀態 程序狀態 就緒,阻塞,執行 linux下程序狀態 執行狀態 並不意味著程序一定在執行中,它表明程序在執行中,或在執行佇列裡 只要拿到時間片就能執行 可中斷休眠狀態 s 當前處於休眠狀態,但這種休眠可以被打斷 也稱睡眠狀態 不可中斷休眠狀態 d 當前處於休眠狀態,但這種休眠不...