ps支持三種選項:1.UNIX短選項 如‐A ‐e。2.BSD選項 如a。3.GNU長選項 如‐‐help。
注意:在使用過程中帶-和不帶-的區別
不加任何選項默認是顯示當前終端中的進程,看不到其它終端運行的進程
BSD風格選項
a 選項包括所有終端中的進程
ps a顯示所有終端登陸執行的進程,顯示內容過少
x 選項包括不鏈接終端的進程
在顯示的第二列TTY中問號代表與終端無關的,是系統級的服務
u 選項顯示進程所有者的信息
VSZ承諾給的內存空間
RSS實際的內存空間
START進程啟動的時間
f 選項顯示進程樹,相當于‐‐forest
顯示進程樹,形同pstree
k|‐‐sort 屬性對屬性排序,屬性前加-表示倒序
對ps顯示的選項進行排序,例如user、pid、%cpu、%mem、vsz、rss、tty、stat、start、time、command,例如ps aux k tty表示對tty進行排序
o 按照定制的信息顯示,例如pid、cmd、%cpu、%mem
只顯示想看到的選項,例如pid、cmd、tty、%cpu、%mem等,默認是以PID的序號從小到大排序,注意與ax合用時把o放到最后
L 顯示支持的屬性列表
顯示ps支持查看的屬性,例如pid、cmd、tty、%cpu、%mem
一般程序的有效用戶和實際用戶是同一個人,但是帶有特殊權限位的程序可以造成這種區別,例如passwd上面有suid,執行命令時的實際用戶是命令的執行者,但程序的擁有者是root
ruser實際用戶(實際所有者) euser有效用戶(所有者)
UNIX風格選項
-U userlist 指定真正的用戶ID或名稱
例如ps -U wang wang用戶打開的進程列表
-u userlist 指定有效的用戶ID或名稱
例如ps -u wang wang用戶打開的有效進程列表
-p pid 只顯示pid號碼的進程
例如ps -p pID號碼 顯示指定的PID號碼的進程
-ppid pid 顯示PID號碼的子進程
例如ps -ppid 3235 顯示PID號碼為3235的子進程
-f 顯示完整格式程序信息,通常與-e合用ps -ef
-e 顯示所有進程,相當于-A
-o 指定要顯示的進程
-t 顯示某個終端上的進程,通常與-f連用
例如ps -ft pts/1 查看終端1上的進程列表
-C 指定命令的進程信息
ps -C bash 查看bash產生的進程列表信息,腳本中寫還是要加上#!/bin/bash要不然不能通過ps -C 1.sh查找,能看到的是bash
通過腳本名稱找進程,腳本中要有#!/bin/bash,只能以./的模式運行,不能用bash運行
可以顯示多個腳本的信息ps -C 1.sh -C 2.sh
ps ‐p 1244 ‐o comm= 通過PID查找產生進程的命令
ps ‐C f1.sh ‐o pid= 通過命令查找進程的PID
ps -C sshd,bash 查看sshd和bash產生的進程
ps ‐eo comm,etime,user | grep nginx 查看進程的執行時間
查找占用最多內存和CPU的進程:
ps ‐eo pid,ppid,cmd,%mem,%cpu ‐‐sort=‐%mem | head
ps ‐eo pid,ppid,cmd,%mem,%cpu ‐‐sort=‐%cpu | head
pgrep 靈活搜索,支持正則表達式,可以用來過濾搜索
-u uid: effective user,生效者
-U uid: real user,真正發起運行命令者
-t terminal: 與指定終端相關的進程
pgrep -t pts/1 查看終端1上的進程列表,默認只顯示pid號碼,加上-l顯示程序名,例如pgrep -lt pts/1
-l: 顯示進程名
-a: 顯示完整格式的進程名
centos6不支持此選項,pgrep -a “sshd” 查找與sshd相關的進程
-P pid: 顯示指定進程的子進程 例如pgrep -P 1 查看1的子進程
pidof按照程序名查找進程號 pidof vim 查找vim的進程號
uptime查看系統負載情況
格式為:系統時間 啟動了多久 登陸的用戶 負載(系統平均負載:1分鐘 5分鐘 10分鐘)
top命令動態觀察負載情況,默認以cpu的百分比來排序,cpu同一時間只能做一件事
%Cpu(s): 0.0 us(分配給用戶), 0.0 sy(分配給系統), 0.0 ni(調整優先級),100.0 id(空閑的), 0.0 wa(等待), 0.0 hi(硬中斷), 0.0 si(軟中斷), 0.0 st(被盜取的時間)
排序(從大到小)
P:以占據的CPU百分比排序,%CPU
M:占據內存百分比排序,%MEM
T:累積占據CPU時長排序,TIME+
首部信息顯示
uptime信息:l命令,隱藏uptime信息顯示
tasks及cpu信息:t命令,模式切換或者是隱藏task及cpu信息顯示
cpu分別顯示:1 (數字),顯示所有的cpu數據
memory信息:m命令,模式切換或者隱藏內存信息
退出命令:q,退出當前的觀察
修改刷新時間間隔:s,默認是3秒
終止指定進程:k,殺死相關進程,輸入k后默認是殺死占用cpu最多的進程,輸入pid后提示傳送什么信號結束進程,默認15正常退出
保存文件:W,可以把當前的狀態瞬間保存一下,默認以隱藏文件保存在當前用戶的家目錄中,名字為.toprc
選項
-d #: 指定刷新時間間隔,默認為3秒
例如 top -d 6顯示的內容6秒刷新一次
-b: 全部顯示所有進程
默認只能顯示前面的若干進程(不可以上下拉),top -b可以顯示所有(可以上下拉)
-n #: 刷新多少次后退出
默認不停的刷新,-n指定次數后退出,top -n 3 -b -d 2顯示所有進程,2秒刷新一次,刷新3次后退出
htop 默認沒有安裝,使用yum install -y htop進行安裝
選項:
-d #: 指定延遲時間;
設置刷新的延遲時間。例如,htop -d 100 命令會使輸出在1秒后才會刷新(參數 -d 的單位是10微秒)
-u UserName: 僅顯示指定用戶的進程
例如 htop -u root
-s COLUME: 以指定字段進行排序
子命令:
s: 跟蹤選定進程的系統調用
l: 顯示選定進程打開的文件列表
a:將選定的進程綁定至某指定CPU核心 臨時綁定,退出htop就取消綁定
t: 顯示進程樹
free查看內存的使用情況
-b 以字節為單位
-m 以MB為單位
-g 以GB為單位
-h 易讀格式
-o 不顯示-/+buffers/cache行 contos6上可用,centos7上取消這一行
-t 顯示RAM + swap的總和
-s n 刷新間隔為n秒
-c n 刷新n次后即退出
第一部分Mem行解釋:
total:內存總數;
used:已經使用的內存數;
free:空閑的內存數;
shared:當前已經廢棄不用;
buffers Buffer:緩存內存數;
cached Page:緩存內存數。
關系:total = used + free
第二部分(-/+ buffers/cache)解釋:
(-buffers/cache) used內存數:第一部分Mem行中的 used – buffers – cached
(+buffers/cache) free內存數: 第一部分Mem行中的 free + buffers + cached
可見-buffers/cache反映的是被程序實實在在吃掉的內存,而+buffers/cache反映的是可以挪用的內存總數。
第三部分是指交換分區。
buffers和cached并不占用內存,可以釋放。
在內存中/proc/sys/vm/drop_caches的值為零,echo 1 > /proc/sys/vm/drop_caches清空緩存
vmstat命令,查看虛擬內存信息
vmstat 2 5兩秒執行一次,執行5次退出
procs:
r:可運行(正運行或等待運行)進程的個數,和核心數有關
b:處于不可中斷睡眠態的進程個數(被阻塞的隊列的長度)
? memory:
swpd: 交換內存的使用總量
free:空閑物理內存總量
buffer:用于buffer的內存總量
cache:用于cache的內存總量
? swap:
si:從磁盤交換進內存的數據速率(kb/s)
so:從內存交換至磁盤的數據速率(kb/s)
IO:以內存為參考,出內存是寫磁盤,進內存是讀磁盤
bi: Blocks received from a block device (blocks/s).每秒從塊設備接收到的塊數,單位:塊/秒 也就是讀塊設備。
bo: Blocks sent to a block device (blocks/s).每秒發送到塊設備的塊數,單位:塊/秒 也就是寫塊設備。
system:
in: interrupts 中斷速率,包括時鐘
cs: context switch 進程切換速率
? cpu:
us:Time spent running non-kernel code
sy: Time spent running kernel code
id: Time spent idle. Linux 2.5.41前,包括IO-wait time.
wa: Time spent waiting for IO. 2.5.41前,包括in idle.
st: Time stolen from a virtual machine. 2.6.11前, unknown.
? 選項:
-s: 顯示內存的統計數據
iostat:統計CPU和設備IO信息
示例:iostat 1 10 1秒鐘顯示一次顯示10次退出
pmap命令:進程對應的內存映射,了解進程是否在健康狀態,如果某個進程的內存一直增加而不減少,今后導致內存耗盡系統崩潰,稱之為內存泄漏
pmap [options] pid […]
-x: 顯示詳細格式的信息
示例:pmap -x 1 查看pid為1進程的詳細信息 臟數據是正在修改處在中間狀態的數據
? 另外一種實現:
cat /proc/PID/maps cat/proc/1/maps
glances命令:查看遠程主機的狀態,安裝軟件yum install -y glances,跨網絡通訊,一個做服務器一個做客戶端配合成對出現,最好服務器和客戶端的版本一致
? glances [-bdehmnrsvyz1] [-B bind] [-c server] [-C conffile] [-p port] [-P password] [–password] [-t refresh] [-f file] [-o output]
使用方法:在服務器上運行,然后在客戶機上連接查看
服務器端運行:glances -s B 192.168.30.7打開glances
客戶端運行:glances -c 192.168.30.7連接到服務器上查看服務器主機的狀態
? 內建命令:
a Sort processes automatically l Show/hide logs
c Sort processes by CPU% b Bytes or bits for network I/O
m Sort processes by MEM% w Delete warning logs
p Sort processes by name x Delete warning and critical logs
i Sort processes by I/O rate 1 Global CPU or per-CPU stats
d Show/hide disk I/O stats h Show/hide this help screen
f Show/hide file system stats t View network I/O as combination
n Show/hide network stats u View cumulative network I/O
s Show/hide sensors stats q Quit (Esc and Ctrl-C also work)
y Show/hide hddtemp stats
常用選項:
‐b: 以Byte為單位顯示網卡數據速率
‐d: 關閉磁盤I/O模塊
‐f /path/to/somefile: 設定輸入文件位置
‐o {HTML|CSV}:輸出格式
‐m: 禁用mount模塊
dstat命令:系統資源統計,代替vmstat,iostat,默認沒有安裝,yum install -y dstat
dstat [-afv] [options..] [delay [count]]
-c: 顯示cpu相關信息
-C #,#,…,total
-d: 顯示disk相關信息
-D total,sda,sdb,…
-g:顯示page相關統計數據
-m: 顯示memory相關統計數據
-n: 顯示network相關統計數據
-p: 顯示process相關統計數據
-r: 顯示io請求相關的統計數據
-s: 顯示swapped相關的統計數據
‐n: 禁用網絡模塊
‐t #: 延遲時間間隔
‐1:每個CPU的相關數據單獨顯示
–tcp
? –udp
? –unix
? –raw
? –socket
? –ipc
? –top-cpu:顯示最占用CPU的進程
? –top-io: 顯示最占用io的進程
? –top-mem: 顯示最占用內存的進程
? –top-latency: 顯示延遲最大的進程
iotop命令是一個用來監視磁盤I/O使用狀況的top類工具iotop具有與top相似的UI,其中包括PID、用戶、I/O、進程等相關信息,可查看每個進程是如何使用IO
iotop輸出
第一行:Read和Write速率總計
第二行:實際的Read和Write速率
第三行:參數如下:
線程ID(按p切換為進程ID)
優先級
用戶
磁盤讀速率
磁盤寫速率
swap交換百分比
IO等待所占的百分比
線程/進程命令
kill命令:
向進程發送控制信號,以實現對進程管理,每個信號對應一個數字,信號名稱以SIG開頭(可省略),不區分大小寫
顯示當前系統可用信號: kill –l,trap -l
常用信號:man 7 signal
1) SIGHUP: 無須關閉進程而讓其重讀配置文件
2) SIGINT: 中止正在運行的進程;相當于Ctrl+c
3) SIGQUIT:相當于ctrl+\,相當于quit
9) SIGKILL: 強制殺死正在運行的進程,不一定殺死所有進程,容易造成數據的丟失,不建議用 -9雖然殺不死init進程(進程號為1),但是對系統造成了傷害
15) SIGTERM:終止正在運行的進程,正常退出 無法使用殺死當前bash
18) SIGCONT:繼續運行
19) SIGSTOP:后臺休眠
指定信號的方法:
(1) 信號的數字標識:1, 2, 9
(2) 信號完整名稱:SIGHUP
(3) 信號的簡寫名稱:HUP
更改http的名稱及端口號例如 kill -1 httpd 令http重讀配置文件,不是所有的進程發數字1就能有效
使用方法:先使用ps aux查出進程編號,再使用kill -1 pid或者kill -HUP pid或者kill -hup pid
按PID:kill [-SIGNAL] pid …
kill –n SIGNAL pid;kill –s SIGNAL pid 一般簡寫為kill -1 pid
按名稱:killall [-SIGNAL] comm…
例如執行了三個同樣的命令但是pid不同可以使用killall 命令名稱 直接殺死所有的與此命令有關的進程,關閉服務的時候本質上調用的就是killall命令
按模式:pkill [options] pattern,支持正則表達式
-SIGNAL
-u uid: effective user,生效者
-U uid: real user,真正發起運行命令者
-t terminal: 與指定終端相關的進程
例如pkill -t pts/1 殺死在pts/1終端上的進程,可以加上-9 pkill -9 -t pts/1強行終止進程
-l: 顯示進程名(pgrep可用)
-a: 顯示完整格式的進程名(pgrep可用)
-P pid: 顯示指定進程的子進程
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/97631