為了防止無良網站的爬蟲抓取文章,特此標識,轉載請注明文章出處。LaplaceDemon/SJQ。
http://www.cnblogs.com/shijiaqi1066/p/3836017.html
1 進程概述
通俗的講程序是一個包含可以執行代碼的靜態的文件。進程是一個開始執行但是還沒有結束的程序的實例。
當程序被系統調用到內存以后,系統會給程序分配一定的資源(內存,設備等等)然后進行一系列的復雜操作,使程序變成進程以供系統調用。
1.1 進程的分類
按照進程的功能和運行的程序分類,進程可划分為兩大類:
系統進程
可以執行內存資源分配和進程切換等管理工作,而且該進程的運行不受用戶的干預,即使是root用戶也不能干預系統進程的運行。
用戶進程
通過執行用戶程序、應用程序或內核之外的系統程序而產生的進程,此類進程可以在用戶的控制下運行或關閉。
針對用戶進程,又可以分為如下3類:
交互進程:由一個Shell終端其他的進程,在執行過程中,需要與用戶進行交互操作,可以運行於前台,也可以運行於后台。
批處理進程:該進程是一個進程集合,負責按順序啟動其他的進程。
守護進程:守護進程是一直運行的一種進程,經常在Linux系統時啟動,在系統關閉時終止。它們獨立於控制終端且周期性地質學某種任務或等待處理某些發生的時間。例,httpd進程,crond進程等。
1.2 進程狀態
為了充分的利用資源,系統還對進程區分了不同的狀態。
一般操作系統將進程分為五個狀態:
- 新建:新建表示進程正在被創建。
- 運行:運行是進程正在運行。
- 阻塞:阻塞是進程正在等待某一個事件發生。
- 就緒:就緒是表示系統正在等待CPU來執行命令。
- 完成:完成表示進程已經結束了系統正在回收資源。
Linux上進程有5種狀態,這5中狀態可以與一般操作系統的狀態對應起來:
- 運行:正在運行或在運行隊列中等待。
- 中斷:休眠中, 受阻, 在等待某個條件的形成或接受到信號。
- 不可中斷:收到信號不喚醒和不可運行, 進程必須等待直到有中斷發生。
- 僵死:進程已終止, 但進程描述符存在, 直到父進程調用wait4()系統調用后釋放。
- 停止:進程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號后停止運行運行。
1.3 進程ID與父子進程
一個程序可能有許多進程,而每一個進程又可以有許多子進程。依次循環下去,而產生子孫進程。
為了區分各個不同的進程,系統給每一個進程分配了一個ID以便識別。Linux系統中,進程ID(PID)是區分不同進程的唯一標識。PPID表示父進程。所有的進程都是PID為1的init進程的后代。內核在系統啟動的最后階段啟動init進程。
一般每個進程都會有父進程,父進程與子進程之間是管理與被管理的關系,當父進程停止時,子進程也隨之消失,但子進程關閉,父進程不一定終止。
1.4 僵屍進程
每個進程在結束后都會處於僵死狀態,等待父進程將其釋放資源,處於該狀態的進程已經結束,但父進程還沒有釋放其系統資源。
由於某種原因,父進程在子進程退出前退出,則所有子進程就變成一個孤兒進程,拖沒有相應處理機制,則孤兒進程會一直處於僵死狀態,資源無法釋放。這種僵死的孤兒進程即僵屍進程。
此時解決方法是在啟動進程內找一個進程作為這些孤兒進程的父進程,或者直接讓init進程作為它們的父進程,進而釋放孤兒進程占用的資源。
1.5 線程
線程在Linux中被稱為輕量級的進程。
進程有獨立的內存地址空間,線程沒有。線程不能獨立存在,線程由進程創建的。
2 進程監控
2.1 使用ps命令監控系統進程
ps命令(Process Status)用於顯示當前進程的狀態。
ps命令有兩種不同風格的語法規則:
- BSD形式,BSD形式的語法的選項前沒有破折號,如:ps aux
- UNIX/LINUX形式,Linux形式的語法的選項前有破折號,如:ps -ef
在Linux系統上混合這兩種語法是可以的。比如 "ps ax -f"。這里主要討論UNIX形式語法。
注意:"ps aux"不等同於"ps -aux"。比如"-u"用於顯示用戶的進程,但是"u"意味着顯示具體信息。
使用 ps --help 查詢參數幫助說明:
常用參數說明:
-a:顯示同一終端下的所有程序。
-A:顯示所有進程。
-u:有效用戶相關的進程。
-N:反向選擇。
-f:詳細顯示程序執行的路徑群。
-e :所有進程。等同於-A。
-l :顯示長格式。
-F :附加全格式。
-H :顯示進程的樹狀結構。
-L :顯示線程,可能出現LWP和NLWP欄位。
-m :在進程后顯示線程。
-h 不顯示標題。
-w 寬輸出。
--lines<行數> 每頁顯示的行數。
--width<字符數> 每頁顯示的字符數。
--help 顯示幫助信息。
--version 顯示版本顯示。
a:顯示終端中包括其它用戶的所有進程。
x:顯示無控制終端的進程。
r:顯示當前終端的進程。
c:顯示進程的真實名稱。
e:顯示環境變量。
f: 顯示程序間的關系。
T:顯示當前終端的所有程序
u: 指定用戶的所有進程
結果的列顯示
F :進程標志。
S :進程狀態。同STAT。
SID 會話ID(Session id)
USER:該進程屬於那個使用者賬號的。
PID :進程ID。
PPID :父進程的進程ID(Parent Process id) 。
%CPU:進程占CPU的百分比。
%MEM :該進程所占用的物理內存百分比
VSZ :進程使用掉的虛擬內存量 (Kbytes)(Virtual Size) 。
RSS :進程占用的固定的內存量 (Kbytes)。
TTY :與進程關聯的終端(tty)。進程是在那個終端機上面運作,若與終端機無關,則顯示 ?,另外, tty1-tty6 是本機上面的登入者程序,若為 pts/0 等等的,則表示為由網絡連接進主機的程序。
STAT:程序目前的狀態,主要的狀態有:
D :不可中斷
R :運行
S :中斷
T :停止
Z :僵死
START:進程被觸發啟動的時間。
TIME :進程實際使用 CPU 運作的時間。
COMMAND:進程的運啟動的實際指令。
LWP :LWP(輕量級進程【light weight process】,也稱作線程)ID。
C :處理器使用率百分比
NLWP :進程中lwp(線程)的數量。(別名thcount)
PRI :進程的優先級。(參看1.1.4“進程優先級和Nice值”)
NI :Nice值(whether the process tries to be nice by adjusting the priority by the number given; see below for details)
ADDR :進程地址空間(不顯示)
SZ :進程所有內存(code+data+stack)總數,單位為KB。
WCHAN :內核功能名稱,如果進程正在運行中
RSS :常駐集大小,任務所使用的非交換物理內存(KB)
PSR :當前執行進程的處理器
STIME :開始時間。
CMD :啟動任務的命令行(包括參數)
WCHAN :進程正在睡眠的內核函數名稱;該函數的名稱是從/root/system.map文件中獲得的。
FLAGS :與進程相關的數字標識。
例:查看系統中的每個進程。
命令:ps -A
例:列出目前所有的正在內存當中的程序。
命令:ps aux
命令:ps -aux
若BSD的風格選項前加上“-”,則會出現警告信息。
例:顯示所有進程信息,連同命令行。
命令:ps -ef
例:ps 與grep 常用組合用法,查找特定進程。
命令:ps -ef |grep ssh
例:顯示指定用戶進程。
命令:ps -u root
例:將目前屬於您自己這次登入的 PID 與相關信息列示出來。
命令:ps -l
例:列出類似程序樹的程序顯示
命令:ps axjf
該條命令的結果可以看到如下樹狀的進程信息。
例:輸出指定的字段。
命令:ps -o pid,ppid,pgrp,session,tpgid,comm
例:按內存占用情況對進程排序
命令:ps auxw --sort=rss
例:在進行系統維護時,如果CPU負載突然增加,而又不知道是哪一個進程造成的
命令:ps auxw --sort=%cpu
2.2 使用pstree命令監控系統進程
該命令顯示當前運行的所有進程及其相關的子進程,以樹的格式輸出。
基本格式:pstree 參數
說明:pestree命令對程序名稱相同的會自動合並,所有“|-httpd---8*[httpd]”即表示系統中有8個httpd進程產生的子進程。
參數:
-a :顯示出該命令的參數,假如這個命令進程被其他進程替換掉,那么進程將顯示在括號中 -a 選項包含有壓實進程樹的選項,對於相同的進程,會使用n*(process)的形式展顯出來。
-c :關閉禁用顯示結果進程樹,在默認情況下,進程子樹是會被壓縮的。不管有多少進程名相同的進程,都會逐個顯示出來。
-G :使用vt100線性描述樹
-h :突空出顯示當前進程的父進程並高亮顯示出來,如果沒有父進程那么什么都不會顯示。
-H :突出顯示出指定進程的父進程信息並高亮顯示出來,使用方法為 pstree -H PID
-l :顯示長格式命令選項,在默認的情況下,命令行最多顯示寬度為132bit ,超過將不能正常顯示。
-n :基於進程相同的祖先來進行排序,可以命名pid來代替進程名稱 。
-p :顯示所有的時程,顯示結果包含進程名和時進程ID
-u :顯示出用戶的UID,無論何時,這個UID和進程比較UID參數,這個新的UID將在進程名后顯示不同的參數。
-U :使用utf-8字符集以十進制表示,
-v :顯示版本號。
例:基本pstree命令的使用。
例:顯示當前所有進程的進程號和進程ID。
命令:pstree -p
例:顯示所有進程的所有詳細信息,遇到相同的進程名可以壓縮顯示。
命令:pstree -a
2.3 使用top命令監控系統進程
top命令可以動態管理監控linux進程,非常類似於Windows任務管理器。top命令是一個功能十分強大的監控系統的工具,對於系統管理員而言尤其重要。但是,它的缺點是會消耗一定的系統資源。
命令:top
top命令基礎界面詳解
第一行:任務隊列信息
10:44:56 當前時間
up 104days,18:07 系統運行時間。104天,18小時07分鍾。
2 user 當前登錄用戶數。
load average: 0.06, 0.60, 0.48 系統負載,即任務隊列的平均長度。 三個數值分別為 1分鍾、5分鍾、15分鍾前到現在的平均值。
第二行:進程數信息
160 total 進程總數
1 running 正在運行的進程數
159 sleeping 睡眠的進程數
0 stopped 停止的進程數
0 zombie 僵屍進程數
第三行:CPU狀態
0.0% us 用戶進程占用CPU百分比。
0.0% sy 系統進程占用CPU百分比。
0.0% ni 用戶進程空間內改變過優先級的進程占用CPU百分比。
100% id 空閑CPU百分比。
0.0% wa IO等待占用CPU的百分比
0.0% hi 硬中斷(Hardware IRQ)占用CPU的百分比
0.0% si 軟中斷(Software Interrupts)占用CPU的百分比
第四行:內存狀態
3813844k total 物理內存總量
3693040k used 使用的物理內存總量
120804k free 空閑內存總量
116448k buffers 用作內核緩存的內存量
第五行:swap交換狀態
4095992k total 交換區總量。
625764k used 使用的交換區總量。
3470228k free 空閑交換區總量。
374160k cached 緩沖的交換區總量。
第六行:空行
第七行以下:各進程的狀態監控
PID 進程id
PPID 父進程id
RUSER Real user name
UID 進程所有者的用戶id
USER 進程所有者的用戶名
GROUP 進程所有者的組名
TTY 啟動進程的終端名。不是從終端啟動的進程則顯示為 ?
PR 優先級
NI nice值。負值表示高優先級,正值表示低優先級。
P 最后使用的CPU,僅在多CPU環境下有意義
%CPU 上次更新到現在的CPU時間占用百分比
TIME 進程使用的CPU時間總計,單位秒
TIME+ 進程使用的CPU時間總計,單位1/100秒
%MEM 進程使用的物理內存百分比
VIRT 進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES
SWAP 進程使用的虛擬內存中,被換出的大小,單位kb。
RES 進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA
CODE 可執行代碼占用的物理內存大小,單位kb
DATA 可執行代碼以外的部分(數據段+棧)占用的物理內存大小,單位kb
SHR 共享內存大小,單位kb
nFLT 頁面錯誤次數
nDRT 最后一次寫入到現在,被修改過的頁面數。
S 進程狀態。
D=不可中斷的睡眠狀態
R=運行
S=睡眠
T=跟蹤/停止
Z=僵屍進程
COMMAND 命令名/命令行
WCHAN 若該進程在睡眠,則顯示睡眠中的系統函數名
Flags 任務標志,參考 sched.h
說明:
- load average數據是每隔5秒鍾檢查一次活躍的進程數,然后按特定算法計算出的數值。如果這個數除以邏輯CPU的數量,結果高於5的時,表明系統負荷已經比較大了。
- 不要用Windows的內存概念理解Linux內存方面的數據。
- 第四行中使用中的內存總量(used)指的是現在系統內核控制的內存數,空閑內存總量(free)是內核還未納入其管控范圍的數量。納入內核管理的內存不見得都在使用中,還包括過去使用過的現在可以被重復利用的內存,內核並不把這些可被重新使用的內存交還到free中去,因此在linux上free內存會越來越少,但不用為此擔心。對於內存監控,在top里我們要時刻監控第五行swap交換分區的used,如果這個數值在不斷的變化,說明內核在不斷進行內存和swap的數據交換,這是真正的內存不夠用了。
- top命令的第一行信息與uptime命令的執行結果等價。
- idle:表示CPU閑置。Windows XP的任務管理器中System Idle Process即表示cpu閑置。
top命令參數
b:以批量模式運行,但不能接受命令行輸入;
c:顯示命令行,而不僅僅是命令名;
d:顯示兩次刷新時間的間隔,比如 -d 5,表示兩次刷新間隔為5秒;
i:不顯示空閑進程和僵屍進程;
n:更新的次數,完成后退出top。比如 -n 5,表示top更新5次數據就退出;
p:參數為PID,僅監視指定進程的ID;PID是一個數值;
q:不經任何延時就刷新;
s:安全模式運行,禁用一些效互指令;
S:累積模式,輸出每個進程的總的CPU時間,包括已死的子進程;
例:設置top命令10秒刷新一次。
命令:top -d 10
例:顯示程序及其完整相關信息
命令:top -c
例:設定監控信息的更新次數。如設定系統任務信息更新5次后結束top命令,在命令行提示符下輸入:
命令:top -n 5
top命令的操作
在top命令使用過程中,還可以使用一些交互的命令來完成其他參數的功能。
這些命令是通過以下快捷鍵啟動(區分大小寫):
- 空格:立刻刷新。
- h,?:顯示有關安全模式及累積模式的幫助信息;
- i:禁止空閑進程和僵屍進程;
- l:切換到顯法負載平均值和正常運行的時間等信息;
- m:顯示/關閉內存信息;
- n:提示顯示的進程數,比如輸入3,就在整屏上顯示3個進程;
- r:把renice 應用到一個進程,提示輸入PID和renice的值;
- s:改變兩次刷新時間間隔,以秒為單位;
- t:切換到顯示進程和CPU狀態的信息;
- k:提示輸入要殺死的進程ID,目的是用來殺死該進程(默人信號為15)
- l:切換到顯法負載平均值和正常運行的時間等信息;
- q:退出top命令。
- c:切換顯示命令名稱和完整命令行。
- f,F:增加顯示字段,或刪除顯示字段;
- o,O:改變顯示字段的順序;
- P:根據CPU使用大小進行排序。
- T:根據累計時間排序。
- M:根據使用內存大小進行排序。
- W:將當前設置寫入~/.toprc文件中。這是寫top配置文件的推薦方法。
- A:按進程生命大小進行排序,最新進程顯示在最前;
- M:按內存占用大小排序,由大到小;
- N:以進程ID大小排序,由大到小;
- P:按CPU占用情況排序,由大到小
- S:切換到累積時間模式;
使用幫助
在top基本界面中輸入q ,即可退出top基本界面。
在top基本視圖中,按h鍵,進入幫助界面。
多U多核CPU監控
在top基本視圖中,鍵入數字1,可監控每個邏輯CPU的狀況:
觀察上圖,服務器有4個邏輯CPU。
進程字段排序
默認進入top時,各進程是按照CPU的占用量來排序的。可通過鍵盤指令來改變排序字段,比如想監控哪個進程占用MEM最多,我一般的使用方法如下:
1. 敲擊鍵盤b(打開/關閉加亮效果),top的視圖變化如下:
進程id為4380的top進程被加亮了,top進程就是視圖第二行顯示的唯一的運行態(runing)的那個進程,可以通過敲擊y鍵關閉或打開運行態進程的加亮效果。
2. 敲擊鍵盤x(打開/關閉排序列的加亮效果),top的視圖變化如下:
可以看到,top默認的排序列是%CPU。
3. 通過shift + >或shift + <可以向右或左改變排序列,下圖是按一次shift + >的效果圖:
視圖現在已經按照%MEM來排序了。
改變進程顯示字段
1. 敲擊f鍵,top進入另一個視圖,在這里可以編排基本視圖中的顯示字段:
這里列出了所有可在top基本視圖中顯示的進程字段,有*並且標注為大寫字母的字段是可顯示的,沒有*並且是小寫字母的字段是不顯示的。如果要在基本視圖中顯示CODE和DATA兩個字段,可以通過敲擊r和s鍵:
鍵入r、s鍵之前:
鍵入r、s鍵之后:
2. 回車返回基本視圖,可以看到多了CODE和DATA兩個字段:
查看指定用戶的進程
在top中,輸入u,則可以監視某一個用戶。直接輸入用戶的用戶名,比如root。即可監視。
鍵入空格,則顯示所有用戶的進程。
2.4 使用lsof命令監控系統進程
lsof(list open files)是一個列出當前系統打開文件的工具。
在Linux環境下,任何事物都以文件的形式存在,通過文件不僅僅可以訪問常規數據,還可以訪問網絡連接和硬件。
如傳輸控制協議 (TCP) 和用戶數據報協議 (UDP) 套接字等,系統在后台都為該應用程序分配了一個文件描述符,無論這個文件的本質如何,該文件描述符為應用程序與基礎操作系統之間的交互提供了通用接口。因為應用程序打開文件的描述符列表提供了大量關於這個應用程序本身的信息,因此通過lsof工具能夠查看這個列表對系統監測以及排錯將是很有幫助的。
lsof語法格式是:lsof [options] filename
命令參數:
-a:列出打開文件存在的進程。
-c<進程名> :列出指定進程所打開的文件。
-g:列出GID號進程詳情。
-d<文件號>:列出占用該文件號的進程。
+d<目錄> :列出目錄下被打開的文件。
+D<目錄> :遞歸列出目錄下被打開的文件。
-n<目錄> :列出使用NFS的文件。
-i<條件> :列出符合條件的進程。(4、6、協議、:端口、 @ip )
-p<進程號> :列出指定進程號所打開的文件。
-u :列出UID號進程詳情。
-h :顯示幫助信息。
-v :顯示版本信息。
命令:lsof
每行顯示一個打開的文件,若不指定條件默認將顯示所有進程打開的所有文件。
lsof輸出各列信息的意義如下:
COMMAND:進程的名稱。
PID:進程標識符。
USER:進程所有者。
DEVICE:指定磁盤的名稱。
SIZE:文件的大小。
NODE:索引節點(文件在磁盤上的標識)。
NAME:打開文件的確切名稱。
FD:文件描述符,應用程序通過文件描述符識別該文件。如cwd、txt等。
-
- cwd:表示current work dirctory,即:應用程序的當前工作目錄,這是該應用程序啟動的目錄,除非它本身對這個目錄進行更改
- txt :該類型的文件是程序代碼,如應用程序二進制文件本身或共享庫,如上列表中顯示的 /sbin/init 程序
- lnn:library references (AIX);
- er:FD information error (see NAME column);
- jld:jail directory (FreeBSD);
- ltx:shared library text (code and data);
- mxx :hex memory-mapped type number xx.
- m86:DOS Merge mapped file;
- mem:memory-mapped file;
- mmap:memory-mapped device;
- pd:parent directory;
- rtd:root directory;
- tr:kernel trace file (OpenBSD);
- v86 VP/ix mapped file;
- 0:表示標准輸出
- 1:表示標准輸入
- 2:表示標准錯誤
一般在標准輸出、標准錯誤、標准輸入后還跟着文件狀態模式:r、w、u等
-
- u:表示該文件被打開並處於讀取/寫入模式
- r:表示該文件被打開並處於只讀模式
- w:表示該文件被打開並處於
- 空格:表示該文件的狀態模式為unknow,且沒有鎖定
- -:表示該文件的狀態模式為unknow,且被鎖定
同時在文件狀態模式后面,還跟着相關的鎖
-
- N:for a Solaris NFS lock of unknown type;
- r:for read lock on part of the file;
- R:for a read lock on the entire file;
- w:for a write lock on part of the file;(文件的部分寫鎖)
- W:for a write lock on the entire file;(整個文件的寫鎖)
- u:for a read and write lock of any length;
- U:for a lock of unknown type;
- x:for an SCO OpenServer Xenix lock on part of the file;
- X:for an SCO OpenServer Xenix lock on the entire file;
- space:if there is no lock.
TYPE:文件類型,如DIR、REG等,常見的文件類型。
-
- DIR:表示目錄
- CHR:表示字符類型
- BLK:塊設備類型
- UNIX: UNIX 域套接字
- FIFO:先進先出 (FIFO) 隊列
- IPv4:網際協議 (IP) 套接字
例:查看誰正在使用某個文件,也就是說查找某個文件相關的進程。
命令:lsof /bin/bash
例:列出某個用戶打開的文件信息。
命令:lsof -u username
例:列出某個程序進程所打開的文件信息。
命令:lsof -c mysql
說明:-c 選項將會列出所有以mysql這個進程開頭的程序的文件,其實也可以寫成 lsof | grep mysql
例:列出多個進程多個打開的文件信息。
命令:lsof -c mysql -c apache
例:列出除了某個用戶外的被打開的文件信息
命令:lsof -u ^root
說明:^這個符號在用戶名之前,將會把是root用戶打開的進程不讓顯示。
例:列出多個進程號對應的文件信息。
命令:lsof -p 1,2,3
例:列出除了某個進程號,其他進程號所打開的文件信息。
命令:lsof -p ^1
例:列出所有的網絡連接。
命令:lsof -i
例:列出所有tcp 網絡連接信息。
命令:lsof -i tcp
例:列出所有udp網絡連接信息。
命令:lsof -i udp
例:列出誰在使用某個端口。
命令:lsof -i :3306
例:列出誰在使用某個特定的udp端口。
命令:lsof -i udp:55
例:特定的tcp端口。
命令:lsof -i tcp:80
例:列出某個用戶的所有活躍的網絡端口。
命令:lsof -a -u test -i
例:列出所有網絡文件系統。
命令:lsof -N
域名socket文件。
命令:lsof -u
例:某個用戶組所打開的文件信息。
命令:lsof -g 5555
例:根據文件描述列出對應的文件信息。
命令:lsof -d description(like 2)
例:根據文件描述范圍列出文件信息。
命令:lsof -d 2-3
例:列出COMMAND列中包含字符串" sshd",且文件描符的類型為txt的文件信息。
命令:lsof -c sshd -a -d txt
例:列出被進程號為1234的進程所打開的所有IPV4 network files。
命令:lsof -i 4 -a -p 1234
列出目前連接主機peida.linux上端口為:20,21,22,25,53,80相關的所有文件信息,且每隔3秒不斷的執行lsof指令。
命令:lsof -i @peida.linux:20,21,22,25,53,80 -r 3
3 結束進程
kill命令
kill[參數][進程號]
命令參數:
- -l :信號,若果不加信號的編號參數,則使用“-l”參數會列出全部的信號名稱。
- -a :當處理當前進程時,不限制命令名和進程號的對應關系。
- -p :指定kill 命令只打印相關進程的進程號,而不發送任何信號。
- -s :指定發送信號。
- -u :指定用戶。
例:查詢信號
說明:
只有第9種信號(SIGKILL)才可以無條件終止進程,其他信號進程都有權利忽略。 下面是常用的信號:
HUP 1 終端斷線
INT 2 中斷(同 Ctrl + C)
QUIT 3 退出(同 Ctrl + \)
TERM 15 終止
KILL 9 強制終止
CONT 18 繼續(與STOP相反, fg/bg命令)
STOP 19 暫停(同 Ctrl + Z)
例:到指定信號的數值。
例:先用ps查找進程,然后用kill殺掉
命令:kill 3268
例:強制終止進程
命令:kill –9 3268
說明:這種方法應該盡量少用。
例:殺死指定用戶所有進程
命令:
kill -9 $(ps -ef | grep peidalinux)
kill -u peidalinux
kill結束進程有些進程是無法殺死的。關鍵進程是無法結束的。比如bash的進程。
init進程是無法被終止,或者說是不允。init是Linux系統操作中不可缺少的程序之一。所謂的init進程,它是一個由內核啟動的用戶級進程。內核自行啟動(已經被載入內存,開始運行,並已初始化 所有的設備驅動程序和數據結構等)之后,就通過啟動一個用戶級程序init的方式,完成引導進程。所以,init始終是第一個進程(其進程編號始終為 1)。 其它所有進程都是init進程的子孫。init進程是不可殺的!
例:以下示例是在虛擬機中完成。init進程無法被強制結束。
killall命令
該命令用於結束指定名字的進程及其所有子進程。
例:結束svn服務器的進程
若需要強制結束進程,與kill命令相似,可以使用 -9 ,例:killall -9 cpusd
4 進程的優先級別
Priority值與Nice值
PRI值越低,表示進程運行的優先級越高,PRI值有Linux內核調整的,用戶無法直接調整PRI值。
若用戶需要調整進程的優先級,可以通過Nice值進行。
一般來說,PRI與NI的關系如下:PRI(new) = PRI(old) + NI
NI的范圍為-20 ~ 19 ,40個等級。
NI為負數時,PRI的值會減小,進程的優先級就會提高。
nice命令
調整程序運行的優先級。
nice [-n 數字] command
例:啟動vi程序,同時提升其優先級。
renice命令
對已存在進程的nice重新調整。
基本格式:reniece [number] PID
例:重設vi程序的vi值。
參考資料:
關於進程更多詳細概念與理論,可以參閱《操作系統》相關教程。
http://www.cnblogs.com/zhuheng/
http://baike.baidu.com/link?url=-M8KKalMmEVVlTr-lnUgW6vBt4pllD-WzINdxFSwtQVOJa4WQiGalSHO_Topts0_
為了防止無良網站的爬蟲抓取文章,特此標識,轉載請注明文章出處。LaplaceDemon/SJQ。
http://www.cnblogs.com/shijiaqi1066/p/3836017.html


































