linux下ps與grep命令的相關用法
1.程式與程序
程式是為了完成某種任務而設計的軟體,比如OpenOffice是程式。什麼是程序呢?程序就是執行中的程式,是程式的最小執行單元。
一個執行著的程式,可能有多個程序。比如 LinuxSir.Org 所用的WWW伺服器是apache伺服器,當管理員啟動服務後,可能會有好多人來訪問,也就是說許多使用者來同時請求httpd服務,apache伺服器將會建立有多個httpd程序來對其進行服務。
注:httpd服務是Apache超文字傳輸協議(HTTP)伺服器的主程式。被設計為一個獨立執行的後臺程序,它會建立一個處理請求的子程序或者執行緒的池。
1.1 程序的分類
程序一般分為互動程序
值得一提的是守護程序總是活躍的,一般是後臺執行,守護程序一般是由系統在開機時通過指令碼自動啟用啟動或超級管理使用者root來啟動。比如在Fedora或Redhat中,我們可以定義httpd 伺服器的啟動指令碼的執行級別,此檔案位於/etc/init.d目錄下,檔名是httpd,/etc/init.d/httpd 就是httpd伺服器的守護程式,當把它的執行級別設定為3和5時,當系統啟動時,它會跟著啟動。
[[email protected] ~]# chkconfig --level 35 httpd on
由於守護程序是一直執行著的,所以它所處的狀態是等待請求處理任務。比如,我們是不是訪問 LinuxSir.Org ,LinuxSir.Org 的httpd伺服器都在執行,等待著使用者來訪問,也就是等待著任務處理。
程序ID(PID):是程序的唯一標識,用來區分不同的程序;
父程序ID(PPID);
啟動程序的使用者ID(UID)和所歸屬的組(GID);
程序的狀態:R(執行態)S(休眠態)Z(殭屍態);
程序執行的優先順序;
程序所連線的終端名;
程序資源佔用:例如佔用資源的大小(記憶體、CPU佔有量)
1.3 父程序與子程序
他們之間是管理者與被管理者的關係。當父程序終止的時候,子程序也隨之終止,但子程序終止,父程序卻不一定同時終止。例如httpd伺服器執行時,我們可以殺掉其子程序,父程序並不會因為子程序的終止而終止。
在程序管理中,當我們發現佔用資源過多,或無法控制的程序時,應該殺死它,以保護系統的穩定安全執行;
1.4 程序的管理
對於Linux程序的管理,是通過程序管理工具來實現的,一般有:ps、kill、pgrep等
2 程序管理工具
2.1 ps 監視程序工具
ps 為我們提供了程序的一次性的檢視,它所提供的檢視結果並不動態連續的;如果想對程序時間監控,應該用top工具;
2.1.1
ps 的引數說明;
ps 提供了很多的選項引數,常用的有以下幾個;
l 長格式輸出;
u 按使用者名稱和啟動時間的順序來顯示程序;
j 用任務格式來顯示程序;
f 用樹形格式來顯示程序;
a 顯示所有使用者的所有程序(包括其它使用者);
x 顯示無控制終端的程序;
r 顯示執行中的程序;
ww 避免詳細引數被截斷;
我們常用的選項是組合是aux 或lax,還有引數f的應用;
ps aux 或lax輸出的解釋;
USER 程序的屬主;
PID 程序的ID;
PPID 父程序;
%CPU 程序佔用的CPU百分比;
%MEM 佔用記憶體的百分比;
NI 程序的NICE值,數值大,表示較少佔用CPU時間;
VSZ 程序虛擬大小;
RSS 駐留中頁的數量;
WCHAN
TTY 終端ID
STAT 程序狀態
D Uninterruptible sleep (usually IO)
R 正在執行可中在佇列中可過行的;
S 處於休眠狀態;
T 停止或被追蹤;
W 進入記憶體交換(從核心2.6開始無效);
X 死掉的程序(從來沒見過);
Z 殭屍程序;
< 優先順序高的程序
N 優先順序較低的程序
L 有些頁被鎖進記憶體;
s 程序的領導者(在它之下有子程序);
l is multi-threaded (using CLONE_THREAD, like NPTL pthreads do)
+ 位於後臺的程序組;
WCHAN 正在等待的程序資源;
START 啟動程序的時間;
TIME 程序消耗CPU的時間;
COMMAND 命令的名稱和引數;
2.1.2 ps 應用舉例
例項一:ps aux 最常用
[[email protected] ~]# ps -aux |more
可以用 | 管道和 more 連線起來分頁檢視;
[[email protected] ~]# ps -aux > ps001.txt
[[email protected] ~]# more ps001.txt
這裡是把所有程序顯示出來,並輸出到ps001.txt檔案,然後再通過more 來分頁檢視;
例項二:和grep 結合,提取指定程式的程序;
[[email protected] ~]# ps aux |grep httpd
root 4187 0.0 1.3 24236 10272 ? Ss 11:55 0:00 /usr/sbin/httpd
apache 4189 0.0 0.6 24368 4940 ? S 11:55 0:00 /usr/sbin/httpd
apache 4190 0.0 0.6 24368 4932 ? S 11:55 0:00 /usr/sbin/httpd
apache 4191 0.0 0.6 24368 4932 ? S 11:55 0:00 /usr/sbin/httpd
apache 4192 0.0 0.6 24368 4932 ? S 11:55 0:00 /usr/sbin/httpd
apache 4193 0.0 0.6 24368 4932 ? S 11:55 0:00 /usr/sbin/httpd
apache 4194 0.0 0.6 24368 4932 ? S 11:55 0:00 /usr/sbin/httpd
apache 4195 0.0 0.6 24368 4932 ? S 11:55 0:00 /usr/sbin/httpd
apache 4196 0.0 0.6 24368 4932 ? S 11:55 0:00 /usr/sbin/httpd
root 4480 0.0 0.0 5160 708 pts/3 R+ 12:20 0:00 grep httpd
例項二:父進和子程序的關係友好判斷的例子
[[email protected] ~]# ps auxf |grep httpd
root 4484 0.0 0.0 5160 704 pts/3 S+ 12:21 0:00 \_ grep httpd
root 4187 0.0 1.3 24236 10272 ? Ss 11:55 0:00 /usr/sbin/httpd
apache 4189 0.0 0.6 24368 4940 ? S 11:55 0:00 \_ /usr/sbin/httpd
apache 4190 0.0 0.6 24368 4932 ? S 11:55 0:00 \_ /usr/sbin/httpd
apache 4191 0.0 0.6 24368 4932 ? S 11:55 0:00 \_ /usr/sbin/httpd
apache 4192 0.0 0.6 24368 4932 ? S 11:55 0:00 \_ /usr/sbin/httpd
apache 4193 0.0 0.6 24368 4932 ? S 11:55 0:00 \_ /usr/sbin/httpd
apache 4194 0.0 0.6 24368 4932 ? S 11:55 0:00 \_ /usr/sbin/httpd
apache 4195 0.0 0.6 24368 4932 ? S 11:55 0:00 \_ /usr/sbin/httpd
apache 4196 0.0 0.6 24368 4932 ? S 11:55 0:00 \_ /usr/sbin/httpd
這裡用到了f引數;父與子關係一目瞭然;
2.2 pgrep
pgrep 是通過程式的名字來查詢程序的工具,一般是用來判斷程式是否正在執行。在伺服器的配置和管理中,這個工具常被應用,簡單明瞭;
用法:
#ps 引數選項 程式名
常用引數
-l 列出程式名和程序ID;
-o 程序起始的ID;
-n 程序終止的ID;
舉例:
[[email protected] ~]# pgrep -lo httpd
4557 httpd
[[email protected] ~]# pgrep -ln httpd
4566 httpd
[[email protected] ~]# pgrep -l httpd
4557 httpd
4560 httpd
4561 httpd
4562 httpd
4563 httpd
4564 httpd
4565 httpd
4566 httpd
[[email protected] ~]# pgrep httpd
4557
4560
4561
4562
4563
4564
4565
4566
3 終止程序的工具 kill 、killall、pkill、xkill
終止一個程序或終止一個正在執行的程式,一般是通過 kill 、killall、pkill、xkill 等進行。比如一個程式已經死掉,但又不能退出,這時就應該考慮應用這些工具。
另外應用的場合就是在伺服器管理中,在不涉及資料庫伺服器程式的父程序的停止執行,也可以用這 些工具來終止。為什麼資料庫伺服器的父程序不能用這些工具殺死呢?原因很簡單,這些工具在強行終止資料庫伺服器時,會讓資料庫產生更多的檔案碎片,當碎片 達到一定程度的時候,資料庫就有崩潰的危險。比如mysql伺服器最好是按其正常的程式關閉,而不是用pkill mysqld 或killall mysqld 這樣危險的動作;當然對於佔用資源過多的資料庫子程序,我們應該用kill 來殺掉。
3.1 kill
kill的應用是和ps 或pgrep 命令結合在一起使用的;
kill 的用法:
kill [訊號程式碼] 程序ID
注:訊號程式碼可以省略;我們常用的訊號程式碼是 -9 ,表示強制終止;
舉例:
[[email protected] ~]# ps auxf |grep httpd
root 4939 0.0 0.0 5160 708 pts/3 S+ 13:10 0:00 \_ grep httpd
root 4830 0.1 1.3 24232 10272 ? Ss 13:02 0:00 /usr/sbin/httpd
apache 4833 0.0 0.6 24364 4932 ? S 13:02 0:00 \_ /usr/sbin/httpd
apache 4834 0.0 0.6 24364 4928 ? S 13:02 0:00 \_ /usr/sbin/httpd
apache 4835 0.0 0.6 24364 4928 ? S 13:02 0:00 \_ /usr/sbin/httpd
apache 4836 0.0 0.6 24364 4928 ? S 13:02 0:00 \_ /usr/sbin/httpd
apache 4837 0.0 0.6 24364 4928 ? S 13:02 0:00 \_ /usr/sbin/httpd
apache 4838 0.0 0.6 24364 4928 ? S 13:02 0:00 \_ /usr/sbin/httpd
apache 4839 0.0 0.6 24364 4928 ? S 13:02 0:00 \_ /usr/sbin/httpd
apache 4840 0.0 0.6 24364 4928 ? S 13:02 0:00 \_ /usr/sbin/httpd
我們檢視httpd 伺服器的程序;您也可以用pgrep -l httpd 來檢視;
我們看上面例子中的第二列,就是程序PID的列,其中4830是httpd伺服器的父程序,從4833-4840的程序都是它4830的子程序;如果我們殺掉父程序4830的話,其下的子程序也會跟著死掉;
[[email protected] ~]# kill 4840 注:殺掉4840這個程序;
[[email protected] ~]# ps -auxf |grep httpd 注:檢視一下會有什麼結果?是不是httpd伺服器仍在執行?
[[email protected] ~]# kill 4830 注:殺掉httpd的父程序;
[[email protected] ~]# ps -aux |grep httpd 注:檢視httpd的其它子程序是否存在,httpd伺服器是否仍在執行?
對於殭屍程序,可以用kill -9 來強制終止退出;
比如一個程式已經徹底死掉,如果kill 不加訊號強度是沒有辦法退出,最好的辦法就是加訊號強度 -9 ,後面要接殺父程序;比如;
[[email protected] ~]# ps aux |grep gaim
beinan 5031 9.0 2.3 104996 17484 ? S 13:23 0:01 gaim
root 5036 0.0 0.0 5160 724 pts/3 S+ 13:24 0:00 grep gaim
或
[[email protected] ~]# pgrep -l gaim
5031 gaim
[[email protected] ~]# kill -9 5031
3.2 killall
killall 通過程式的名字,直接殺死所有程序,咱們簡單說一下就行了。
用法:killall 正在執行的程式名
killall 也和ps或pgrep 結合使用,比較方便;通過ps或pgrep 來檢視哪些程式在執行;
舉例:
[[email protected] beinan]# pgrep -l gaim
2979 gaim
[[email protected] beinan]# killall gaim
3.3 pkill
pkill 和killall 應用方法差不多,也是直接殺死執行中的程式;如果您想殺掉單個程序,請用kill 來殺掉。
應用方法:
#pkill 正在執行的程式名
舉例:
[[email protected] beinan]# pgrep -l gaim
2979 gaim
[[email protected] beinan]# pkill gaim
3.4 xkill
xkill 是在桌面用的殺死圖形介面的程式。比如當firefox 出現崩潰不能退出時,點滑鼠就能殺死firefox 。當xkill執行時出來和個人腦骨的圖示,哪個圖形程式崩潰一點就OK了。如果您想終止xkill ,就按右鍵取消;
xkill 呼叫方法:
[[email protected] ~]# xkill
相關推薦
linux下ps與grep命令的相關用法
1.程式與程序 程式是為了完成某種任務而設計的軟體,比如OpenOffice是程式。什麼是程序呢?程序就是執行中的程式,是程式的最小執行單元。 一個執行著的程式,可能有多個程序。比如 LinuxSir.Org 所用的WWW伺服器是apache伺服器,當管理員啟動服
linux下last與lastb命令詳解
bubuko 使用 文件的 clas ip地址 tty 遠程 默認 讀取 在linux系統中,last與lastb命令用來列出目前與過去登錄系統的用戶相關信息。指令英文原義: last, lastb - show listing of last logged in user
Linux下ls與cp命令
col src 註意 nbsp 技術 span 分享 應用 bubuko Linux熟練的應用命令,才可以隨心所欲~ ls 註意: ls -1 //每次只列出1個文件 cp 註意: cp -u xxx xxx //註意修改時間的先
Linux下su與su -命令的區別
在啟動伺服器ntpd服務時遇到一個問題 使用 su root 切換到root使用者後,不可以使用service命令; 使用 su - 後,就可以使用service命令了。 原因: su命令和su -命令區別就是: su只是切換了root身份,但
linux下ps命令 和 grep命令用法
inux上程序有5種狀態: 1. 執行(正在執行或在執行佇列中等待) 2. 中斷(休眠中, 受阻, 在等待某個條件的形成或接受到訊號) 3. 不可中斷(收到訊號不喚醒和不可執行, 程序必須等待直到有中斷髮生) 4. 僵死(程序已終止, 但程序描述符存在, 直到父程序
linux ps與top 命令下wa,hi,si,st等及 VSZ,RSS,VIRT,RES,等關鍵字含義詳解!
Linux中ps與top命令 這兩個命令都是檢視系統程序資訊的命令,但是用處有點兒不同 一:.ps命令–提供系統過去資訊的一次性快照 也就是說ps命令能夠檢視剛剛系統的程序資訊 命令:ps aux或者ps lax [[email protected] ~]# ps aux
Linux find、grep命令詳細用法
標準輸出 獲取參數 返回 管道 每一個 作用 實例 文件名 opts 在linux下面工作,有些命令能夠大大提高效率。本文就向大家介紹find、grep命令,他哥倆可以算是必會的linux命令,我幾乎每天都要用到他們。本文結構如下:find命令 find命令的一般形式
linux文件與目錄管理相關命令(上)
文件時間 額外 print num sys direct base -- 文件的時間 學習一下linux文件與目錄管理相關命令 pwd,cd,ls,touch,stat,basename,dirname,cp,mv,rm,tree,mkdir,rmdir,ln,file p
Linux 下壓縮與解壓縮 zip、binzip2、tar、zip命令的使用
我們經常需要對檔案壓縮或打包實現統一管理,下面就讓我們來看看gzip、bzip2、tar、zip這些命令的使用 (1) gzip 格式:gzip [選項] [檔案] 示例: ---在testzip目錄下有以下檔案 --
linux中grep命令的用法
作為linux中最為常用的三大文字(awk,sed,grep)處理工具之一,掌握好其用法是很有必要的。 首先談一下grep命令的常用格式為:grep [選項] ”模式“ [檔案] grep家族總共有三個:grep,egrep,fgrep。 常用選項: -
Linux下 ps命令說明
名稱:ps使用許可權:所有使用者使用方式:ps [options] [--help]說明:顯示瞬間行程 (process) 的動態引數:ps的引數非常多, 在此僅列出幾個常用的引數並大略介紹含義-A 列出所有的程序-w 顯示加寬可以顯示較多的資訊-au 顯示較詳細的資訊-aux 顯示所
linux下shell任務控制命令與快捷鍵jobs/fg/bg/ctrl+z/kill
Linux下使用Shell命令控制任務(Jobs)執行 下列命令可以用來操縱程序任務: ps 列出系統中正在執行的程序 kill 傳送訊號給一個或多個程序(經常用來殺死一個程序) jobs 列出屬於當前使用者的程序 bg 將程序搬到後臺執行(Background) fg
[轉]Linux下 rz 和 sz 命令的安裝與使用
目錄 Linux下 rz 和 sz 命令的安裝與使用 公司專案升級,看到運維使用sz命令將專案升級包上傳到伺服器,很是詫異,居然還有這種操作,因為我都是用的WinSCP這個軟體來完成對伺服器上的檔案進行上傳和下載功能的。回來自己搜了一下,發現是可以直接用命令來完
Linux下ps命令詳解 Linux下ps命令的詳細使用方法
command 不可 .html 用戶 動態 進程描述符 -- 發生 option Linux下ps命令詳解Linux上進程有5種狀態:1. 運行(正在運行或在運行隊列中等待)2. 中斷(休眠中, 受阻, 在等待某個條件的形成或接受到信號)3. 不可中斷(收到信號不喚
Linux下ps命令詳解
如果要檢視後臺執行的程式,那就比較複雜一點。因為在不同版本的Linux作業系統中,要顯示後臺程序其所採用的可選項是不同的。如在紅帽子 Linux作業系統中,其實採用引數的形式而不是可選項。即採用ps aux命令可以顯示出所有的應用程式(包括前臺與後臺的)。引數與可選項的差異主要在前面又沒有這個-符號。如果帶有
Linux下ps命令詳解???
linux上程序有5種狀態: 1. 執行(正在執行或在執行佇列中等待) 2. 中斷(休眠中, 受阻, 在等待某個條件的形成或接受到訊號) 3. 不可中斷(收到訊號不喚醒和不可執行, 程序必須等待直到有中斷髮生) 4. 僵死(程序已終止, 但程序描述符存在, 直
Linux下nagios的搭建及相關配置
linux下nagios的搭建及相關配置一、LAMP環境部署1、安裝php 1.安裝yum源 rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm rpm -Uvh http://rpm
Linux下安裝軟件命令詳解
代碼包 相關信息 make bin 一個 軟件包 輸入 -i bin文件 Linux下軟件安裝方法總結:一、rpm包安裝方式步驟:1、找到相應的軟件包,比如soft.version.rpm,下載到本機某個目錄;2、打開一個終端,su -成root用戶;3、cd soft.v
linux 下mii-tool ethtool 命令簡單的使用
linux下mii-tool ethtool 命令簡單的使用################################################################通過命令查看linux網卡的物理信息,狀態:[[email protected]/* */ ~]# mii-
linux下一些常用操作命令
linux 防火墻 端口 1、兩個服務器ssh免授權:ssh-keygen -t rsa 一直回車至結束ssh-copy-id -i /root/.ssh/id_rsa.pub 遠程ip 然後回車 輸入遠程ip密碼搞定,以後訪問就不用驗證密碼了2、壓縮和解壓縮命令: .tar