進程概念
內核功能:進程管理 文件系統 網絡功能 內存功能 驅動功能 安全功能
Process: 運行中的程序的一個副本,是被載入內存的一個指令集合
進程ID(Process ID,PID)號碼被用來標記各個進程
UID、GID、和SELinux語境決定對文件系統的存取和訪問權限,
通常從執行進程的用戶來繼承
存在生命周期
task struct:Linux內核存儲進程信息的數據結構格式
task list:多個任務的的task struct組成的鏈表
進程創建:
init:第一個進程
父子關系
進程:都由其父進程創建,CoW
fork(), clone()
磁盤空間大?。嚎?內存空間大?。喉?/div>
LRU: 近期最少使用算法 釋放內存
MMU: 負責轉換線性和屋里地址
TLB:翻譯后備緩存沖器,用于保護虛擬地址和物理地址映射關系的緩存
shared 多個進程共享的空間
Liunx內核:搶占試多任務
進程狀態:運行態 就緒態 睡眠態 停止態 僵死態
S:可中斷的休眠
pstree 顯示進程
ps:查看進程狀態 可以顯示短暫的快照
ps [OPTION]…
? 支持三種選項:
UNIX選項 如-A -e
BSD選項 如a
GNU選項 如–help
? 選項:默認顯示當前終端中的進程
? a 選項包括所有終端中的進程
? x 選項包括不鏈接終端的進程
? u 選項顯示進程所有者的信息
? f 選項顯示進程樹,相當于 –forest
? k|–sort 屬性 對屬性排序,屬性前加- 表示倒序
? o 屬性… 選項顯示定制的信息 pid、cmd、%cpu、%mem
? L 顯示支持的屬性列表
? -C cmdlist 指定命令,多個命令用,分隔
? -L 顯示線程
? -e: 顯示所有進程,相當于-A
? -f: 顯示完整格式程序信息
? -F: 顯示更完整格式的進程信息
? -H: 以進程層級格式顯示進程相關信息
? -u userlist 指定有效的用戶ID或名稱
? -U userlist 指定真正的用戶ID或名稱
? -g gid或groupname 指定有效的gid或組名稱
? -G gid或groupname 指定真正的gid或組名稱
? -p pid 顯示指pid的進程
? –ppid pid 顯示屬于pid的子進程
? -M 顯示SELinux信息,相當于Zy
VSZ: Virtual memory SiZe,虛擬內存集,線性內存
? RSS: ReSident Size, 常駐內存集
? STAT:進程狀態
R:running
S: interruptable sleeping
D: uninterruptable sleeping
T: stopped
Z: zombie
+: 前臺進程
l: 多線程進程
L:內存分頁并帶鎖
N:低優先級進程
<: 高優先級進程
s: session leader,會話(子進程)發起者
ps
? ni: nice值
? pri: priority 優先級
? psr: processor CPU編號
? rtprio: 實時優先級
? 示例:
ps axo pid,cmd,psr,ni,pri,rtprio
? 常用組合:
aux
-ef
-eFH
-eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,comm
axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
查詢你擁有的所有進程:
ps -x
? 顯示指定用戶名(RUID)或用戶ID的進程:
ps -fU apache
ps -fu 48
? 顯示指定用戶名(EUID)或用戶ID的進程:
ps -fu wang
ps -fu 1000
? 查看以root用戶權限(實際和有效ID)運行的每個進程:
ps -U root -u root
? 列出某個組擁有的所有進程(實際組ID:RGID或名稱):
ps -fG nginx
top:有許多內置命令:
排序:
P:以占據的CPU百分比,%CPU
M:占據內存百分比,%MEM
T:累積占據CPU時長,TIME+
首部信息顯示:
uptime信息:l命令
tasks及cpu信息:t命令
cpu分別顯示:1 (數字)
memory信息:m命令
退出命令:q
修改刷新時間間隔:s
終止指定進程:k
保存文件:W
欄位信息簡介
us:用戶空間
sy:內核空間
ni:調整nice時間
id:空閑
wa:等待IO時間
hi:硬中斷
si:軟中斷(模式切換)
st:虛擬機偷走的時間
選項:
-d #: 指定刷新時間間隔,默認為3秒
-b: 全部顯示所有進程
-n #: 刷新多少次后退出
? htop命令:EPEL源
選項:
-d #: 指定延遲時間;
-u UserName: 僅顯示指定用戶的進程
-s COLUME: 以指定字段進行排序
子命令:
s: 跟蹤選定進程的系統調用
l: 顯示選定進程打開的文件列表
a:將選定的進程綁定至某指定CPU核心
t: 顯示進程樹
ps示例
?列出有效組名稱(或會話)所擁有的所有進程:
ps -fg mysql
ps -fG 27
?通過進程ID來顯示所屬的進程:
ps -fp 1234
?以父進程ID來顯示其下所有的進程,如顯示父進程為1154的所有進程:
ps -f –ppid 1234
?顯示指定PID的多個進程:
ps -fp 1204,1239,1263
?要按tty顯示所屬進程:
ps -ft pst/0
ps示例
?以進程樹顯示系統中的進程如何相互鏈接:
ps -e –forest
?以進程樹顯示指定的進程
ps -f –forest -C sshd
ps -ef –forest | grep -v grep | grep sshd
?要顯示一個進程的所有線程,將顯示LWP(輕量級進程)以及NLWP(輕量級進程數)列:
ps -fL -C nginx
?要列出所有格式說明符:
ps L
?查看進程的PID,PPID,用戶名和命令:
ps -eo pid,ppid,user,cmd
ps示例
?自定義格式顯示文件系統組,ni值開始時間和進程的時間:
ps -p 1234 -o pid,ppid,fgroup,ni,lstart,etime
?使用其PID查找進程名稱:
ps -p 1244 -o comm=
?要以其名稱選擇特定進程,顯示其所有子進程
ps -C sshd,bash
?查找指定進程名所有的所屬PID,在編寫需要從std輸出或文件讀取PID的腳本時這個參數很有用:
ps -C httpd,sshd -o pid=
?檢查一個進程的執行時間
ps -eo comm,etime,user | grep nginx
ps示例
?查找占用最多內存和CPU的進程:
ps -eo pid,ppid,cmd,%mem,%cpu –sort=-%mem | head
ps -eo pid,ppid,cmd,%mem,%cpu –sort=-%cpu | head
?顯示安全信息:
ps -eM
ps –context
?使用以下命令以用戶定義的格式顯示安全信息。
ps -eo euser,ruser,suser,fuser,f,comm,label
?使用watch實用程序執行重復的輸出以實現對就程進行實時的監視,如下面的命令顯示每秒鐘的監視:
watch -n 1 ‘ps -eo pid,ppid,cmd,%mem,%cpu –sort=-%mem | head’
進程優先級
?進程優先級調整:
靜態優先級:100-139
進程默認啟動時的nice值為0,優先級為120
只有根用戶才能降低nice值(提高優先性)
?nice命令:
nice [OPTION] [COMMAND [ARG]…]
?renice命令:
renice [-n] priority pid…
?查看:
ps axo pid,comm,ni
搜索進程
?最靈活:ps 選項 | 其它命令
?按預定義的模式:pgrep
pgrep [options] pattern
-u uid: effective user,生效者
-U uid: real user,真正發起運行命令者
-t terminal: 與指定終端相關的進程
-l: 顯示進程名
-a: 顯示完整格式的進程名
-P pid: 顯示指定進程的子進程
?按確切的程序名稱:/sbin/pidof
pidof bash
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/97628
贊 (1)