Linux基礎教程之進程查看和管理及作業控制

在linux系統中,內核的功用有:進程管理、文件系統、網絡功能、內存管理、驅動程序、安全功能等,在這眾多的模塊中,進程管理是相對重要的一環,即使不像文件系統和網絡功能那么復雜。在進程管理中,內核對進程的創建、切換、撤銷和調度都有很詳細的定義。

1、進程類型

守護進程在系統引導過程中啟動的進程,跟終端無關的進程

前臺進程跟終端相關,通過終端啟動的進程

注意:也可把在前臺啟動的進程送往后臺,以守護模式運行

2、進程狀態

? ?在內存中運行的進程也有著各種各樣的狀態

運行態R:running

就緒態:ready

睡眠態

可中斷S:interruptable

不可中斷D:uninterruptable

停止態T:stopped,暫停于內存中,但不會被調度,除非手動啟動

僵死態Z:zombie,結束進程,父進程結束前,子進程不關閉

3、進程調度

調度策略:調度策略就是這樣一組規則:決定什么時候以怎樣的方式選擇一個新進程運行。所以定義一個進程的優先級來滿足這樣一種策略。這個策略以0-139的優先級來表示。

實時優先級:1-99

無需調整,數字越大,優先級越高

靜態優先級:100-139

可調整,數字越小,優先級越高?

優先級以Nice值調整

Nice:-20—-19 ,存在于task_struct結構體中

公式如下:

????pri(new)=nice+pri(old) ?

調度算法:早起的Linux中,調度算法是根據進程的優先級選擇“最佳”進程來執行,它的缺點是時間開銷與“可運行進程數量”有關。某種調度算法一定滿足一種函數關系,業界稱為Big O

Big O:時間復雜度,用時和規模的關系。有:

O(1), O(logn), O(n)線性, O(n^2)拋物線, O(2^n)

4、進程管理命令之pstree

pstree – display a tree of processes

顯示進程數

5、進程管理命令之ps

Linux系統各進程的相關信息均保存在/proc/PID目錄下的各文件中;

ps [OPTION]…

選項:支持兩種風格

常用組合:aux

u: 以用戶為中心組織進程狀態信息顯示

a: 與終端相關的進程;

x: 與終端無關的進程;

~]# ps aux

USER ? ? ? ?PID %CPU %MEM ? ?VSZ ? RSS TTY ? ? ?STAT TART ? TIME COMMAND

USER 運行進程的用戶
PID 進程ID
%CPU 占用CPU
%MEM 占用內存
VSZ 虛擬內存集
RSS 實際內存集
TTY 終端信息
STAT 進程狀態
START 進程狀態
TIME 運行時間
COMMAND 進程名稱

常用組合:-ef

–e: 顯示所有進程

-f: 顯示完整格式程序信息

常用組合:-eFH

-F: 顯示完整格式的進程信息

-H: 以進程層級格式顯示進程相關信息

 

6、進程管理命令之pkill

pkill [options] pattern ? ?

-u uid: effective user

-U uid: real user

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

-l: 顯示進程名

-a: 顯示完整格式的進程名

-P pid: 顯示其父進程為此處指定的進程的進程列表

7、進程管理命令之pidof

根據進程名獲取其PID

8、進程管理命令之top

Linux基礎教程之進程查看和管理及作業控制

Tasks

total 進程總數
running 運行進程數
sleeping 休眠態進程數
stopped 停止態進程數
zobie 僵死態進程數

%Cpu(s)

us(user space) 用戶空間占用CPU百分比
sy(system) 內核空間占用CPU百分比 ? 注:高負載時:us:sy=7:3
ni(nice) 修改nice值占用的CPU百分比
id(idle) 空閑的CPU百分比
wa(wait) 等待IO完成占用的CPU百分比
hi(hardware interrupt) 硬中斷占用CPU百分比
si(software interrupt) 軟中斷占用CPU百分比
st(stole) 被偷走的CPU,比如VMware
buffer(緩沖) 元數據
cache(緩存) 數據
PID 進程號
USER 進程發起者
PR(priority) 優先級
NI(Nice) nice值
VIRT 虛擬內存集
RES 常駐內存集
SHR 共享內存集
S(status) 狀態
%CPU CPU占用比
%MEM 內存占用比
TIME+ 運行時長
COMMAND 啟動進程

對顯示排序的方法:

P 占據的CPU百分比
M 占據內存百分比
T 累積占據CPU時長

首部信息顯示:

l uptime信息
t tasks及cpu信息
#數字 cpu分別顯示
m memory信息
s 修改刷新時間間隔
Esc 退出
k 終止指定進程
W 保存文件
q 退出命令

9、進程管理命令之htop

=

比top更加高級的進程管理軟件

f1幫助

f2切換CPU、mem、swap顯示方式

f10退出

常用選項:

-d #: 指定延遲時間;

-u UserName: 僅顯示指定用戶的進程;

-s COLOMN: 以指定字段進行排序;

命令:

s: 跟蹤選定進程的系統調用;

l: 顯示選定進程打開的文件列表;

a:將選定的進程綁定至某指定CPU核心;

t: 顯示進程樹

注意:Fedora-EPEL源

10、進程管理命令之vmstat

Linux基礎教程之進程查看和管理及作業控制

vmstat -s: 內存的匯總信息

procs 項目
r 等待運行的進程的個數,和核心數有關
b 處于不可中斷睡眠態的進程個數(被阻塞的隊列的長度)
swap 項目
si 從磁盤交換進內存的數據速率(kb/s)
so 從內存交換至磁盤的數據速率(kb/s)
io 項目
bi 從塊設備讀入數據到內存的速率(kb/s) ? ?讀
bo 從內存寫入磁盤的速率(kb/s) ?? ? ? ? ? 寫
memory 項目
swad 交換內存的使用總量
free 空閑物理內存總量
buffer 用于buffer的內存總量
cache 用于cache的內存總量
system 項目
in: interrupts 中斷速率
cs: context switch 進程切換速率
cpu 項目
us 用戶空間占用的比例
sy 內核空間占用的比例
id 空閑空間占用的比例
wa 等待IO完成所消耗的時間比例
st 被虛擬化技術偷走的時間比例

11、進程管理命令之glances

glances [-bdehmnrsvyz1] [-B bind] [-c server] [-C conffile] [-p port] [-P password] [–password] [-t refresh] [-f file] [-o output]

內建命令:

??a ?Sort processes automatically ? ? l ?Show/hide logs

??c ?Sort processes by CPU% ? ? ? ? ? b ?Bytes or bits for network I/O

??m ?Sort processes by MEM% ? ? ? ? ? w ?Delete warning logs

??p ?Sort processes by name ? ? ? ? ? x ?Delete warning and critical logs

??i ?Sort processes by I/O rate ? ? ? 1 ?Global CPU or per-CPU stats

??d ?Show/hide disk I/O stats ? ? ? ? h ?Show/hide this help screen

??f ?Show/hide file system stats ? ? ?t ?View network I/O as combination

??n ?Show/hide network stats ? ? ? ? ?u ?View cumulative network I/O

??s ?Show/hide sensors stats ? ? ? ? ?q ?Quit (Esc and Ctrl-C also work)

??y ?Show/hide hddtemp stats

常用選項:

-b: 以Byte為單位顯示網卡數據速率;

-d: 關閉磁盤I/O模塊;

-f /path/to/somefile: 設定輸入文件位置;

-o {HTML|CSV}:輸出格式;

-m: 禁用mount模塊

-n: 禁用網絡模塊

-t #: 延遲時間間隔

-1:每個CPU的相關數據單獨顯示;

C/S模式下運行glances命令:

服務模式:

glances -s -B IPADDR

IPADDR: 指明監聽于本機哪個地址

客戶端模式:

glances -c IPADDR

IPADDR:要連入的服務器端地址

12、進程管理命令之dstat

dstat [-afv] [options..] [delay [count]]

-c: 顯示cpu相關信息;

-C #,#,…,total

-d: 顯示disk相關信息;

-D total,sda,sdb,…

-g:顯示page相關統計數據;

-m: 顯示memory相關統計數據;

-n: 顯示network相關統計數據;

-p: 顯示process相關統計數據;

-r: 顯示io請求相關的統計數據;

-s: 顯示swapped相關的統計數據;

–top-cpu:顯示最占用CPU的進程;

–top-io: 顯示最占用io的進程;

–top-mem: 顯示最占用內存的進程;

–top-lantency: 顯示延遲最大的進程;

13、進程管理命令之kill

kill命令:

向進程發送控制信號,以實現對進程管理

顯示當前系統可用信號:

# kill -l

# man 7 signal

常用信號:

1) SIGHUP: 無須關閉進程而讓其重讀配置文件;

2) SIGINT: 中止正在運行的進程;相當于Ctrl+c;

9) SIGKILL: 殺死正在運行的進程;

15) SIGTERM:終止正在運行的進程;

18) SIGCONT:

19) SIGSTOP:

指定信號的方法:

(1) 信號的數字標識;1, 2, 9

(2) 信號完整名稱;SIGHUP

(3) 信號的簡寫名稱;HUP

向進程發信號:

kill [-SIGNAL] PID…

終止“名稱”之下的所有進程:

killall [-SIGNAL] Program

14、Linux的作業控制

前臺作業:通過終端啟動,且啟動后一直占據終端;

后臺作業:可以通過終端啟動,但啟動后即轉入后臺運行(釋放終端);

如何讓作業運行于后臺?

(1) 運行中的作業

Ctrl+z

(2) 尚未啟動的作業

# COMMAND &

此類作業雖然被送往后臺運行,但其依然與終端相關;如果希望送往后臺后,剝離與終端的關系:

# nohup COMMAND &

查看所有作業:

# jobs

作業控制:

# fg [[%]JOB_NUM]:把指定的后臺作業調回前臺;

# bg [[%]JOB_NUM]:讓送往后臺的作業在后臺繼續運行;

# kill [%JOB_NUM]:終止指定的作業;

相關新聞

聯系我們

400-080-6560

在線咨詢:點擊這里給我發消息

郵件:[email protected]

工作時間:周一至周日,09:00-18:30

QR code
云南快乐10分开奖直播