進程管理的操做命令html
爲了管理這些linux進程,用戶應該可以:linux
查看全部運行中的進程vim
查看進程消耗資源緩存
定位個別進程而且對其執行指定操做服務器
改變進程的優先級多線程
殺死指定進程socket
限制進程可用的系統資源等tcp
linux提供了許多命令來讓用戶來高效掌控上述的操做;
ide
1.pstree - 顯示進程的樹狀圖來展現進程間關係ui
linux中,每個進程都是由其父進程建立的。此命令以可視化方式顯示進程,經過顯示進程的樹狀 圖來展現進程間關係。若是指定了pid了,那麼樹的根是該pid,否則將會是init(pid: 1)。
2.ps -
Linux 中最基礎的瀏覽系統中的進程的命令。能列出系統中運行的進程,包括進程號、命令、CPU使用量、內存使用量等。下述選項能夠獲得更多有用的消息。
三種風格的選項options:
UNIX options, which may be grouped and must be preceded by a dash.
BSD options, which may be grouped and must not be used with a dash.
GNU long options, which are preceded by two dashes.
BSD-style
a:顯示全部與終端相關的進程
x:顯示全部與終端無關的進程
u:顯示發起進程的用戶的名稱
經常使用三者組合,aux
顯示結果:
其顯示的結果各字段的含義:
USER:進程全部者
PID:進程標識符
%CPU:進程所佔CPU處理時間的百分比
%MEM:進程佔用內存百分比
VSZ:虛擬內存集(可交換內存集)
RSS:常駐內存集
TTY:進程與哪一個終端相關,標識與終端無關
STAT:進程的狀態,以下:
R:running正在運行的進程;
S:interuptible sleep,可中斷睡眠狀態;
D:uninteruptible sleep,不可中斷睡眠狀態;Disk Block;
T:Trace/STOPPED:被跟蹤/已中止
Z:Zombie,僵死態 父進程已消失
+: 表示是一個前臺進程;
l:包含多線程的進程
<: 高優先級進程
N:低優先級進程
s:Session leader 有子進程的父進程;
START:進程開始執行時的時間戳
TIME:進程累計的cpu佔用時間;
COMMAND:啓動進程的命令行參數
UNIX風格的選項:
-e:顯示全部進程
-f:顯示完整格式的進程信息
-F:與-f幾乎相同
經常使用選項組合:-ef
其結果以下:
雖然跟ps aux所顯示的結果相似,但也有不一樣之處:
PPID:父進程的pid
C:進程佔用的CPU時間百分比
3.pgrep, pkill - look up or signal processes based on name and other attributes
根據進程名稱或者其餘屬性查看進程或向進程發送信號
pgrep [opts] pattern
經常使用選項:
-u uid:顯示進程的有效用戶
-U uid:顯示進程的真實用戶
-t TERM:顯示與指定終端相關的進程
-l:顯示進程名稱和PID
-a:顯示進程的完整參數
4.pidof -- find the process ID of a running program。
顯示指定進程的PID
5.top - display Linux processes
這個命令顯示的內容仍是畢竟詳盡的:
首先是top的首部:
top - 16:47:00 up 7:53, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 393 total, 1 running, 392 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.1 us, 0.2 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1001360 total, 542116 free, 201176 used, 258068 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 599600 avail Mem
第一行:uptime信息
當前系統時間 系統運行時長 當前登陸系統的用戶總數 過去的1,5,15分鐘三個時間段的在CPU上等待運行的進程隊列的平均長度
第二行:系統中運行的進程總數 正在運行的 睡眠狀態的 已中止的 僵死態的
第三行:CPU的佔用百分比
us:user space 用戶空間的進程佔用的cpu時間的百分比
sy:system 內核空間的內核進程佔用的cpu時間百分比
ni:使用nice值調整了進程優先級以後,額外多佔用的cpu時間的百分比
id:idle,cpu空閒時間的百分比,通常爲10-20%;
wa:waiting,等待IO完成所消耗的CPU時間的百分比
hi:hardware interrupting,處理硬件中斷事件所消耗的CPU時間的百分比
si:software interrupting,處理軟件中斷事件所消耗的CPU時間的百分比
st:stolen,被虛擬化程序等偷走的cpu時間的百分比
第四行:以KB爲單位顯示物理內存空間的使用狀況
total:物理內存的總大小
free:空閒的物理內存空間大小
used:已經被使用的物理內存空間大小
buff/cache:緩衝區和緩存區所消耗的物理內存大小;隨時能夠回收
第五行:以KB爲單位顯示交換分區SWAP空間的使用狀況
'total' 'used' 'free' 'avail Mem'
首部以後的內容 就相似與ps aux了
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
top是前臺進程,具備交互式命令以下:
1 顯示/隱藏CPU核心信息
P 根據CPU佔用百分比排序
M 根據物理內存佔用百分比進行排序
T 根據累計CPU佔用時間進行排序
l 關閉/顯示uptime信息
t 關閉/顯示第二三行信息
m 關閉/顯示第四五行信息
q 退出top交互模式
s 修改top的刷新時間間隔
k 終止指定PID的進程
經常使用選項:
-d #:至關於交互模式裏的s,指定刷新的時間間隔;默認3.0s
-b:按照批次顯示進程信息
-n #:與-b一塊兒使用,標識顯示多少批次
6.vmstat - 報告虛擬內存的統計信息
用法:vmstat [options] [delay [count]]
options:
-s 統計內存使用的相關信息 /proc/meminfo文件中提取的信息;
delay:按照默認是s爲時間,重複執行這個命令
count:指定要執行vmstat的次數
輸出信息的格式以下:
各字段含義以下:
procs
r running運行中
b block阻塞態
memory
swpd
free
buff
cache
swap
si swap in 頁框進入swap空間
so swapout swap空間拿出去到頁框
io
bi blockin 加載到內存過程
bo blockout 內存保存數據到塊設備
system
in interrupt 中斷
cs 上下文切換
cpu
us userspace
sy
id idle
wa waiting
st stolen
7.pmap - report memory map of a process 進程映射表
用法:pmap [options] pid [...] 參考/proc/DIGIT(pid)/maps
要修改proc目錄下PID目錄下的文件 不能用vim,而是echo > 重定向的方式
options:-x,--extended : 顯示一些擴展信息,如RSS Dirty;
8.htop,glances dstat
htop - 加強版top,我的認爲格式比top更美觀
用法:htop [-dChusv]
選項:
-d #:htop刷新的時間間隔
-u USERNAME:顯示指定用戶的進程
-s COLUME_NAME:根據指定字段進行排序
交互式命令:
l:顯示指定進程打開的文件列表
t/F5:顯示進程樹結構
a:選定的進程綁定到某指定的CPU核;
glances - A cross-platform curses-based monitoring tool
用法:glances [-bdhmn1] [-t refresh] [-f file] [-o output]
經常使用選項:
-b:K Byte爲單位,顯示網卡的數據速率
-d 關閉磁盤的IO模塊
-m 關閉Mount模塊
-n 關閉Network模塊
-1 單獨顯示每顆CPU核心的數據統計信息
-t # 設定刷新時間間隔
-o {HTML|CSV} 爲輸出數據指定輸出的格式
-f /PATH/TO/OUTPUT_DIR 指定輸出文件的路徑,默認輸出文件名爲glances.html或者glances.csv
此命令 能夠工做於C/S模式下;
S:服務器模式
glances -s -B IPADDR
這裏的IPADDR是服務器本地的某個IP地址;
C:客戶端模式
glances -c IPADDR
這裏的IPADDR是遠程服務器指定監聽的IP地址
進程之間是能夠通訊的,可是不能隨意通訊;linux內核管理進程方式--單獨管理;
IPC--Inter-Process Communication
1.signal
2.semaphore
3.shared memory(SHM)共享內存
4.socket
dstat:
用法:dstat [-afv] [options..] [delay [count]]
經常使用選項:
-c --cpu
-d --disk
-n --net
-g --paging
-y --sys
以上五個爲默認選項
--tcp
--udp
「殺死」終止進程的命令 -- kill pkill kilall
1.kill - teminate a process
用法 kill [-s signal] pid..
查看信號signal的信息: kill -l
有效信號的標識方法
1.使用數字編碼
2.完整名稱
3.簡寫名稱,即不包含‘SIG’的其他部分
經常使用信號:
1)SIGHUP 無需關閉對應進程而讓其從新選取自身的配置文件
2)SIGINT 通常用於終止正在運行的前臺進程 至關於Ctrl+C
9)SIGKILL 沒有任何預兆的終止正在運行的進程,'殘暴值'五顆星!
15)SIGTERM 默認信號,終止正在運行的進程,但容許進程'料理後事'
18)SIGCONT 讓轉入後臺的進程繼續運行
19)SIGSTOP 讓進程轉入後臺並中止運行
2.killall - kill processes by name
用法:killall PRO_NAME
3.pkill -
根據模式匹配(PATTERN)來進行終止進程;可能會誤終止其餘進程
進程做業管理命令:
jobs,bg,fg
前面介紹到,進程有前臺進程和後臺進程,那麼如何讓做業工做與後臺?
1.對於正在運行的前臺做業:Ctrl+z
注意:其實是向此進程發送了19號信號,轉入後臺後即中止運行
2.對於還沒有啓動的做業,使其啓動並轉入後臺:
# COMMAND &
注意:此類做業是從前臺啓動,可是啓動後當即轉入後臺,但即使如此,此進程也是與終端相 關聯的進程;若是終端關閉,則此類進程也會終止;
3.對於還沒有啓動的做業,使其啓動並轉入後臺,且同時解除與終端的關聯
# nohup COMMAND &
查看後臺做業:
jobs
將後臺做業轉入前臺運行
fg [JOB_ID]
使後臺做業在後臺運行:
bg [JOB_ID]
終止後臺做業:
kill %JOB_ID
kill %1
調整進程優先級的命令
nice - run a program with modified scheduling priority
用法:nice [OPTION] [COMMAND [ARG]...]
選項 -n NICE:指定nice值 默認爲10
renice - alter priority of running processes
用法:renice [-n] priority pid...
選項:
-n NICE 調整指定nice值,在原有的nice值的基礎上+NICE