內核的功用:進程管理、文件系統、網絡功能、內存管理、驅動程序、安全功能安全
Process:運行中的程序的一個副本。網絡
存在生命週期session
Linux內核存儲進程信息的固定格式 :task struct多線程
多個任務的task struct組件的鏈表:task listsocket
進程建立:ide
init工具
父子關係ui
進程:都由其父進程建立線程
fork(),clone()設計
進程優先級:
0-139:
1-99:實時優先級;
數字越大,優先級越高;
100-139:靜態優先級;
數字越小,優先級越高;
Nice值:
-20,19
Big O
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 procesure call 遠程過程調用
socket:
Linux內核:搶佔式多任務
進程類型:
守護進程:daemon,在系統引導過程當中啓動的進程,跟終端無關的進程;
前臺進程:跟終端相關,經過終端啓動的進程
注意:也能夠把在前臺啓動的進程送日後臺,以守護模式運行;
進程狀態:
運行態:running
就緒態:ready
睡眠態:
可中斷:interruptable
不可中斷:uninterruptable
中止態:暫時於內存中,但不會被調度,除非手動啓動之:stopped
僵死態:zombie
進程的分類:
CPU-Bound
IO-Bound
《Linux內核設計與實現》,《深刻理解Linux內核》,
Linux進程查看及管理的工具:pstree,ps,pidof,pgrep,top,htop,glance,pmap,vmstat,dstat,kill,pkill,job,bg,fg,nohup
pstree命令:
pstree - display a tree of processes
ps:process state
ps - report a snapshot of the current processes
Linux系統各進程的相關信息均保存在/pro/PID目錄下的各文件中;
ps [OPTION]...
選項:支持兩種風格
經常使用組合:aux
u:以用戶爲中心組織進程狀態信息顯示
a:與終端相關的進程;
x:與終端無關的進程;
~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
進程屬主 進程ID 佔據CPU時間百分比 佔據內存空間百分比 虛擬內存大小
VSZ:Virtual memory SiZe
RSS:ReSident Size,常駐內存集
TTY:從哪一個終端啓動的,?表明與終端無關
STAT:進程狀態
R:running
S:interruptable sleeping
D:uninterruptable sleeping
T:stopped
Z:zombie
+:前臺進程
l:多線程進程
N:低優先級進程
<:高優先級進程
s:session leader
TIME:運行佔據CPU的累計時長
COMMAND:由什麼命令啓動的相關進程
經常使用組合:-ef
-e:顯示全部進程
-f:顯示完整格式程序信息
經常使用組合:-eFH
-F:顯示完整格式的進程信息
-H:以進程層級格式顯示進程相關信息
經常使用組合:-eo,axo
-eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,comm
axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
ni:nice值
pri:priority,優先級
psr:processor,CPU
rtprio:實時優先級
pgrep,pkill
pgrep [OPTION] pattern
pkill [OPTION] pattern
-u uid:effective user
-U uid:real user
-t terminal:與指定終端相關的進程
-l:顯示進程名
-a:顯示完整格式的進程名
-P pid:顯示其父進程爲此處指定的進程的進程列表
pidof:根據進程名獲取其PID;
top:
有許多內置命令:
排序:
P:以佔據的CPU百分比;
M:佔據內存百分比;
T:累積佔據CPU時長;
首部信息顯示:
uptime信息:l 命令
tasks及cpu信息:t命令
cpu分別顯示:1(數字)
memory信息:m命令
Cpu(s): 0.0%us, 0.2%sy, 0.0%ni, 99.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
用戶空間 內核空間 nice值 空間時間 等待時間 硬中斷時間 軟中斷時間 被偷走的時間 【各自時間所佔據的比例】
退出命令:q
修改刷新時間間隔:s
終止指定進程:k
選項:
-d #:指定刷新時間間隔,默認爲3秒
-b:以批次方式
-n #:顯示多少批次;
htop命令:
選項:
-d #:指定延遲時間;
-u UserName:僅顯示指定用戶的進程;
-s COLOMN:以指定字段進行排序;
命令:
s:跟蹤選定進程的系統調用;
l:顯示選定進程打開的文件列表;
a:將選定的進程綁定至某指定CPU核心;
t:顯示進程樹
注意:Fedora-EPEL源