進程管理
內核的功用:進程管理、文件系統、網絡功能、內存管理、驅動程序、安全功能
用戶模式(空間),內核模式(空間)
Process(進程):運行中的程序的一個副本
存在生命周期
task struct:內核的結構體
Linux內內核存儲進程信息的固定格式:task struct
多個任務的task strcut組件的鏈表:task list
進程的創建:
init
父子關系
進程:都是其父進程創建
fork(),clone()
進程的優先級:
0-139:
·1-99:實時優先級
數字越大優先級越高
·100-139:靜態優先級
數字越小優先級越高
·Nice值:
-20-19
Big 0 (算法的復雜度)
O(1) ,O(logn) ,O(n) ,O(n^2) ,O(2^n)
進程內存:
內存中有線性地址和物理地址,有虛擬內存機制
Page Frame:頁框,用來存儲頁面數據
存儲Page
MMU:Memory Management Unit
IPC:Inter Process Communication
同一主機上通信:
·signal
·shm:shared memory
·semerphor
不同主機上:
·rpc:remote procecure call
·socket:套接字
Linux內核:搶占式多任務
進程類型:
守護進程:在系統引導過程中啟動的進程,跟終端無關的進程
daemon:守護進程
前臺進程:跟終端有關,通過終端啟動的進程
注意:也可把在前臺啟動的進程送往后臺(比如http等服務類進程)
進程狀態:
運行態:running
就緒態:ready
睡眠態:
可中斷睡眠:interruptable
不可中斷睡眠:uninterruptable
停止態:暫停于內存中,但不會被調度,除非手動啟動之,stopped
僵死態:zomble
進程的分類:
CPU-Bound:長時間占用CPU資源的進程
IO-Bound:長時間占用IO資源的進程
Linux系統上的進程查看及管理工具:
pstree,ps,pidof,pgrep,top,htop,glances,pmap,vmstat,kill,pkill,job,bg,fg,nohup,nice,renice,killall,…
不同CentOS系統上的1號進程:
CentOS5:SysV init
CentOS6:upstart(但是被偽裝成init,以此兼容)
CentOS7:systemd
/sbin/init
pstree命令:
pstree – display a tree of processes
選項:
-p:顯示進程號
ps命令:
·/proc/:內核中的狀態信息,以人能看懂的方式展示出來
·內核參數;
可以設置其值從而調整內核運行特性的參數:/proc/sys/
狀態變量:其用于輸出內核中統計信息或狀態信息,僅用于查看
·參數:模擬成文件系統類型:
·進程:
/proc/#
#:PID
ps – report a snapshot of the current processes.
·ps [options];
選項有三種風格:
1 UNIX options, which may be grouped and must be preceded by a dash.
2 BSD options, which may be grouped and must not be used with a dash.
3 GNU long options, which are preceded by two dashes.
·啟動進程的方式:
系統啟動過程中自動啟動:與終端無關的進程
用戶通過終端啟動:有終端相關的進程
·選項:
a:所有與終端相關的進程
x:所有與終端無關的進程
u:以用戶為中心組織進程狀態信息顯示
常用組合之一:aux
字段含義:
VSZ:虛擬內存集(進程占虛擬內存大小)
RSS:Resident Size(進程占物理內存大小)
STAT:(進程狀態)
R:running
S:interruptable sleeping
D:uninterruptable sleeping
T:Stopped
Z:zomble
+:前臺進程
l:多線程進程
N:低優先級進程
<:高優先級進程
s:session leader(會話領導者,殺死領導者,子子孫孫都死了)
-e:顯示所有進程
-f;顯示完整格式的進程信息
常用組合之二:-ef
-F:顯示完整格式的進程信息
字段信息:
C:cpu utilization
PSR:運行在那顆CPU之上
-H:以層級結構顯示進程的相關信息
常用組合之三:-eFH
常用組合之四:
o field1,field2,….:自定義要顯示的字段列表,以逗號分割
常用的field:pid,ni,priority,psr,pcpu,stat,comm,tty,ppid,rtprio,euser,ruser
ni:nice值
priority:優先級
rtprio:real time priority,實時優先級
-eo ,axo
pgrep,pkill命令:
·pgrep, pkill – look up or signal processes based on name and other attributes
·pgrep [options] pattern
-u uid:effective user 命令生效者
-U uid:read user 真正發起運行命令者
-t TERMINAL:與指定的終端相關的進程
-l:顯示進程名
-a:顯示完整格式的進程名
-P pid:顯示此進程的子進程
pidof命令: 顯示與進程相關的所有PID
根據進程名,取其pid
top命令:
·top – display Linux tasks
·排序:
P:以占據CPU百分比排序(也是默認排序方式)
M:以占據內存百分比排序
T:以累計占用CPU時間排序
·首部信息:
uptime信息:l命令開啟或關閉
tasks及cpu信息:t命令開啟或關閉
內存信息:m命令開啟或關閉
cpu信息:1(數字1)開啟或關閉顯示的多個CPU信息
·退出命令:q
·修改刷新時間間隔:s
·中止指定的進程:k
·選項:
-d # :指定刷新時間,默認為3s
-b:以批次方式顯示
-n # :以批次方式顯示多少批
uptime命令:顯示系統時間,當前登錄用戶個數,運行時長及平均負載
過去1分鐘、5分鐘、15分組的平均負載
等待運行的進程隊列的長度
epel包:運維過程中大量使用的包
htop命令:
·選項:
-d #:指定延遲時間
-u UserName:僅顯示指定用戶的進程
-s COLUME:以指定字段進行排序
·子命令:
l:顯示選定的進程打開的文件列表
s:跟蹤選定的進程的系統調用
t:以層級關系顯示各進程狀態
a:將選定的進程綁定至某指定的CPU核心
vmstat命令:
·vmstat – Report virtual memory statistics
·vmstat [options] [delay[count]]
·procs:
r:等待運行的進程的個數:CPU上等待運行的任務的隊列長度
b:處于不可中斷睡眠態的進程個數,被阻塞的任務隊列的長度
·memory:
swpd:交互內存使用總量
free:空閑的物理內存總量
buffer:用于buffer的內存總量
cache:用于cache的內存總量
swap //是以內存為參照物
si:數據進入內存離開swap中的數據速率(kb/s)
so:數據離開內存進入swap的速率(kb/s)
io
bi:從塊設備讀入數據到系統的速度(kb/s)
bo:保存數據至塊設備的速率(kb/s)
system
in:interrupts,中斷速率
cs:context switch,上下文切換的速率
cpu
us:user space
sy:system
id:idle
wa:wait
st:stolen
·選項:
-s:顯示內存統計數據
·eg: vmstat 1 10 :1秒執行一次,執行10次
pmap命令:
pmap – report memory map of a process
pmap [options] pid […]
-x:顯示詳細格式的信息
另一種查看方式:cat /proc/PID/maps
glances命令:
·glances – A cross-platform curses-based monitoring tool
·內建了一些命令:
·常用選項:
-b:以Byte為單位顯示網上數據速率
-d:關閉磁盤I/0模塊
-m:關閉mount模塊
-n:關閉network模塊
-t #:刷新時間間隔
-1:每個cpu的相關數據單獨顯示
-o {HTML|CSV}:輸出格式
-f /PATH/TO/SOMEDIR:設定輸出文件的位置
·C/S模式下運行glance命令
服務模式:
glances -s -B IPADDR
IPADDR:本機的某地址,用于監聽
客戶端模式:
glances -c IPADDR
IPADDR:遠程服務器的地址
dstat命令:
·dstat – versatile tool for generating system resource statistics
·dstat [-afv] [options..] [delay [count]]
默認選項是:cdngy
常用選項:
-c,–cpu:顯示cpu相關信息
-C #,#….total
-d,–disk:顯示磁盤相關的信息
-D sda,sdb….tabal
-g:顯示page相關的速率數據
-m:Memory的相關統計數據
-n:Interface的相關統計數據
-y:–sys ,enable system stats (interrupts, context switches)
-p:顯示process的相關統計數據
-r:顯示io請求的相關的統計數據
-s:顯示swapped的相關統計數據
–tcp
–udp
–raw
–socket
–ipc
–top-cpu:顯示最占用CPU的進程
–top-io:顯示最占用io的進程
–top-mem:最占用內存的進程
–top-lantency:延遲最大的進程
kill命令:
·kill – terminate a process
·用于想進程發送信號,以實現對進程的管理
·顯示當前系統可以信號:
kill -l [signal]
每個信號的標識方法有三種:
1):信號的數字標識
2):信號的完整名稱
3):信號的簡寫名稱
·向進程發信號:
kill [-s signal|-SIGNAL] pid…
常用信號:
1):SIGHUP:無須關閉進程而讓其重讀配置文件
2):SIGINT:中止正在運行的進程,相當于Ctrl+c
9):SIGKILL:殺死運行中的進程(不給進程反應時間,直接殺死)
15):SIGTERM:終止運行中的進程(進程能夠交代一些后事,完成一些操作后,死掉)
18):SIGCONT:繼續運行
19):SIGSTOP:后臺休眠
killall命令:
killall – kill processes by name
killall [-SIGNAL] program
網絡客戶端工具:
ping/lftp/ftp/lftpget/wget等
ping命令:
ping – send ICMP ECHO_REQUEST to network hosts
ICMP:Internet Control Message Protocol
ping [OPTION] destination
-c #:發送的ping包個數
-w #:ping命令超時時長
-W #:一次ping操作中,等待對方響應的超時時長
-s #:指明ping包報文大小
hping命令:( package: hping3 )
hping – send (almost) arbitrary TCP/IP packets to network hosts
–fast:以盡可能快的方式發送包
–faster:以更快的方式發送包
–flood
-i uX
traceroute命令:
traceroute – print the route packets trace to network host
跟蹤從源主機到目標追加之間經過的網關
ftp命令:
ftp – Internet file transfer program
ftp服務命令行客戶端工具
lftp命令:
lftp [-p prot] [-u user[,pass]] [site]
get,mget
put,mput
rm,mrm
lcd,!ls 在本機上執行命令,而非在FTP服務器上
lftpget命令:
lftpget [-c] [-d] [-v] URL [URL…]
-c:斷點下載,繼續此前的下載
lftpget ftp://1.1.1.1/put/file
用于寫在腳本中,非交互式的下載
wget命令:
Wget – The non-interactive network downloader.
wget [option]… [URL]…
-b:在后臺執行下載操作
-q:靜默模式,不顯示下載進度
-O file:下載的文件的保存位置
-c:斷點下載,續傳
–limit-rate=amount:以指定的速率傳輸文件
原創文章,作者:megedugao,如若轉載,請注明出處:http://www.www58058.com/45204