首先來介紹一下什麼是進程?
當一個程序在運行的時候會讀取到內存中,當再次使用的時候就會再複製一份運行,這時候就是每個獨立的進程,程序是在磁盤上的,進程是在內存中。每個進程都是獨立的進程,都是系統編號的。當進程結束,內存空間就會釋放,也就是說每個進程都是都是有生命週期的。每個進程運行的環境就是context。如果父進程關閉子進程也會關閉。需要知道的是,父進程創建子進程的時候只分配名稱不分配空間,當數據發生改變的時候纔會分配獨立的空間節省空間。下面介紹一些關於進程的小命令。
----------ps -report a snapshot(快照) of the current processes(顯示當前的狀態),支持正則表達式。
例1.ps axo pid,cmd,%mem,rss k %mem :按照內存排名顯示
Init 3關掉圖形化界面,此時按照%mem排序顯示就不會有上面圖形化界面的顯示了。
例2.ps axo pid,cmd,%mem,user,ruser :user等同於euser就是生效者的名稱,ruser就是發起者的名稱。
例3.ps aux :詳細顯示進程每個字段的值
例4.watch -n1 "ps axo pid,cmd,psr|grep sleep" :實時觀察使用的是哪一個cpu來休眠。
例5.ps -C aa.sh o pid,cmd :-C後面直接跟命令,注意:如果後面跟的是腳本就要運用shebang機制,不然不會顯示指定選項的信息。(便於運行腳本查看進程)
例6. nice -n 10 ping 127.17.0.1:指定ping的優先級,然後查詢ping的優先級用-C。
-------pgrep選項:用於搜索進程
pgrep [options] pattern
-u uid: effective user,生效者
例如: pgrep -lu root 就可以看到以root真正身份運行的進程
pgrep -au root 完整地顯示以root真正身份運行的進程的信息,提示:a選項在centos6上並不是很好用。
-U uid: real user,真正發起運行命令者
-t terminal: 與指定終端相關的進程
例如: pgrep -at pts/0 顯示pts/0進程的信息
-l: 顯示進程名
-a: 顯示完整格式的進程名 (這個選項在centos6中好像不能用)
Pgrep -a 支持正則
例如: pgrep -a "vi*"
-P pid: 顯示指定進程的子進程
還有一個比較好用的工具
Pidof 進程名 :根據進程名查pid
Pidof systemd
Pidof init
例如:如果想要定時開啓某一個服務就可以在腳本中運用pidof,用來開啓某一個服務。
-------進程優先級(意味着cpu會先響應你,但是並不是說速度就快,例如ping,看回來的包的情況):
系統優先級: 數字越小,優先級越高
0-139(CentOS4,5)
各有140個運行隊列和過期(等待)對列,也就是一共280個隊列,和進程的多少,規模的大小沒關係,時間是一致的O(1)。
0-98, 99(CentOS6)
realtime實時優先級(靜態優先級): 99-0 值最大優先級最高,文檔裏的描述錯誤。
nice值(動態優先級): -20到19,對應系統優先級100-139或99,沒有指定默認優先級爲0,對應系統的120.
Big O:時間複雜度,用時和規模的關係
O(1),跟進程的規模無關,時間是一樣的,時間恆等不變的,橫線
O(logn) 時間緩慢增長
O(n)線性 增長較快,效率不如logn
O(n^2)拋物線 後續增長速度沒有2^n塊
O(2^n) 後續增長較快
進程優先級的圖片說明:
關於進程優先級的說明:
ni: nice值
pri: priority 優先級
psr: processor CPU編號
rtprio: 實時優先級
例如:ps axo pid,cmd,psr,ni,pri,rtprio
進程優先級調整:
靜態優先級: 100-139
進程默認啓動時的nice值爲0,優先級爲120
只有根用戶才能降低nice值(提高優先性)
例1:nice -n 10 ping 127.0.0.1指定優先級爲10
例2:nice --10(負數10)ping 172.17.0.1指定優先級爲-10
例3:renice -30 3941 更改3941號進程的優先級
------------進程管理工具top
相當於windows的任務管理器動態顯示
us:用戶空間 就是在應用程序層面做的操作(例如小計算),涉及不到內核操作系統,。
sy:內核空間 如果存儲數據,就需要通過內核訪問硬盤,這就是內核空間。
ni:調整nice時間
id:空閒
wa:等待IO時間
hi:硬中斷
si:軟中斷(模式切換)
st:虛擬機偷走的時間
top 內置選項
排序:
P:以佔據的CPU百分比,%CPU默認排序
M:佔據內存百分比,%MEM
T:累積佔據CPU時長,TIME+
首部信息顯示:
uptime信息: l命令
tasks及cpu信息: t命令
cpu分別顯示: 1 (數字)
memory信息: m命令
退出命令: q
修改刷新時間間隔: s 默認三秒,不要太快。
終止指定進程: k
保存文件: W
top命令行選項:
-d #: 指定刷新時間間隔,默認爲3秒
-b: 全部顯示所有進程
-n #: 刷新多少次後退出
-------------htop命令: EPEL源,推薦使用,裏面有很多內置選項
選項:
-d #: 指定延遲時間;
-u UserName: 僅顯示指定用戶的進程
-s COLUME: 以指定字段進行排序
子命令:
s: 跟蹤選定進程的系統調用
l: 顯示選定進程打開的文件列表
a:將選定的進程綁定至某指定CPU核心
t: 顯示進程樹
今天的分享就到這了,下週再繼續分享啦~~~~~~~~