本節索引:
一、進程相關概念
二、信號管理操作
三、作業操作 job control
四、Linux進程管理常用命令
一、進程相關概念:
進程是正在運行的程序實體,并且包括這個運行的程序中占據的所有系統資源,比如說CPU,IO,內存,網
絡資源等。通過學習Linux系統進程管理來協調多道程序之間的關系,使CPU得到充分的利用。
進程和程序的區別是什么?
進程是一個動態的概念,當用戶把一個程序或命令執行起來的時候,才有進程的概念,
系統會自動分配一個編號PID給進程。
程序是一個靜態的概念,表現為一個文件
進程的分類:
根據進程與系統終端的關系:
(1)守護進程:在系統引導過程中啟動的進程,即跟終端無關的進程。
(2)前臺進程:跟終端相關,通過終端啟動的進程;
注:守護進程和前臺進程可相互轉化
根據進程占用資源的多少分為:
(1)CPU密集型:對cpu占用率高的進程
(2)IO密集型:占用磁盤讀寫高的進程
進程的狀態:
進程在被內核調度過程中的狀態可分為很多種:
1.運行態:running 進程正在運行中
2.就緒態:ready
3.睡眠態:sleeping
可中斷睡眠:interruptible? 大部分進程處于此狀態,隨時可喚醒
不可中斷睡眠:uninterruptible
4.僵尸態:zombie 找不到歸屬的進程,或父進程已不存在
5.停止態:stopped 不可被調度并運行
進程優先級
進程優先級:
系統優先級:數字越小,優先級越高
0-139(CentOS4,5)
各有140個運行隊列和過期隊列
0-98,99(CentOS6)
實時優先級: 99-0 值最大優先級最高
nice值:-20到19,對應系統優先級100-139或99
Big O:時間復雜度,用時和規模的關系(越往左越好)
O(1), O(logn), O(n)線性, O(n^2)拋物線, O(2^n)
進程內存:
Page Frame: 頁框,用存儲頁面數據,存儲Page 4k
LRU:Least Recently Used 近期最少使用算法,釋放內存
物理地址空間和線性地址空間
MMU:Memory Management Unit負責轉換線性和物理地址
TLB:Translation Lookaside Buffer 翻譯后備緩沖器,用于保存虛擬地址和物理地址
映射關系的緩存
IPC: Inter Process Communication
同一主機: signal:信號
shm: shared memory
semaphore:信號量,一種計數器
不同主機:socket: IP和端口號
RPC: remote procedure call?????? 遠程過程調用
MQ:消息隊列,Kafka,ActiveMQ
二、信號操作管理
我們指定同一主機間的程序是通過信號來進行通訊的,那么我們也可以通過發送信號的方式對進程進行管
理。
使用kill ?-l 命令可以查看當前支持的信號類型:
信號的表示方式:
(1)數字表示:1,2,9
(2)完整名稱:SIGHUP
(3)簡寫名稱:HUP
Linux系統支持的型號類型多達60余種,常用信號類型有:
SIGHUP:1,無須關閉進程而讓其重新讀取配置文件,使新配置生效
SIGINT:2,打斷正在運行中的進程,相當于Ctrl+c
SIGQUIT:3,相當Ctrl+\
SIGKILL:9,強制殺死正在運行的進程
SIGTERN:15,終止正在運行的進程(kill命令默認信號)
SIGCONT:18,繼續運行指定進程
SIGSTOP:19,后臺休眠
信號管理命令
常用的信號管理命令有kill,killall,pkill:
kill命令可用來向進程發送信號指令,以及顯示當前系統可用的信號
kill發送信號格式:
kill [-SIGNAL] PID
如:kill -9 123???????????????? 強制殺死PID為123的進程
killall發送信號格式:
killall [-SIGNAL] PROCESS
如:kill -9 sleep????? 強制殺死sleep進程
注意:kill命令跟PID,killall命令跟進程名
pkill發送信號格式:
pkill [options] pattern
options:
-SIGNAL
-u uid??????????????? 生效者
-U uid?????????????? 真正發起運行命令者
-t terminal?????? 與指定終端相關的進程
-P pid??????????????? 顯示指定進程的子進程
如:pkill -9 -t tty2? 強制殺死tty2終端下的所有進程
三、作業管理(job control)
我們知道,在登錄系統后每一個工作進程都是當前bash的子進程,通過作業管理我們可以
實現多個進程同時運行,這里我們要涉及到兩個新的名詞:前臺作業和后臺作業
前臺作業:通過終端前,且啟動后一直占據終端
后臺作業:可通過終端啟動,但啟動后即轉入后臺運行(釋放前端)
作業狀態切換:
作用運行一共有三種狀態,分別為:前臺執行、后臺執行與后臺休眠(stoped)
jobs命令???????? 顯示當前作業編號以及作業狀態
讓作業運行于后臺:
(1)尚未啟動的作業:COMMAND &
(2)運行中的作業:Ctrl+z,后臺休眠狀態
將后臺休眠|運行作業調回前臺運行:
fg job_num????? 將作業在前臺運行(foreground)
將后臺休眠作業執行后臺運行:
bg job_num???? 將作業在后臺運行(background)
關閉后臺執行:
(1)fg job_num;ctrl+c
(2)kill %job_num
并行運行
同時運行多個進程,提高效率
方法1:
利用腳本
vi all.sh
???????? f1.sh&
???????? f2.sh&
???????? f3.sh&
方法2:
? (CMD1&);(CMD2&);(CMD3&)
方法3:
{ CMD1& CMD2& CMD3& }
執行長時間任務時防止網絡中斷造成操作中斷
方法1:剝離命令與終端的聯系,終端中斷后進程將轉移至1進程上,再恢復
nohup COMMAND &>/dev/null &
方法2:開啟一個screen會話,重新進入后screen -r即可恢復
screen;COMMAND;screen -r 恢復
四、Linux進程管理常用命令
進程的管理命令有:
pstree、ps、pidof、pgrep、pkill、pmap、kill、killall、job、bg、fg等
進程的管理工具:
top、htop、vmstat、dstat、iostat、glances等(下節介紹)
ps ? ? ? ? ? ? ? ? ? 顯示進程狀態
BSD選項:
a?????????????? 所有終端中的進程
x??????????????? 不連接終端的進程
u?????????????? 顯示進程所有者的信息
f??????????????? 顯示進程樹
k|–sort 屬性 對屬性排列,屬性前加-表示倒序
L?????? 顯示支持的屬性
顯示PID,tty,cmd,cpu占用率,內存占用列表,并按%mem排序
ps xo pid,tty,cmd,%cpu,%mem –sort %mem
ps xo pid,tty,cmd,%cpu,%mem k%mem
按%cpu排序,“-”表示倒序
ps xo pid,tty,cmd,%cpu,%mem –sort -%cpu
短選項:
-e????????????? 顯示所有進程
-f?????????????? 顯示完整格式程序信息
-F????????????? 顯示更完整格式的進程信息
-C????????????? 查看指定CMD或腳本的進程,多個命令用“,”分開
顯示PID,命令,pri優先級(數字越大,優先級越高),nice優先級,realtime優先級
ps xo pid,cmd,pri,nice,rtprio
根據進程編號查詢CMD命令
ps -p 3245? -o comm=?????????? 查找PID3245對應的命令名稱
ps -C sleep -o pid=?????????? 根據命令查找pid
常用組合:
ps aux??????????????????????? 顯示所有進程的詳細信息
ps -ef???????????????????????? 類似于aux,缺少cpu%,mem%
ps -eF
pstree ? ? ? ? ? ? ?顯示進程樹
-p ? ? ? ? ? ? ? ? ? ? ? 顯示PID
-h ? ? ? ? ? ? ? ? ? ? ?高亮標注當前使用的進程
pgrep??????????????? 進程搜索命令,支持正則表達式
格式:pgrep [options] pattern
options:
-u uid??????????????? effective user,生效者
-U uid?????????????? real user,真正發起運行命令者
-t terminal?????? 與指定終端相關的進程
-l?????????????? 顯示進程名
-a????????????? 顯示完整格式的進程名
-P pid??????????????? 顯示指定進程的子進程
pidof???????????????? 查找正在運行進程的PID
如:pidof bash??????????????? 顯示bash進程的PID
uptime 命令
顯示當前時間,系統已啟動時間,當前上線人數,系統平均負載(1、5、10分鐘,一般不超過1)
free????????? 顯示內存空間使用狀態
options
-b????????????? 以字節為單位
-m???????????? 以MB為單位
-g????????????? 以GB為單位
-h????????????? 人類已讀格式
pmap?????? 比較專業的查看內存與進程對應關系工具
pmap??? 12? ?????? 查看進程號12的內存與進程對應關系
-x???? 顯示詳細格式的信息
一些Linux常用監控工具命令,我們下節繼續介紹!
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/97513