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
下一篇 2016-09-19

相關推薦

  • lamp的搭建

    方法一編譯安裝amp:   1.系統環境:CentOS 6,7       CentOS6:apr,apr-util的版本為1.3.9,不適合httpd-2.4    CentOS7:apr,apr-util的版本為1.4+2.開發環境需要安裝:    Developm…

    Linux干貨 2016-10-16
  • 網絡配置之-nmcli

    使用nmcli配置網絡 NetworkManager是管理和監控網絡設置的守護進程,設備既就是網絡接口,連接是對網絡接口的配置,一個網絡接口可以有多個連接配置,但同時只有一個連接配置生效。 1 使用nmcli配置主機名 CentOS6 之前主機配置文件:/etc/sysconfig/network CentOS7主機名配置文件:/etc/hostname,默…

    Linux干貨 2017-05-07
  • Linux磁盤知識,分區與文件系統

    硬件設備在Linux系統中的表現     設備文件      I/O Ports: I/O設備地址      一切皆文件:         open(), read(), write(), close()   &nbsp…

    Linux干貨 2016-08-29
  • 文件查找:find命令、locate命令;Linux文件系統上的權限

    文件查找:find、locate locate:依賴事先構建的索引,是在系統空閑周期性自動進行;手動更新(updatedb);極其消耗資源;   find [option]… [查找路徑] [查找條件] [處理動作] 查找條件: 根據文件名查找: -name “文件名稱”:支持使用通配符glob(*,?,[],[…

    Linux干貨 2017-12-14
  • 【盤點】2017年9-11月運維大會(時間+地點)

    到底未來的運維模式是什么?如今運維人員面臨著怎樣的轉變? 活動家為您精心挑選整理了9-11月七場運維大會希望本文能幫您! CNUTCon 全球運維技術大會2017 大會簡介: CNUTCon全球運維技術大會是由InfoQ主辦的運維&容器技術盛會。大會為期2天,主要面向各行業對運維&容器技術感興趣的中高端技術人員。秉承著“同步前沿技術、共享實戰…

    2017-08-31
  • Linux 計劃任務快速理解入門

    計劃任務簡單來說是一個我們規定的時間去執行我們需要的腳本、命令及需要Linux做的事情。 以前寫過一個腳本,由于當時沒有學過計劃任務,所以寫起來特別痛苦,該腳本的需求是每天晚上11:00 備份/etc目錄 當時特別小白,于是這么寫的: VimrebootScript ‘ #!/bin/bash whiletrue;do If [ -d/app/e…

    Linux干貨 2017-05-15
欧美性久久久久