天天看點

Linux程序管理原理及工具(pstree ps pgrep pkill uptime top htop vmstar lsof)一、程序管理

一、程序管理

(一)程式與程序

程式:指令+參數的集合通過邏輯控制運作起來,完成某項特定任務。(類似Java)靜态的,封閉的。

程序:程式運作起來的過程。是作業系統運作的基本機關。有生命周期(産生---->死亡)程序有運作狀态(running,sleepping,等待,僵死)

Linux多任務作業系統能夠讓許多程式同時運作,每一個運作着的程式就是一個程序

1.程序與程式差別:

程式是靜态的,程序是動态的有生命周期的,有狀态

程式和程序不是一一對應。相同的程式運作到不同的數量集上就是不同的程序/usr/bin/vim(程式) -----vim test1 ,vim test2

程式是封閉的,程序有并發性和交往性。程序之間可以通信,(|);方式:(1)共享記憶體,(2)消息隊列

2.程序與線程

在linux系統上,對于程序或線程都将擁有一套完整的資源集。(記憶體---->虛拟記憶體,CPU------>時間片)。

自學:協程;對比一下程序,線程協程

Linux程式管理原理及工具(pstree ps pgrep pkill uptime top htop vmstar lsof)一、程式管理

差別:一個程序可以擁有多個線程,而一個線程同時隻能被一個程序所擁有。

線程不能單獨執行,但是每一個線程都有程式的入口、執行序列以及程式出口,它必須組成程序才能被執行。

3.子程序與父程序:fork

子程序繼承父程序的特性:安全性的身份認證;過去和目前的檔案描述符,端口等資源特權;環境變量;程式代碼。

子程序的id号永遠大于父程序,檢視pid号:用pgrep指令 # pgrep httpd

每個程序都可以産生子程序,

父程序 ----sleep---------------------running-------->

| |

fork()-----exec()----------exit() ---->zombie

關系:①父程序終止,子程序也就終止。

②.子程序運作期間,父程序處于(sleeping)睡眠狀态;當子程序完成時發出信号請求,在退出時,子程序已經關閉或丢棄其資源環境,剩下的部分稱之為(zombie)僵屍。子程序退出父程序喚醒,繼續執行自己的代碼。加粗樣式

(二).程序的生命周期

sleep:

S:可中斷睡眠,條件:硬體要求,系統資源通路,信号。比如:鍵盤輸入。

D: 不可中斷睡眠, 比如:系統程序(不可中斷),如中斷可能會引起系統的異常 -->使用者程序

K:可退出的睡眠,

running:在CPU上運作的程序或者是準備運作的程序(隊列(高速緩存));

user的日常任務,kernel的日常任務

運作:---->程序占用cpu時間片

等待:---->等待某個條件成熟

就緒:---->配置設定好所有資源,等待cpu時間片

stop:

zombie:

Z: —>exit----task_struct(PID,傳回狀态碼,父程序需要狀态)

X: —>exit----将沒有資料

(三).linux系統的程序優先級

“程序的優先級” 0-139 — 140數

實時優先級:0<------------------------------99

: 100-139

nice : -20-19

RP: 0-39 RT

“nice值” -20-19 作用是調整程序優先級,(不能調kernel,調整user)

“top–PR” 0-39

top —>“r” —>“PID” —“nice值”

renice -n 10 -u apache

(四).程序管理工具(pstree ps pgrep pkill uptime top htop vmstar lsof)

1、pstree 檢視程序樹之間的關系

[[email protected] ~]# yum provides pstree //檢視安裝包

[[email protected] ~]# yum install psmisc //下載下傳ps安裝包

-A:用途,當終端不支援UTF-8(中文),顯示亂碼,此時用該參數。(線)

-U:UTF-8預設線的樣式(線)

-p:列出pid 子程序的号大于夫程序号

-u:列出賬号名稱

Linux程式管理原理及工具(pstree ps pgrep pkill uptime top htop vmstar lsof)一、程式管理

2、ps 檢視瞬間程序狀态

(最常用監控背景程序工作的情況)能列出系統中運作的程序,包括程序号、指令、CPU使用量、記憶體使用量等

注意:ps顯示瞬間程序狀态,并不動态連續。對程序實時監控應該用top指令

-a :顯示終端機下的程序,包括其他使用者/列出所有運作中/激活程序

-u :以使用者為 主的程序狀态/uid or username 選擇有效的使用者id或者是使用者名

-x : 除了TTY控制的其他程序/顯示沒有控制終端的程序,同時顯示各個指令的具體路徑。dx不可合用。(utility)

-l :列出較詳細的資訊

-f: 列印完整輸出

-aux:目前以使用者為主的所有程序狀态

Linux程式管理原理及工具(pstree ps pgrep pkill uptime top htop vmstar lsof)一、程式管理

USER: 運作程序的使用者

PID: 程序ID

%CPU: CPU占用率

%MEM: 記憶體占用率

VSZ: 占用虛拟記憶體

RSS:占用實際記憶體 駐留記憶體

TTY: 程序運作的終端

STAT: 程序狀态 man ps (/STATE) R 運作 S 可中斷睡眠 Sleep

D 不可中斷睡眠

T 停止的程序

Z 僵屍程序

X 死掉的程序

Ss s程序的上司者,父程序

S< <優先級較高的程序

SN N優先級較低的程序

R+ +表示是前台的程序組

Sl 以線程的方式運作

START: 程序的啟動時間

TIME: 程序占用CPU的總時間

COMMAND: 程序檔案,程序名

ps -ef |grep - 列出需要程序

Linux程式管理原理及工具(pstree ps pgrep pkill uptime top htop vmstar lsof)一、程式管理
Linux程式管理原理及工具(pstree ps pgrep pkill uptime top htop vmstar lsof)一、程式管理

F :代表這個程式的旗幟(flag)

S:代表使用者 superuser

UID :代表執行者身份

PID :程序id号

PPID:父程序号

C :cpu使用的資源百分比

PRI :程序的執行優先級 (priorite)值越小越早被執行

NI :程序的nice值表示程序可被執行的優先級的修正數值

ADDR:核心函數

SZ :使用掉的記憶體大小 WCHAN:目前這個程式是否正在運作 運作-

TTY :登入者的終端位置

TIME :使用掉的cpu時間

CMD:所下達的指令名稱

3、pgrep 檢視pid與程序名的對應

o:當比對多個程序時,顯示程序号最小的那個

n:當比對多個程序時,顯示程序号最大的那個

l:同時顯示程序名和pid

kill

pgrep -o httpd

Linux程式管理原理及工具(pstree ps pgrep pkill uptime top htop vmstar lsof)一、程式管理

4、killall ,kill ,pkill 殺死指定名字的程序

-----------通過發送信号的方式,對程序行為做控制

killall httpd 直接加程序名

kill PID 加父程序号

pkill httpd 直接加程序名

kill指令

0 ---->嗅探程序是否存在,不對其做任何操作

1 ---->斷開終端

2 ---->中斷,ctrl + c

3 ---->退出,ctrl

15 —>預設,終止

9 —>強制終止,

18 —>繼續

19 —>暫停

eg:kill -18 程序

5、top動态的列印系統資訊:

[[email protected] ~]# top

Linux程式管理原理及工具(pstree ps pgrep pkill uptime top htop vmstar lsof)一、程式管理

PID:程序ID

user:運作程序的使用者

PR:程序優先級 NI:nice值,負數表示優先級最高

VIRT:程序使用虛拟記憶體總量 REX:程序占用的實體記憶體總量

SHR:程序占用的共享記憶體大小 S:程序狀态: R:runing S:sleeping休眠 T:stop Z:zombie D:不可中斷

%CPU:從上次重新整理到目前使用的cpu時間占比

%MEM:程序使用的實體記憶體百分比

TIME+:程序使用cpu的時間 機關1%秒

COMMAND:程序名稱

6、htop top更新版

-aux注意:htop是第三方源 安裝時先要安裝epel*源,在安裝htop .

根據此連結安裝epel 源(選一種安裝即可)

https://developer.aliyun.com/mirror/epelspm=a2c6h.13651102.0.0.3e221b11lbqnQo

安裝

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

yum install htop

Linux程式管理原理及工具(pstree ps pgrep pkill uptime top htop vmstar lsof)一、程式管理

上左區域:men:實體記憶體

上右區域:tasks:任務數量 uptime:運作時間

程序區域:同top顯示的一樣

7、vmstat:

8、sar

[[email protected] ~]# yum install sysstat -y
Linux程式管理原理及工具(pstree ps pgrep pkill uptime top htop vmstar lsof)一、程式管理

9、tsar --sar:

淘寶開源,以周期計劃任務的方式執行

10、lsof

管理檔案

(五)僞檔案系統

/proc:程序資訊,記憶體資訊,磁盤資訊

/sys:裝置組織

(六)前背景作業

1、什麼是作業:使用者交給系統的某項任務

“前台作業同一時刻隻能運作一個,背景作業同時可以運作多個”

前–》後:“指令 &”:運作

“Ctrl +z” :停止 —》bg &序列 ----》運作

後–》前:fg %序列

對于做支援信号:

0 ---->嗅探程序是否存在,不對其做任何操作 echo $? —>0

1 ---->斷開終端

2 ---->中斷,ctrl + c

3 ---->退出,ctrl +

15 —>預設,終止

9 —>強制終止,

18 —>繼續

19 —>暫停

kill -19 %序列

作業可以放到背景運作,任然可以将輸出列印在終端上。

作業是正對于終端而言,在哪個終端上啟動的作業,在哪個終端上jobs。

2、 屏蔽中斷信号

對于終端上的作業,有内容輸出時,當終端斷開後,該作業程序将會接收到中斷信号;導緻程序被殺死。

nohup屏蔽中斷信号。

nohup ping www.baidu.com > /dev/null &

nohup ping www.baidu.com >> /tmp/nohup_ping.log &

繼續閱讀