常用工具及命令:pstree、ps、pidof、pgrep、top、htop、vmstat、glances、dstat、kill、bg、fg、nice、renice 一、 pstree - display a tree of processes 1 yum install psmisc //軟體包包 ...
常用工具及命令:pstree、ps、pidof、pgrep、top、htop、vmstat、glances、dstat、kill、bg、fg、nice、renice
一、 pstree - display a tree of processes
1 yum install psmisc //軟體包包含命令pstree、killall、fuser
二、ps - report a snapshot of the current processes
用法:ps [options]
u:以用戶為中心組織進程狀態信息顯示
a: 與終端相關的進程
x: 與終端無關的進程
-e: 顯示所有進程
-f: 顯示完整格式程式信息
-F: 顯示完整格式的進程信息
-H: 以進程層級格式顯示進程相關信息
實例:
[root@alen ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.6 193468 6576 ? Ss 13:49 0:01 /usr/lib/systemd/systemd --switched-root --system
root 2 0.0 0.0 0 0 ? S 13:49 0:00 [kthreadd]
各條目含義:
USER: 進程屬主
PID:進程ID
%CPU: CPU占用時間比
%MEM: 記憶體占用時間比
VSZ:virtual memory size,虛擬記憶體集
RSS:ReSident Size,常駐記憶體集
TTY: 終端
START: 進程狀態
R:running
S: interruptable sleeping
D: uninterruptable sleeping
T: stopped
Z: zombie
+: 前臺進程
l:多線程進程
N:低優先順序進程
<: 高優先順序進程
s: session leader
START: 啟動時間
TIME: 進程占用CPU的累計時長
COMMAND:進程由哪條命令運行起來的
[root@alen ~]# ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 13:49 ? 00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 2 root 2 0 0 13:49 ? 00:00:00 [kthreadd]
各條目含義:
UID: 進程屬主id
PID: 進程id
PPID:父進程id
C: CPU編號
STIME: start time
TTY:終端
TIME:進程占用CPU累計時長
[root@alen ~]# ps -eFH UID PID PPID C SZ RSS PSR STIME TTY TIME CMD root 2 0 0 0 0 1 13:49 ? 00:00:00 [kthreadd] root 3 2 0 0 0 0 13:49 ? 00:00:00 [ksoftirqd/0]
ps -eo {pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,comm}
ps -axo {stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm}
ni:nice值
pri: priority,優先順序
psr: processor,CPU
rtprio: 實時優先順序
三、pgrep, pkill - look up or signal processes based on name and other attributes
用法:pgrep [options] pattern pkill [options] pattern -u uuid: effective user,有效用戶id -U uuid:real user,實際用戶id -t terminal: 與指定終端相關的進程 -l: 顯示進程名 -a: 顯示完整格式的進程名 -P pid:顯示其父進程為此處指定的進程的進程列表
四、pidof -- find the process ID of a running program,根據進程名獲取其PID
五、top - display Linux processes,動態顯示進程狀態
[root@alen ~]# top
top - 19:43:38 up 5:53, 3 users, load average: 0.00, 0.01, 0.05 Tasks: 117 total, 1 running, 114 sleeping, 2 stopped, 0 zombie %Cpu(s): 0.0 us, 0.0 sy, 0.0 ni, 99.8 id, 0.2 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 997980 total, 454352 free, 154824 used, 388804 buff/cache KiB Swap: 2097148 total, 2097148 free, 0 used. 647980 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 703 root 20 0 298712 6112 4784 S 0.3 0.6 0:24.18 vmtoolsd 1 root 20 0 193468 6576 4088 S 0.0 0.7 0:02.07 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd
內置命令:
排序:
P:以占據的CPU百分比排序
M:以占據的記憶體百分比排序
T:以累計占據CPU時長排序
首部信息顯示與關閉:l鍵
Tasks及cpu信息顯示與關閉:t鍵
cpu分別顯示:數字1
memory信息: m鍵
修改刷新時間間隔:s鍵
終止指定進程:k鍵
退出命令:q鍵
選項:
-d #: 指定刷新時間間隔,預設為3秒
-b: 以批次方式顯示
-n #: 顯示多少批次
第一行:
top - 19:43:38 up 5:53, 3 users, load average: 0.00, 0.01, 0.05
當前系統時長 運行時長 當前系統登錄的用戶數 平均負載(過去一分鐘、五分鐘、十五分鐘)
第二行:
Tasks: 117 total, 1 running, 114 sleeping, 2 stopped, 0 zombie
運行的進程數 運行狀態的進程數 睡眠態的進程數 停止態的進程數 僵死態的進程數
第三行
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni, 99.8 id, 0.2 wa, 0.0 hi, 0.0 si, 0.0 st
用戶空間程式占用的百分比 內核空間 nice值 空閑比例 wait等待io完成的時間 處理硬體中斷 處理軟中斷(模式切換) 虛擬化技術所使用的時間
第四行
KiB Mem : 997980 total, 454352 free, 154824 used, 388804 buff/cache
物理記憶體總空間 空閑空間 已用空間 buff和cache占據的空間
KiB Swap: 2097148 total, 2097148 free, 0 used. 647980 avail Mem
總空間 空閑空間 可用空間
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
進程號 進程屬主 優先順序 nice值 虛擬記憶體集 常駐記憶體集 共用記憶體大小 進程狀態
六、htop - interactive process viewer,動態顯示進程狀態,(需要設置EPEL源)
[root@alen ~]# htop
選項:
-d #:指定延遲時間
-u UserName: 僅顯示指定用戶的進程
-s COLOMN:以指定欄位進行排序
s:跟蹤選定進程的系統調用
l:跟蹤選定進程打開的文件列表
a:將選定的進程綁定至某指定cpu核心
t:顯示進程數
七、vmstat - 報告虛擬記憶體的統計信息
用法:vmstat [-n] [延時[次數]]
[root@alen ~]# vmstat procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 679632 2120 175388 0 0 69 4 93 109 0 0 99 0 0 procs: r: 等待運行的進程的個數 b:處於不可中斷睡眠態的進程個數:(被阻塞的隊列的長度) memory: swap: 交換記憶體的使用總量 free:空閑物理記憶體總量 buffer:用於buffer的記憶體總量 cache:用於cache的記憶體總量 swap: si:數據進入swap中的數據速率(kb/s) so:數據離開swap中的數據速率(kb/s) io: bi:從塊設備讀入數據到系統的速率(kb/s) bo:保存數據至塊設備的速率 system: in:interrupts,中斷速率 cs:context switch,進程切換速率 cpu: us:用戶空間占據cpu的比例 sy:內核空間占據cpu的比例 id:空閑比例 wa: 等待IO完成所消耗的時間比例 st:被虛擬化技術使用的時間比例 選項: -s: 顯示記憶體的統計數據
八、pmap - report memory map of a process,報告記憶體的映射關係
pmap [options] pid [...]
-x:顯示詳細格式的信息
另外一種實現:
cat /proc/PID/maps
九、glances - A cross-platform curses-based system monitoring tool
用法:glances [OPTIONS]: h打開幫助選項
內建命令:
a Sort processes automatically b Bytes or bits for network I/O c Sort processes by CPU% l Show/hide alert logs m Sort processes by MEM% w Delete warning alerts u Sort processes by USER x Delete warning and critical alerts p Sort processes by name 1 Global CPU or per-CPU stats i Sort processes by I/O rate I Show/hide IP module t Sort processes by TIME D Enable/disable Docker stats d Show/hide disk I/O stats T View network I/O as combination f Show/hide filesystem stats U View cumulative network I/O n Show/hide network stats F Show filesystem free space s Show/hide sensors stats g Generate graphs for current history 2 Show/hide left sidebar r Reset history z Enable/disable processes stats h Show/hide this help screen 3 Enable/disable quick look plugin q Quit (Esc and Ctrl-C also work) e Enable/disable top extended stats / Enable/disable short processes name 0 Enable/disable Irix process CPU
常用選項: -b: 以Byte為單位顯示網卡數據速率 -d:關閉磁碟I/O模塊 -f /path/to/somefile: 設定輸入文件位置及其格式 -o {html|CSV}: 輸出格式 -m:禁用mount模塊 -n:禁用網路模塊 -t #:延遲時間間隔 -l:每個CPU的相關數據單獨顯示
C/S模式下運行glances命令
服務模式: glances -s -B 192.168.0.108 //指明監聽於本機哪個地址 客戶端模式: glances -c 192.168.0.108 //要連入的伺服器地址
十、dstat - versatile tool for generating system resource statistics,用來顯示系統資源統計數據的精巧的工具
用法:dstat [-afv] [options..] [delay [count]] -c:顯示cpu相關信息 -C #,#...,total -d:顯示disk相關信息 -D total,sda,sdb,... -g: 顯示page相關統計數據 -i:顯示中斷的統計數據 -m: 顯示memory相關統計數據 -n: 顯示network相關統計數據 -p:顯示process相關統計數據 -r:顯示io請求相關統計數據 -s:交換記憶體的相關統計數據 --tcp --udp --unix --raw --socket -ipc: 進程間通信 --top-cpu:顯示最占用cpu的進程 --top-io:顯示最占用io的進程 --top-mem:顯示最占用記憶體的進程 --top-lantency:顯示延遲最大的進程
十一、kill - 終止進程
kill -l 或 man 7 signal 常用信號: 1) SIGHUP: 無須關閉進程而讓其重讀配置文件 2) SIGINT:中止正在運行的進程,相當於Ctrl+c 9) SIGKILL: 殺死正在運行的進程 15) SIGTERM:終止正在運行的進程 18) SIGCONT:發信號讓進程繼續運行 19) SIGSTOP:發信號讓進程停止態 向進程發信號: kill [ -SIGNAL ] PID...
終止“名稱”之下所有的進程: killall [ -SIGNAL ] Program
十二、linux作業控制
前臺作業:通過終端啟動,且啟動後一直占據終端
後臺作業:通過終端啟動,但啟動後即轉入後臺(釋放終端)
讓作業運行於後臺:
1.運行中的作業: Ctrl+z
2.尚未啟動的作業: COMMAND & //這種方式雖然被送往後臺,但依然會與終端相關
# nohup COMMAND & //送往後臺後與終端無關
查看所有作業:# jobs
作業控制:
#fg [[%]JOB_NUM]:把指定的後臺作業調回前臺 #bg [[%]JOB_NUM]:讓送往後臺的作業在後臺繼續運行 #kill [[%]JOB_NUM]: 終止指定的作業
十三、進程優先順序
靜態優先順序: 100-139
進程預設啟動的nice值為0,優先順序為120
nice命令:
nice [OPTIONS] [COMMAND [ARG]...] -n # : //如果不指定n的值則預設為10,也就是優先順序130
renice命令:
renice [-n] priority pid... //對已經運行的進程設置nice值
查看進程nice值:
ps axo pid,comm,ni
未涉及到的其他命令:sar,tsar,iostat,iftop