linux進程及作業管理

linux進程及作業管理

cpu指令權限等級:

特權級也叫hierarchical protection domains, 有的也叫用戶態. 是一種用來保護數據和阻止惡意行為的機制. 電腦操作系統提供不同權限訪問級別的資源. 特權級分為四級, 特權級0,1,2,3. 在windows中只使用特權級0和特權級3, 特權最高的是特權級0, 可以直接操作硬件, 如CPU和內存, 一般操作系統和驅動運行在此級別下. 特權級3是給一般用戶程序使用的, 可以調用基本的cpu指令

kernel –> ring0 –> ring1 –> ring2 –> ring3

linux系統的組成部分: 內核 + 根文件系統

內核的功用: 進程管理、內存管理、網絡協議棧、文件管理

用戶模式

內核模式

模式切換

Process: 運行中的程序的一個副本;進程有自己的生命周期

linux內核存儲進程信息的固定格式: task struct

多個任務的task struct 組件的鏈表: task list

進程創建: 

init進程: 初始化進程, 是內核加載的第一個進程, 是其他所有進程的父進程

進程: 都是由其父進程創建

fork(), clone()

進程優先級: 

1-139:

0-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: share memory

semerrohor(老式)

不同主機:

rpc機制: remote procecure call, 遠程過程調用

socket: 套接字通信, 

linux內核: 搶占式多任務進程

進程類型:

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

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

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

進程狀態: 

運行態: running

就緒態: ready

睡眠態:

可中斷睡眠: interruptable

不可中斷睡眠: uninterruptable

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

僵死態: zombie

進程的分類:

CPU-Bound

IO-Bound

linux上的進程查看及管理工具:

pstree,ps,pidof, pgrep, top, htop, glances, pmap, vmstat, dstat, kill, pkill, jobs, bg, fg, nohup, nice, renice, kuillall, …

CentOS 5: SysV init

CentOS 6: upstart

CentOS 7: systemd

/sbin/init

1、pstree: 

顯示進程樹

2、ps – report a snapshot of the current process. 報告當前進程的快照

/proc/: 內核中的狀態信息

內核參數: 可設置其值從而調整內核運行特性的參數; /proc/sys/

狀態變量: 其用于輸出內核中統計信息或狀態信息, 僅用于查看

參數: 模擬成文件系統類型;

進程: /proc/#

#: 進程PID

用法:

ps [OPTIONS]

選項有三種風格:

UNIX options

BSD options

GNU long options

啟動進程的方式:

系統啟動過程中自動啟動: 與終端無關的進程;

用戶通過終端啟動: 與終端相關的進程;

選項:

a: 所有與終端相關的進程

x: 所有與終端無關的進程 u: 以用戶為中心組織進程狀態信息顯示; 并顯示出是哪個用戶的名稱

常用組合1:  aux 三個選項通常組合起來使用

STAT: 進程狀態

R: running

S: interruptable sleeping

D: uninterruptable sleeping

T: Stopped

Z: zombie

+: 前臺進程

l: 多線程進程

N: 低優先級進程

<: 高優先級進程

s: session leader

TIME: 累計占用CPU的時間

COMMAND: 由哪個命令啟動的進程, 其中帶[]的表示內核線程

VSZ: 虛擬內存集, 占用的內存大小

RSS: 常駐內存集, Resident Size, 不能移動到交換內存中

-e: 顯示所有進程

-f: 顯示完成格式的進程信息

-ef: 顯示完成格式的所有進程的信息

STIME: 啟動時間

TIME: 累計運行的時間

C: CPU的占用百分比, cpu utilization

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

ps -eF

PSR: 顯示運行在哪顆CPU上

-H: 以層級結構顯示進程的相關信息, 顯示父進程和子進程的層級結構

o field1, field2, …: 自定義要顯示的字段, 各選項之間以 , 間隔

常用fields: pid, ni, pri, psr, pcpu, stat, comm, tty, ppid, rtprio

ni: nice值;[-20,19]

priority: 優先級

rtprio: real time priority, 實時優先級

常用組合:

ps -eFH

ps -eo

ps axo

3、pgrep、pkill – 查詢進程或者向進程發送信號

– look up or signal processes based on name and other attributes

pgrep [option] pattern

選項:

-u UID: effective user顯示指定用戶的進程

-U UID: 以誰的身份啟動, 真正的用戶

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

-l: 顯示進程名

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

-P PID: 顯示其父進程, 顯示此進程的子進程

4、pidof – 取指定進程名稱的PID

5、top – display linux processes, 動態顯示進程信息

排序方式:

P: 以占據CPU的百分比

M: 以占用內存百分比

T: 以累計占用CPU時間進行排序

首部信息:

uptime信息, l 命令: 顯示系統時間, 運行時長和平均負載

過去一分鐘, 五分鐘, 15分鐘的平均負載

等待運行的進程隊列的長度

tasks及cpu信息,  t 命令: 

us: 用戶占用的空間百分比

sy:

ni: 硬件中斷

si: 軟件中斷

st: 被偷走的百分比

內存及CPU信息, m 命令

PID: 

PR: 優先級

NI: nice值

RES: 常駐內存集

VIRT: 虛擬內存集

SHR: 共享內存空間

S: 當前狀態

退出  q

修改刷新時間間隔: s  輸入時間間隔

終止指定的進程: k

選項::

-d #: 指定刷新時間間隔,默認3秒

-b: 以批次方式顯示

-n #: 顯示多少批次

uptime 命令

內核的功能: 進程管理(進程調度)

進程調度: 保存現場, 恢復現場

task struct: 任務結構

task list: 任務列表

CPU : us, sy, ni, id(空閑時間比例), hi, si, cs(處理上下文切換消耗的時間百分比) ,st(虛擬化技術分走的比例)

Memory: VSZ(虛擬內存集), RSS(常駐內存集), SHM(共享內存集)

命令: pstree, pgrep, pkill, ps, top, uptime

linux進程及作業管理(2)

epel yum倉庫

$releasever: 發行的主版本號

$basearch: 架構

1、 htop:

-d #: 指定延遲時間的間隔

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

-s COLUME: 以指定的字段進行排序

子命令:

F1: 獲取幫助

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

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

F5 | t: 以樹狀結構顯示進程的層級結構

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

F2: 設定

2、vmstat – 報告虛擬內存的統計數據

vmstat [options] [delay[count]]

delay[count] :

delay: 延遲時間

count: 以delay指定的延遲時間顯示的次數

proc: 

r: running, 處于等待運行的進程的個數, 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: 數據盡量小一些好, 數值變大,說明CPU功能不足

in: interrupts, 中斷速率 

cs: context switch, 上下文切換的速率

cpu: 

us: user space, 用戶空間

sy: system

id: idle, 空閑的

wa: wait, 等待完成

st: stolen, 虛擬化技術占用的比例

option:

-s: 顯示內存統計數據

3、pmap – 報告內存的映射表, report memory map of a process

pmap [option] pid […]

-x: 顯示詳細格式的信息

另一種查看方式: cat /proc/<PID>/maps

4、glances – A cross-platform curses-based monitoring tool, 一個跨平臺的工具

內建命令

常用選項:

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

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

-m: 關閉mount模塊

-n: 關閉network模塊

-t #: 刷新時間間隔

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

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

-f /PATH/TO/SOMEDIR: 設定輸出文件的位置

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

服務模式:

glances -s -B IPADDR

IPADDR: 本機的某地址, 用于監聽

客戶端模式:

glances -c IPADDR

IPADDR: 遠程服務器的地址

5、dstat – versatile tool for generating system resource statistics, 

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

常用選項:

-c, –cpu: 顯示cpu的相關信息

-C #, #,…,total

-d, –disk: 顯示磁盤的相關信息

-D sda, sdb,…total

-g: 顯示page相關的速率數據

-m: Memory的相關統計數據

-n: Interface的相關統計數據

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

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

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

–tcp

–udp

–raw

–socket

–ipc

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

–top-io: 最占用IO的進程

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

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

6、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: 繼續運行停止的后臺進程, 可以使用  fg 

(19)SIGSTOP: 停止在前臺運行的進程, 送到后臺, 可以使用ctrl + z 

7、killall – kill processes by name

killall [-SIGNAL] <program name>

linux系統作業控制

job:

前臺作業(foreground): 通過終端啟動, 且啟動后會一直占據終端

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

如何讓作業運行于后臺?

(1)運行中的作業

ctrl + z

注意: 送往后臺后, 作業會轉為停止態

(2)尚未啟動的作業

#COMMAND &

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

# nohup COMMAND &

查看所有的作業:

jobs

可實現作業控制的命令

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

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

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

進程優先級調整

可通過nice值調整的優先級范圍: 100-139

分別對應于: -20, 19之間

進程啟動時, 其nice值默認為0, 其優先級是120

nice – 以指定的nice值啟動并運行命令

nice [options] [command [ARGU…]]

常用選項:

-n NICE: 指定nice值

注意: 僅管理員可以調低nice值

renice – 調整運行中的進程的優先級

renice [-n] NICE PID…

查看Nice值和優先級:

ps axo pid,ni,priority,comm | grep …

原創文章,作者:black_fish,如若轉載,請注明出處:http://www.www58058.com/47266

(0)
black_fishblack_fish
上一篇 2016-09-19 13:47
下一篇 2016-09-19 13:47

相關推薦

  • linux之/home目錄轉移分區。

    linux之/home目錄轉移分區。     I,基本思路,將/home目錄的數據轉移到新的分區,再將/home目錄掛載到新的分區。     II,添加硬盤,進行分區,添加新硬盤不重啟機器識別命令echo “- – -”  /sys/class/scsi_host/host#/scan,然后進行 …

    Linux干貨 2017-06-19
  • Linux系統grep正則表達式

    一、grep命令的使用 首先,我們來了解grep命令,grep (global search regular expression and printing),全面搜索正則表達式并把行打印出來)是一種強大的文本搜索工具,它能使用正則表達式搜索文本,并把匹配的行打印出來。Linux中的grep命令包括、grep, egrep和fgrep 。egrep是grep…

    Linux干貨 2017-04-23
  • 網絡管理

    一、網絡概念     什么是網絡     資源共享的功能和優點         數據和應用程序         資源 &…

    Linux干貨 2016-09-09
  • 一點點RPM

    1、軟件管理器簡介          隨著Linux的不斷發展及越來越多的人投入到Linux大家庭中,軟件管理器的作用對于還無法熟練掌握源碼編譯安裝的人們還是顯得尤為重要,同時,由Linux開發商在為其編譯完成的軟件包在某種程度上要比在網絡上流傳的軟件包要安全的多;所以,掌握Li…

    Linux干貨 2015-12-06
  • linux作業管理

    作業管理 kill kill命令:     向進程發送控制信號,以實現對進程管理     顯示當前系統可用信號:kill -l     常用信號:man 7 signal    &…

    Linux干貨 2016-09-09
  • 磁盤管理

    回顧 {a..f} a b c d e f ]# arr=({a..z}) ]# echo ${#arr[*]} 26 ]# N1=N2 ]# N2=zhuchaoming ]# echo ${!N1} eval N1=\$$N2 echo $N1 創建臨時文件 mktemp NAME.XXX 交互式登錄 /etc/profile –> /…

    Linux干貨 2016-09-07
欧美性久久久久