Linux系統進程管理及作業操作

進程是正在運行的程序實體,并且包括這個運行的程序中占據的所有系統資源,比如說CPU,IO,內存,網絡資源等。通過學習Linux系統進程管理來協調多道程序之間的關系,使CPU得到充分的利用。

本節索引:

一、進程相關概念

二、信號管理操作

三、作業操作 job control

四、Linux進程管理常用命令

 

58PIC58PICq58PICARy_1024

 

一、進程相關概念:

進程是正在運行的程序實體,并且包括這個運行的程序中占據的所有系統資源,比如說CPU,IO,內存,網

絡資源等。通過學習Linux系統進程管理來協調多道程序之間的關系,使CPU得到充分的利用。

 

進程和程序的區別是什么?

進程是一個動態的概念,當用戶把一個程序或命令執行起來的時候,才有進程的概念,

系統會自動分配一個編號PID給進程。

程序是一個靜態的概念,表現為一個文件

 

進程的分類:

根據進程與系統終端的關系:

(1)守護進程:在系統引導過程中啟動的進程,即跟終端無關的進程。

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

注:守護進程和前臺進程可相互轉化

 

根據進程占用資源的多少分為:

(1)CPU密集型:對cpu占用率高的進程

(2)IO密集型:占用磁盤讀寫高的進程

 

進程的狀態:

進程在被內核調度過程中的狀態可分為很多種:

1.運行態:running 進程正在運行中

2.就緒態:ready

3.睡眠態:sleeping

可中斷睡眠:interruptible? 大部分進程處于此狀態,隨時可喚醒

不可中斷睡眠:uninterruptible

4.僵尸態:zombie 找不到歸屬的進程,或父進程已不存在

5.停止態:stopped 不可被調度并運行

 

 

進程優先級

進程優先級:

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

0-139(CentOS4,5)

各有140個運行隊列和過期隊列

0-98,99(CentOS6)

實時優先級: 99-0 值最大優先級最高

nice值:-20到19,對應系統優先級100-139或99

 

Big O:時間復雜度,用時和規模的關系(越往左越好)

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

 

進程內存:

Page Frame: 頁框,用存儲頁面數據,存儲Page 4k

LRU:Least Recently Used 近期最少使用算法,釋放內存

物理地址空間和線性地址空間

MMU:Memory Management Unit負責轉換線性和物理地址

TLB:Translation Lookaside Buffer 翻譯后備緩沖器,用于保存虛擬地址和物理地址

映射關系的緩存

IPC: Inter Process Communication

同一主機: signal:信號

shm: shared memory

semaphore:信號量,一種計數器

不同主機:socket: IP和端口號

RPC: remote procedure call?????? 遠程過程調用

MQ:消息隊列,Kafka,ActiveMQ

 

二、信號操作管理

我們指定同一主機間的程序是通過信號來進行通訊的,那么我們也可以通過發送信號的方式對進程進行管

理。

使用kill ?-l 命令可以查看當前支持的信號類型:

信號

 

信號的表示方式:

(1)數字表示:1,2,9

(2)完整名稱:SIGHUP

(3)簡寫名稱:HUP

 

Linux系統支持的型號類型多達60余種,常用信號類型有:

SIGHUP:1,無須關閉進程而讓其重新讀取配置文件,使新配置生效

SIGINT:2,打斷正在運行中的進程,相當于Ctrl+c

SIGQUIT:3,相當Ctrl+\

SIGKILL:9,強制殺死正在運行的進程

SIGTERN:15,終止正在運行的進程(kill命令默認信號)

SIGCONT:18,繼續運行指定進程

SIGSTOP:19,后臺休眠

 

信號管理命令

常用的信號管理命令有kill,killall,pkill

kill命令可用來向進程發送信號指令,以及顯示當前系統可用的信號

kill發送信號格式:

kill [-SIGNAL] PID

如:kill -9 123???????????????? 強制殺死PID為123的進程

 

killall發送信號格式:

killall [-SIGNAL] PROCESS

如:kill -9 sleep????? 強制殺死sleep進程

注意:kill命令跟PID,killall命令跟進程名

 

pkill發送信號格式:

pkill [options] pattern

options:

-SIGNAL

-u uid??????????????? 生效者

-U uid?????????????? 真正發起運行命令者

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

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

如:pkill -9 -t tty2? 強制殺死tty2終端下的所有進程

 

 

三、作業管理(job control)

我們知道,在登錄系統后每一個工作進程都是當前bash的子進程,通過作業管理我們可以

實現多個進程同時運行,這里我們要涉及到兩個新的名詞:前臺作業和后臺作業

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

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

 

作業狀態切換:

作用運行一共有三種狀態,分別為:前臺執行、后臺執行與后臺休眠(stoped)

jobs命令???????? 顯示當前作業編號以及作業狀態

 

讓作業運行于后臺:

(1)尚未啟動的作業:COMMAND &

(2)運行中的作業:Ctrl+z,后臺休眠狀態

 

將后臺休眠|運行作業調回前臺運行:

fg job_num????? 將作業在前臺運行(foreground)

 

將后臺休眠作業執行后臺運行:

bg job_num???? 將作業在后臺運行(background)

 

關閉后臺執行:

(1)fg job_num;ctrl+c

(2)kill %job_num

 

并行運行

同時運行多個進程,提高效率

方法1:

利用腳本

vi all.sh

???????? f1.sh&

???????? f2.sh&

???????? f3.sh&

方法2:

? (CMD1&);(CMD2&);(CMD3&)

方法3:

{ CMD1& CMD2& CMD3& }

 

 

執行長時間任務時防止網絡中斷造成操作中斷

方法1:剝離命令與終端的聯系,終端中斷后進程將轉移至1進程上,再恢復

nohup COMMAND &>/dev/null &

方法2:開啟一個screen會話,重新進入后screen -r即可恢復

screen;COMMAND;screen -r 恢復

 

四、Linux進程管理常用命令

進程的管理命令有:

pstree、ps、pidof、pgrep、pkill、pmap、kill、killall、job、bg、fg

進程的管理工具:

top、htop、vmstat、dstat、iostat、glances等(下節介紹)

 

ps ? ? ? ? ? ? ? ? ? 顯示進程狀態

BSD選項:

a?????????????? 所有終端中的進程

x??????????????? 不連接終端的進程

u?????????????? 顯示進程所有者的信息

f??????????????? 顯示進程樹

k|–sort 屬性 對屬性排列,屬性前加-表示倒序

L?????? 顯示支持的屬性

顯示PID,tty,cmd,cpu占用率,內存占用列表,并按%mem排序

ps xo pid,tty,cmd,%cpu,%mem –sort %mem

ps xo pid,tty,cmd,%cpu,%mem k%mem

按%cpu排序,“-”表示倒序

ps xo pid,tty,cmd,%cpu,%mem –sort -%cpu

短選項:

-e????????????? 顯示所有進程

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

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

-C????????????? 查看指定CMD或腳本的進程,多個命令用“,”分開

顯示PID,命令,pri優先級(數字越大,優先級越高),nice優先級,realtime優先級

ps xo pid,cmd,pri,nice,rtprio

根據進程編號查詢CMD命令

ps -p 3245? -o comm=?????????? 查找PID3245對應的命令名稱

ps -C sleep -o pid=?????????? 根據命令查找pid

常用組合:

ps aux??????????????????????? 顯示所有進程的詳細信息

ps -ef???????????????????????? 類似于aux,缺少cpu%,mem%

ps -eF

 

 

pstree ? ? ? ? ? ? ?顯示進程樹

-p ? ? ? ? ? ? ? ? ? ? ? 顯示PID

-h ? ? ? ? ? ? ? ? ? ? ?高亮標注當前使用的進程

 

 

pgrep??????????????? 進程搜索命令,支持正則表達式

格式:pgrep [options] pattern

options:

-u uid??????????????? effective user,生效者

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

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

-l?????????????? 顯示進程名

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

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

 

 

pidof???????????????? 查找正在運行進程的PID

如:pidof bash??????????????? 顯示bash進程的PID

 

 

uptime 命令

顯示當前時間,系統已啟動時間,當前上線人數,系統平均負載(1、5、10分鐘,一般不超過1)

 

 

free????????? 顯示內存空間使用狀態

options

-b????????????? 以字節為單位

-m???????????? 以MB為單位

-g????????????? 以GB為單位

-h????????????? 人類已讀格式

 

pmap?????? 比較專業的查看內存與進程對應關系工具

pmap??? 12? ?????? 查看進程號12的內存與進程對應關系

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

 

 

一些Linux常用監控工具命令,我們下節繼續介紹!

 

 

 

 

 

 

 

 

 

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/97513

(1)
wangxczwangxcz
上一篇 2018-05-05
下一篇 2018-05-05

相關推薦

欧美性久久久久