???? 什么是進程?我們先來了解一下進程的概念:我們知道操作系統最核心的概念就是進程。進程簡單來說就是在操作系統中運行的程序,它是操作系統資源管理的最小單位。但是進程是一個動態的實體,它是程序的一次執行過程。進程和程序的區別在于:進程是動態的,程序是靜態的,進程是運行中的程序,而程序是一些保存在硬盤上的可執行代碼。
?? 當多個任務要執行時怎么辦呢?先執行誰呢?這時候就需要看優先級了。
進程優先級:
(1)系統優先級:數字越小優先級越高 0-139 各有140個運行隊列和過期隊列
(2)實時優先級:99-0 值越大優先級越高
(3)nice值:-20到19,對應系統優先級100-139或99
進程類型:
(1)守護進程:daemon,是運行在后臺的一種特殊進程。它獨立于控制終端并且周期性地執行某種任務或等待處理某些發生的事件。它不需要用戶輸入就能運行而且提供某種服務,不是對整個系統就是對某個用戶程序提供服務。Linux系統的大多數服務器就是通過守護進程實現的。
守護進程一般在系統啟動時開始運行,除非強行終止,否則直到系統關機都保持運行。守護進程經常以超級用戶(root)權限運行,因為它們要使用特殊的端口(1-1024)或訪問某些特殊的資源。一個守護進程的父進程是init進程,因為它真正的父進程在fork出子進程后就先于子進程exit退出了,所以它是一個由init繼承的孤兒進程。守護進程是非交互式程序,沒有控制終端,所以任何輸出,無論是向標準輸出設備stdout還是標準出錯設備stderr的輸出都需要特殊處理。
(2)前臺進程:跟終端相關,通過終端啟動的進程
?????? 注:守護進程和前臺進程可以相互轉換
進程狀態
(1)運行態(TASK_RUNNING)
指正在被CPU運行或者就緒的狀態。這樣的進程被成為runnning進程。運行態的進程可以分為3種情況:內核運行態、用戶運行態、就緒態。
(2)睡眠態
可中斷睡眠狀態(TASK_INTERRUPTIBLE)
處于等待狀態中的進程,一旦被該進程等待的資源被釋放,那么該進程就會進入運行狀態。
不可中斷睡眠狀態(TASK_UNINTERRUPTIBLE)
停止態(TASK_STOPPED)暫停與內存,但不會被調度,除非手動啟動。
當進程收到信號SIGSTOP、SIGTSTP、SIGTTIN或SIGTTOU時就會進入暫停狀態??上蚱浒l送SIGCONT信號讓進程轉換到可運行狀態。
(3)僵死態(TASK_ZOMBIE)
結束進程,父進程結束,前子進程不關閉
查看進程命令:ps
ps命令支持3種選項:1.unix選項:如 -A -e?? 2.BSD選項 :如a??? 3.GNU選項:如– help
ps? a 包括所有終端的中的進程
ps? x 包括不鏈接終端的進程
ps u 顯示進程所有者的信息
ps f 顯示進程的父進程
ps -e顯示所有進程
ps -f顯示完整格式程序信息
ps -o 選擇指定要看的信息(如PID,%CPU等)
pstree 樹狀顯示進程
pidoff? XX查看xx的進程編號
ps命令一般使用 ps aux 或者lax組合查看進程
ps 命令標頭解釋
USER 進程的屬主;
PID 進程的ID;
PPID 父進程;
%CPU 進程占用的CPU百分比;
%MEM 占用內存的百分比;
NI 進程的NICE值,數值大,表示較少占用CPU時間;
VSZ 進程虛擬大??;
RSS 駐留中頁的數量;
TTY 終端ID
STAT 進程狀態(有以下幾種)
D 無法中斷的休眠狀態(通常 IO 的進程);
R 正在運行可中在隊列中可過行的;
S 處于休眠狀態;
T 停止或被追蹤;
W 進入內存交換(從內核2.6開始無效);
X 死掉的進程(從來沒見過);
Z 僵尸進程;
< 優先級高的進程
N 優先級較低的進程
L 有些頁被鎖進內存;
s 進程的領導者(在它之下有子進程);
l 多進程的(使用 CLONE_THREAD, 類似 NPTL pthreads);
+ 位于后臺的進程組;
WCHAN 正在等待的進程資源;
START 啟動進程的時間;
TIME 進程消耗CPU的時間;
COMMAND 命令的名稱和參數;
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/86778