進程介紹及查看工具

進程描述:

進程是硬盤中程序代碼運行時的形態,進程是代碼的實例.產生進程的方法便是將代碼執行.
linux是多任務的操作系統,也就是說系統內核啓動後,可以多個進程同時運行,或者呈現出多任務同時運行的假象,多任務的實現方法是基於時間上的輪循,即每個進程被CPU執行一段時間後替換爲下一進程執行,或多進程是通過分配時間片實現的,將時間進行分片,時間也是物理量,同樣可被分片.多進程確實都是在同時運行,但是擁有了時間的進程纔可以繼續演變.邏輯上的實現,物理上就是通過cpu執行時的輪循實現的.

多任務的操作系統的實現:

多任務的實現方式可以分爲協作式多任務與搶佔式多任務,協作式多任務應用在早期,
搶佔式多任務對多進程之間的輪循控制是通過優先級實現的,在centos 4,5中系統一共有0-139共140個優先級,而在centos6中共有0-99共100個優先級。並且系統的優先級採用nice值進行最終的修正,nice優先級共有-20~+19共40個。最終的優先級是通過nice值修正過的優先級。
用戶可以改改變進程的nice值來修正最終的優先級,在centos 45 中程序的初始優先級爲120 ,nice值爲0,所以通過修改nice值 ,改變最終的優先級的浮動範圍爲100-139之間。

進程的分類:

進程按照依賴關係可以分爲,守護進程,前臺進程。
守護進程:在系統啓動時通過init.d 啓動的進程。不需要依附在終端之上的進程。
前臺進程:通過終端啓動的進程,需要依附終端。並且佔用終端的進程。
前臺進程與守護進程可以互相轉化。

進程按照硬件資源的佔用可分爲,CPU密集型,io密集型。

進程的狀態:

運行態:running
就緒態:ready
睡眠態:
    可中斷:interruptable
    不可中斷:uninterruptable
停止態:stopped 暫停於內存,但不會被調度,除非手動啓動
僵死態:zombie 結束進程,副進程結束前,子進程不關閉。

進程查看的工具:

ps
ps是一個古老的滄桑的進程管理工具,ps支持多種風格的選項格式。
ps :顯示當前登錄的終端上運行的進程。

Unix風格的選項 如:-a -ef
    -e顯示所有的進程
-f顯示所有進程的詳細信息
-F顯示所有進程的更更更詳細的信息
-H以帶有縮進的方式顯示進程,以體現出進程間的父子關係
-C顯示指定的進程的信息
    例:ps -C test.sh
    注:當腳本中不添加shebang時 -C無法查看腳本的進程信息
-o顯示指定的屬性信息
例:ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,comm

BSD風格的選項 如:a aux
    a 顯示所有與終端相關的進程,即依附在終端上運行的進程
x顯示所有與終端無關,即不依附終端的的進程,比如守護進程。
u顯示進程所有者的信息 
f顯示信息中進行縮進並用/\進行標示,以體現出進程的父子關係。
k以指定的屬性進行排序
     例:ps axo stat,user,pid  k pid
o顯示指定的屬性信息
    例:ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm,%cpu,%mem,user,pri
    ruser:發起進程的用戶
    pri:優先級,但是爲ps內部的優先級。pri優先級0 - +39對應nice優先級 19 - -20 也就是是數值越大優先級越高
    ni:nice值
    psr:processor cpu編號
    rtprio :實時優先級

GNU風格的選項 如: --help

ps aux 顯示的格式

[root@localhost ~]# ps aux |head

USER    
PID     
%CPU    
%MEM    
VSZ 
RSS 
TTY 
STAT    
START   
TIME    
COMMAND

用戶 ID cpu佔用率 內存佔用率 承諾的內存 實際佔用的內存 該進程依附的終端 狀態 進程的創建時間 進程實際佔用CPU的時間 進程的名稱
注:此時顯示的用戶並非是發起進程的用戶,而是實際生效的用戶,比如SUID權限程序的屬主。

ps顯示STAT的狀態種類:
R:running 正在運行中的進程
S:interruptable sleeping
D:uninterruptable sleeping
T:stopped
Z:zombie
+:前臺進程
l:多線程進程
L:內存分頁並帶鎖
N:低優先級進程
<:高優先級進程
s:session leader 會話(子進程)發起者

pstree
以樹狀結構顯示進程信息,顯示的信息中使用{}進行表示的是線程信息。
-p :顯示進程的pid

top
在字符界面以交互的方式顯示當前系統中的 負載信息,進程信息,
選項,運行top時指定
-d 指定刷新時間的間隔,默認爲3秒鐘
-b 顯示所有的進程 ,在不指定-b選項時,只顯示一屏信息。
-n 指定刷新次數,到達指定次數後退出。
全局顯示設定,同樣在運行時輸入
s 修改刷新時間間隔
指定top顯示進程的排序,在程序運行時輸入
P按照佔據CPU的百分比進行排序 ,即顯示%CPU的欄
M按照佔據內存的百分比進行排序,即顯示%MEM的欄
T按照積累佔據cpu的時長,即顯示TIME+的欄
指定top顯示的頭部信息的格式,同樣在程序運行輸入,實現顯示模式的切換,模式中包括不顯示模式,
l系統運行時間 平均負載的信息切換。即第一行。
t tasks與%cpu 的顯示信息顯示模式切換,第二行與第三行
m memory信息 ,即內存信息顯示模式切換,第四行與第五行
1 切換顯示的cpu,在具有多顆cpu時有意義,第三行
其他操作
k 終止指定的進程,默認是指定cpu佔用率最高的
w 保存文件
退出
q
top 的界面信息如下:

htop
彩色的 top

glances
glances 來自epel源,實現查看遠程主機的進程信息。

nice
指定程序的nice值
例:
nice -n -20 ping 10.1.1.1 指定ping程序的nice值爲-20.相當於系統優先級的 120+(-20)=100
nice -20 ping 10.1.1.1 指定ping程序的nice值,-20 -識別爲選項。所以優先級會設置爲20 但是nice的優先級最大隻能爲19,所以最終的nice值爲19
nice –20 成功的指定nice值爲20 -爲選項 -20爲nice值 ,但是命令要規範

pgrep
按照命令的指定的方式顯示進程
-u 進程的最終生效者
-U 進程的真正發起者
-t terminal 與指定終端相關的進程
-l 顯示進程名稱
-a 顯示完整格式的進程名稱
-P 顯示指定進程的子進程

pidof
顯示指定進程的ID
可以用於腳本中判斷程序是否已經啓動,在指定程序沒有啓動時,$?爲非零值
例:
pidof http 顯示http的進程id號
if pidof http 使用if語句判斷 http服務是否已經運行

pmap
顯示進程對應的內存映射,等價於 cat/proc/{PID}/maps
-x 顯示詳細格式的信息

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章