1. 程式人生 > >linux檢視程序例項詳解

linux檢視程序例項詳解

檢視程序 ps (重要) Process State 是非常強大的程序檢視命令,用於報告當前系統的程序狀態。

常用選項: 1、BSD風格  a——和終端有關的程序  x——和終端無關的程序  u——顯示程序的執行者  2、sys V風格  -e——檢視所有程序  -l——long,長格式  -f——full,詳細資訊  -o——指定輸出格式

常用命令 ps #檢視隸屬於自己的程序

ps -l(ps -u)#僅檢視隸屬於自己程序的詳細資訊

[[email protected] ~]# ps -l F S   UID    PID   PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD 4 S     0   1703   1698  0  80   0 - 27104 wait   pts/0    00:00:00 bash 4 R     0   1779   1703  0  80   0 - 27035 -      pts/0    00:00:00 ps 1 2 3 4 F 程序標誌  4 此程序的許可權為root  1 此程序僅可進行復制(fork)而無法被執行(exec)

S 程序狀態  R:該程序正在執行中  S:該程序目前正在睡眠狀態(idle),但可以被喚醒(signal)  #程序睡眠並不代表該程序未開啟;  D: 不可被喚醒的睡眠狀態,通常這個程序可能在等待I/O的情況(ex>列印)  T:停止狀態,stop,可能是在工作控制(後臺暫停)或除錯(traced)狀態  Z:“殭屍”狀態,程序已經終止但卻無法被刪除至記憶體外

UID、PID、PPID  該程序是root使用者(UID為0一般為root)的1730程序(UID),此程序的父程序為1698(PPID);

C  CPU利用率,單位為百分比;

PRI/NI  此程序被CPU執行的優先順序(後續會詳解);

ADDR、SZ、WCHAN  都與記憶體有關;ADDR表示該程序在記憶體的哪個部分,running的程序顯示-,SZ表示此程序用掉多少記憶體,WCHAN表示目前程序是否在執行中,running顯示-

ps aux(ps -le) #檢視所有使用者執行的過程的詳細資訊

[[email protected] ~]# ps -aux | head -n 5 USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND root          1  0.0  0.1  19360  1528 ?        Ss   19:13   0:03 /sbin/init root          2  0.0  0.0      0     0 ?        S    19:13   0:00 [kthreadd] root          3  0.0  0.0      0     0 ?        S    19:13   0:00 [migration/0] root          4  0.0  0.0      0     0 ?        S    19:13   0:00 [ksoftirqd/0] 1 2 3 4 5 6 user:程序執行者;

PID:程序的ID;

%CPU:程序CPU佔用率;

%MEM:程序記憶體佔用率;

VSZ:該程序使用掉的虛擬記憶體大小(kb);

RSS:該程序佔用的真實記憶體大小;

TTY:是否終端有關; 

STAT:程序狀態; 

START:程序啟動時間;

TIME:程序佔用CPU的總時長;

COMMAND:程序名  【COMMAND】代表的是核心程序的一個執行緒

ps -o pid,comm,ni  指定程序按PID、COMMAND、NICE的格式輸出

列出佔用CPU最多的5個程序,並按從大到小進行排序

[[email protected] ~]# ps -eo comm,pcpu --sort -pcpu | head -n 5 COMMAND         %CPU events/0         0.2 init             0.0 kthreadd         0.0 migration/0      0.0 1 2 3 4 5 6 pcpu:cpu使用率的百分比;  可直接在後面接–sort進行排序;

和kill搭配 用於隨時終端、刪除不必要的程式

例:尋找並殺死殭屍程序

top | head -n 2 #檢視伺服器是否有殭屍程序,若zombie>0則有;(見top詳解) ps -efo stat,ppid,pid,cmd | grep -e ‘^[Zz]’ #尋找殭屍程序  Z 12348 12344 /path/cmd kill -15 12348 #給程序傳送signal,殺死這個殭屍程序 ps -efo stat,ppid,pid,cmd | grep -e ‘^[Zz]’ #確認該殭屍程序已被殺死  若未被殺死,可以通過以下方法解決:  kill -15 12344 #殺死其父程序  kill -9 12348 #強制殺死  killall/pkill P_name #通過程序名殺死程序 小結:使用ps命令可確定有哪些程序正在執行和執行的狀態、程序是否結束、程序有沒有殭屍、哪些程序佔用率過多的資源等等,總之大部分資訊都是可以通過執行該命令得到的

top top是一個互動式系統性能監控工具,不同於ps是靜態的結果輸出,top可以實時動態地檢視系統的整體執行情況。  通過top命令所提供的互動式介面,用熱鍵可以管理。  #這個互動介面,類似工作管理員

load average:系統負載對於單個處理器來說,負載在0-1.00之間是正常的,超過1.00就要引起注意了,系統已經超載了,我理解為塞車了。在多核處理器中,你的系統均值不應該高於處理器核心的總數(多個1*CPU核數),還可以通過uptime檢視系統負載;

%us:使用者空間佔用CPU百分比,此值較高時,表示程序消耗CPU時間多,如果長期超過50%的時候,我們就要考慮優化程式演算法或者進行加速;

%sy:核心空間佔用CPU百分比,此值較高時,表示系統核心消耗CPU資源多,我們應該檢查原因;

%wa:等待輸入輸出的CPU時間百分比,此值較高時,說明IO等待驗證,這可能是由於磁碟大量隨機訪問造成,也可能造成磁碟出現瓶頸(塊操作);

%id:反映了CPU繁忙程度;

buffers和cached區別瞭解一下:buffer是塊裝置的讀寫快取區,cached是檔案系統本身的頁面快取,它們都是linux作業系統底層的機制,目的是加速對磁碟的訪問;

PR和NI:系統優先順序有2種,一種是不能被使用者更改,由系統控制的priority;一種是nice值,可以被使用者修改(使用renice命令),範圍-20~+19,越小越優先;

小結 

RT代表實時,real time,最高優先順序  每隔3s刷清一次,-b改變時間;T、M、P 按鍵盤

pstree linux系統中,每一個程序都是由其父程序建立的,  此命令以樹狀圖的方式展現程序間的派生關係。

常用命令 pstree -p 顯示當前所有程序的程序號和程序id

[[email protected] ~]# pstree -p      init(1)─┬─NetworkManager(1407)     ├─auditd(1336)───{auditd}(1337)     ├─crond(1668)     ├─cupsd(1441)     ├─dbus-daemon(1393)───{dbus-daemon}(1396)     ├─dmeventd(1097)─┬─{dmeventd}(1098)     │                └─{dmeventd}(1099)     ├─master(1654)─┬─pickup(1780)     │              └─qmgr(1664)     ├─mingetty(1681)     ├─mingetty(1683) 1 2 3 4 5 6 7 8 9 10 11 12 由上可知,所有的程序都是依附在init這個程序下面,且id(init)=1,是由init核心主動呼叫的第一個程序;

systmd是Rehat7以上版本新的service,作用是載入服務,也是紅帽啟動的第一個程序

pgrep 通過程序名與其他屬性來查詢程序,並顯示查詢到的程序id

常用選項 -l ——顯示程序名

引數 程序名稱:指定要查詢的程序名稱,同時也支援類似grep指令中的匹配模式

[[email protected] ~]# pgrep -l sshd 1569 sshd 1824 sshd 1 2 3 pstree -a  顯示程序的所有詳細資訊,遇到相同的程序名可以壓縮展示

[[email protected] ~]# pstree -a  init   ├─NetworkManager --pid-file=/var/run/NetworkManager/NetworkManager.pid   ├─auditd   │   └─{auditd}   ├─crond   ├─cupsd -C /etc/cups/cupsd.conf   ├─dbus-daemon --system   │   └─{dbus-daemon}   ├─dmeventd   │   ├─{dmeventd}   │   └─{dmeventd}   ├─master   │   ├─pickup -l -t fifo -u   │   └─qmgr -l -t fifo -u   ├─mingetty /dev/tty1   ├─mingetty /dev/tty2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 如果子程序掛掉或者老是殺不掉子程序,則可用pstree來找到父程序殺掉;

寫在最後的話 本人只是一個在linux學習大軍中搬磚的小小的一員,技術水平有限,文中難免出現不妥或者錯訛,歡迎大家在評論區多多指正,共同進步,不盡感激! ---------------------  作者:不要跟我搶雞腿  來源:CSDN  原文:https://blog.csdn.net/wsxxdwwzjdy/article/details/78507698  版權宣告:本文為博主原創文章,轉載請附上博文連結!