進程小知識

首先來介紹一下什麼是進程?

當一個程序在運行的時候會讀取到內存中,當再次使用的時候就會再複製一份運行,這時候就是每個獨立的進程,程序是在磁盤上的,進程是在內存中。每個進程都是獨立的進程,都是系統編號的。當進程結束,內存空間就會釋放,也就是說每個進程都是都是有生命週期的。每個進程運行的環境就是context。如果父進程關閉子進程也會關閉。需要知道的是,父進程創建子進程的時候只分配名稱不分配空間,當數據發生改變的時候纔會分配獨立的空間節省空間。下面介紹一些關於進程的小命令。

----------ps -report a snapshot(快照) of the current processes(顯示當前的狀態),支持正則表達式。

1.ps axo pid,cmd,%mem,rss k %mem :按照內存排名顯示

Init 3關掉圖形化界面,此時按照%mem排序顯示就不會有上面圖形化界面的顯示了。

wKiom1m12MfRP7RLAAAlHxsXosc644.png

2.ps axo pid,cmd,%mem,user,ruser :user等同於euser就是生效者的名稱,ruser就是發起者的名稱。

wKioL1m122XQTFXyAAIJP05onzo818.png

3.ps aux  :詳細顯示進程每個字段的值

wKioL1m12JeQtESqAABPnPfLBuo466.png

4.watch -n1 "ps axo pid,cmd,psr|grep sleep" :實時觀察使用的是哪一個cpu來休眠。

wKiom1m12L2BEo8OAAAy7Td4OZ0759.png

5.ps -C aa.sh o pid,cmd -C後面直接跟命令,注意:如果後面跟的是腳本就要運用shebang機制,不然不會顯示指定選項的信息。(便於運行腳本查看進程)

wKiom1m12L3Dv6T7AAA6ZonqNHg807.png

6. nice -n 10 ping 127.17.0.1:指定ping的優先級,然後查詢ping的優先級用-C

wKioL1m12JjD5_RgAABUG1MosPo681.png

 

wKiom1m12L6AlxvaAAAwneQudxg595.png

-------pgrep選項:用於搜索進程

pgrep [options] pattern

-u uid: effective user,生效者

例如: pgrep -lu root 就可以看到以root真正身份運行的進程

   pgrep -au root 完整地顯示以root真正身份運行的進程的信息,提示:a選項在centos6上並不是很好用。

wKioL1m12Jmy4ZJ0AAA_SM0aeN4622.png

-U uid: real user,真正發起運行命令者

-t terminal: 與指定終端相關的進程

例如: pgrep -at  pts/0 顯示pts/0進程的信息

wKiom1m12MGyEPUEAAA7IaqKNFk264.png

-l: 顯示進程名

-a: 顯示完整格式的進程名 (這個選項在centos6中好像不能用)

Pgrep -a 支持正則

例如: pgrep -a "vi*"

wKioL1m12JzzBkPMAABEf6IH5QI643.png

-P pid: 顯示指定進程的子進程

還有一個比較好用的工具

Pidof 進程名 :根據進程名查pid

Pidof systemd

wKioL1m12JySTbTHAAAfk6GYKj0395.png

Pidof init

wKiom1m12MKRzOZOAAArVJgInEg829.png

例如:如果想要定時開啓某一個服務就可以在腳本中運用pidof,用來開啓某一個服務。

wKiom1m12MKTpRd6AABMAXLSTmo327.png

-------進程優先級(意味着cpu會先響應你,但是並不是說速度就快,例如ping,看回來的包的情況):

系統優先級: 數字越小,優先級越高

0-139CentOS4,5

各有140個運行隊列和過期(等待)對列,也就是一共280個隊列,和進程的多少,規模的大小沒關係,時間是一致的O(1)

0-98 99CentOS6

realtime實時優先級(靜態優先級): 99-0 值最大優先級最高,文檔裏的描述錯誤。

nice值(動態優先級): -2019,對應系統優先級100-13999,沒有指定默認優先級爲0,對應系統的120.

Big O:時間複雜度,用時和規模的關係

O(1),跟進程的規模無關,時間是一樣的,時間恆等不變的,橫線

O(logn) 時間緩慢增長

O(n)線性 增長較快,效率不如logn

O(n^2)拋物線 後續增長速度沒有2^n

O(2^n) 後續增長較快

進程優先級的圖片說明:

wKioL1m12KGC_SB3AAC7MiIn0Kk138.jpg

關於進程優先級的說明:

ni: nice

pri: priority 優先級

psr: processor CPU編號

rtprio: 實時優先級

例如:ps axo pid,cmd,psr,ni,pri,rtprio

進程優先級調整:

靜態優先級: 100-139

進程默認啓動時的nice值爲0,優先級爲120

只有根用戶才能降低nice值(提高優先性)

1nice -n 10 ping 127.0.0.1指定優先級爲10

2nice --10(負數10ping 172.17.0.1指定優先級爲-10

3renice -30 3941 更改3941號進程的優先級

wKiom1m12MPCdmYBAABa3dJh2yM362.png

------------進程管理工具top

相當於windows的任務管理器動態顯示

wKioL1m12KDCJP93AACHHHMf3XI493.png

us:用戶空間  就是在應用程序層面做的操作(例如小計算),涉及不到內核操作系統,。

sy:內核空間  如果存儲數據,就需要通過內核訪問硬盤,這就是內核空間。

ni:調整nice時間

id:空閒

wa:等待IO時間

hi:硬中斷

si:軟中斷(模式切換)

st:虛擬機偷走的時間

top 內置選項

排序:

P:以佔據的CPU百分比,%CPU默認排序

M:佔據內存百分比,%MEM

T:累積佔據CPU時長,TIME+

首部信息顯示:

uptime信息: l命令

taskscpu信息: 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: 顯示進程樹

今天的分享就到這了,下週再繼續分享啦~~~~~~~~


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章