天天看點

Linux指令 了解

RPM常用指令參數清單

1.安裝一個包

# rpm -ivh

2.更新一個包

# rpm -Uvh  [注意U一定要大寫]

-i   安裝

-U  升線安裝

-h  以#顯示安裝進度

-v  顯示附加資訊

3.移走一個包

# rpm -e

4.安裝參數

--force 即使覆寫屬于其它包的檔案也強迫安裝

--nodeps 如果該RPM包的安裝依賴其它包,即使其它包沒裝,也強迫安裝。

5.查詢一個包是否被安裝

# rpm -q < rpm package name>

6.得到被安裝的包的資訊

# rpm -qi < rpm package name>

7.列出該包中有哪些檔案

# rpm -ql < rpm package name>

8.列出伺服器上的一個檔案屬于哪一個RPM包

# rpm -qf

9.可綜合好幾個參數一起用

# rpm -qil < rpm package name>

10.列出所有被安裝的rpm package

# rpm -qa

11.列出一個未被安裝進系統的RPM封包件中包含有哪些檔案?

# rpm -qilp < rpm package name>

-q  查詢

-p  <封包件名>   查詢軟體封包件

-a  查詢所有軟體包

-f <檔案清單>  查詢檔案屬于哪個軟體包

-g <組清單>    查詢組裡有哪些軟體包

--whatrequires <功能清單> 查詢需要指定功能的包

--whatprovides <功能清單> 查詢提供指定功能的包

--requires/-R   查詢軟體包需要哪些功能

--provides         查詢軟體包提供哪些功能

-i    顯示軟體包資訊

-l    顯示軟體包所包含檔案的清單

-d   顯示軟體包所包含的說明文檔清單

-c   顯示軟體包所包含的配置文檔清單

-s   顯示軟體包所包含的檔案的狀态

名稱:ps

使用權限:所有使用者

使用方式:ps [options] [--help]

說明:顯示瞬間行程 (process) 的動态

參數:ps的參數非常多, 在此僅列出幾個常用的參數并大略介紹含義

-A    列出所有的程序

-w    顯示加寬可以顯示較多的資訊

-au    顯示較詳細的資訊

-aux    顯示所有包含其他使用者的行程

############################################################

常用參數:

-A 顯示所有程序(等價于-e)(utility)

-a 顯示一個終端的所有程序,除了會話引線

-N 忽略選擇。

-d 顯示所有程序,但省略所有的會話引線(utility)

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

-p pid 程序使用cpu的時間

-u uid or username 選擇有效的使用者id或者是使用者名

-g gid or groupname 顯示組的所有程序。

U username 顯示該使用者下的所有程序,且顯示各個指令的詳細路徑。如:ps U zhang;(utility)

-f 全部列出,通常和其他選項聯用。如:ps -fa or ps -fx and so on.

-l 長格式(有F,wchan,C 等字段)

-j 作業格式

-o 使用者自定義格式。

v 以虛拟存儲器格式顯示

s 以信号格式顯示

-m 顯示所有的線程

-H 顯示程序的層次(和其它的指令合用,如:ps -Ha)(utility)

e 指令之後顯示環境(如:ps -d e; ps -a e)(utility)

h 不顯示第一行

############################################################

ps指令常用用法(友善檢視系統程序)

1)ps a 顯示現行終端機下的所有程式,包括其他使用者的程式。

2)ps -A 顯示所有程序。

3)ps c 列出程式時,顯示每個程式真正的指令名稱,而不包含路徑,參數或常駐服務的标示。

4)ps -e 此參數的效果和指定"A"參數相同。

5)ps e 列出程式時,顯示每個程式所使用的環境變量。

6)ps f 用ASCII字元顯示樹狀結構,表達程式間的互相關系。

7)ps -H 顯示樹狀結構,表示程式間的互相關系。

8)ps -N 顯示所有的程式,除了執行ps指令終端機下的程式之外。

9)ps s 采用程式信号的格式顯示程式狀況。

10)ps S 列出程式時,包括已中斷的子程式資料。

11)ps -t<終端機編号>  指定終端機編号,并列出屬于該終端機的程式的狀況。

12)ps u  以使用者為主的格式來顯示程式狀況。

13)ps x  顯示所有程式,不以終端機來區分。

最常用的方法是ps -aux,然後再利用一個管道符号導向到grep去查找特定的程序,然後再對特定的程序進行操作。

############################################################

運作 ps aux 的到如下資訊:

root:# ps aux

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

smmsp    3521    0.0    0.7    6556    1616    ?    Ss    20:40    0:00    sendmail: Queue runner@01:00:00 f

root    3532    0.0    0.2    2428    452    ?    Ss    20:40    0:00    gpm -m /dev/input/mice -t imps2

htt    3563    0.0    0.0    2956    196    ?    Ss    20:41    0:00    /usr/sbin/htt -retryonerror 0

htt    3564    0.0    1.7    29460    3704    ?    Sl    20:41    0:00    htt_server -nodaemon

root    3574    0.0    0.4    5236    992    ?    Ss    20:41    0:00    crond

xfs    3617    0.0    1.3    13572    2804    ?    Ss    20:41    0:00    xfs -droppriv -daemon

root    3627    0.0    0.2    3448    552    ?    SNs    20:41    0:00    anacron -s

root    3636    0.0    0.1    2304    420    ?    Ss    20:41    0:00    /usr/sbin/atd

dbus    3655    0.0    0.5    13840    1084    ?    Ssl    20:41    0:00    dbus-daemon-1 --system

Head标頭:

USER    使用者名

UID    使用者ID(User ID)

PID    程序ID(Process ID)

PPID    父程序的程序ID(Parent Process id)

SID    會話ID(Session id)

%CPU    程序的cpu占用率

%MEM    程序的記憶體占用率

VSZ    程序所使用的虛存的大小(Virtual Size)

RSS    程序使用的駐留集大小或者是實際記憶體的大小,Kbytes位元組。

TTY    與程序關聯的終端(tty)

STAT    程序的狀态:程序狀态使用字元表示的(STAT的狀态碼)

R 運作    Runnable (on run queue)            正在運作或在運作隊列中等待。

S 睡眠    Sleeping                休眠中, 受阻, 在等待某個條件的形成或接受到信号。

I 空閑    Idle

Z 僵死    Zombie(a defunct process)        程序已終止, 但程序描述符存在, 直到父程序調用wait4()系統調用後釋放。

D 不可中斷    Uninterruptible sleep (ususally IO)    收到信号不喚醒和不可運作, 程序必須等待直到有中斷發生。

T 終止    Terminate                程序收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号後停止運作運作。

P 等待交換頁

W 無駐留頁    has no resident pages        沒有足夠的記憶體分頁可配置設定。

X 死掉的程序

< 高優先級程序                    高優先序的程序

N 低優先    級程序                    低優先序的程序

L 記憶體鎖頁    Lock                有記憶體分頁配置設定并縮在記憶體内

s 程序的上司者(在它之下有子程序);

l 多程序的(使用 CLONE_THREAD, 類似 NPTL pthreads)

+ 位于背景的程序組 

START    程序啟動時間和日期

TIME    程序使用的總cpu時間

COMMAND    正在執行的指令行指令

NI    優先級(Nice)

PRI    程序優先級編号(Priority)

WCHAN    程序正在睡眠的核心函數名稱;該函數的名稱是從/root/system.map檔案中獲得的。

FLAGS    與程序相關的數字辨別

############################################################

例子:

檢視目前系統程序的uid,pid,stat,pri, 以uid号排序.

ps -eo pid,stat,pri,uid –sort uid

檢視目前系統程序的user,pid,stat,rss,args, 以rss排序.

ps -eo user,pid,stat,rss,args –sort rss

############################################################

ps 為我們提供了程序的一次性的檢視,它所提供的檢視結果并不動态連續的;如果想對程序時間監控,應該用 top 工具。

1、ps 的參數說明:

ps 提供了很多的選項參數,常用的有以下幾個:

l 長格式輸出;

u 按使用者名和啟動時間的順序來顯示程序;

j 用任務格式來顯示程序;

f 用樹形格式來顯示程序;

a 顯示所有使用者的所有程序(包括其它使用者);

x 顯示無控制終端的程序;

r 顯示運作中的程序;

ww 避免詳細參數被截斷;

我們常用的選項是組合是 aux 或 lax,還有參數 f 的應用。

2、ps aux 或 lax 輸出的解釋:

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 指令的名稱和參數;

3、應用舉例:

[root@localhost ~]# ps -aux |more

可以用 | 管道和 more 連接配接起來分頁檢視。

[root@localhost ~]# ps -aux > ps001.txt

把結果輸出到ps001.txt文本中并儲存。

[root@localhost ~]# more ps001.txt

這裡是把所有程序顯示出來,并輸出到ps001.txt檔案,然後再通過more 來分頁檢視。

4、kill 終止(殺死)程序,有十幾種控制程序的方法,下面是一些常用的方法:

[root@localhost ~]#kill -STOP [pid]

發送SIGSTOP (17,19,23)停止一個程序,而并不消滅這個程序。

[root@localhost ~]#kill -CONT [pid]

發送SIGCONT (19,18,25)重新開始一個停止的程序。

[root@localhost ~]#kill -KILL [pid]

發送SIGKILL (9)強迫程序立即停止,并且不實施清理操作。

[root@localhost ~]#kill -9 -1

終止你擁有的全部程序。

SIGKILL 和 SIGSTOP 信号不能被捕捉、封鎖或者忽略,但是,其它的信号可以。是以這是你的終極武器。

############################################################

利用ps指令向管理者報告執行中的程式:

時候系統管理者可能隻關心現在系統中運作着哪些程式,而不想知道有哪些程序在運作。由于一個應用程式可能需要啟動多個程序。所在在同等情況下,程序的數 量要比程式多的多。為此從閱讀方面考慮,管理者需要知道系統中運作的具體程式。要實作這個需求的話,就需要利用指令ps來幫忙。

一、ps指令顯示結果的含義。

當需要檢視系統中執行的程式時,雖然ps 指令不是唯一的指令,但絕對是使用的最頻繁的指令。如下圖所示,就是執行ps指令後顯示的結果。

指令行中輸入指令ps,就可以顯示系統中目前運作的所有應用程式。如上圖所示,如果輸入ps指令,其顯示結果主要有四部分内容。首先是PID,這是程式 的ID号。才作系統就是利用這個ID号來唯一的辨別應用程式,而不是利用指令來辨認。當需要強制關閉應用程式時,就需要用到這個PID号碼。其次是 TTY,這個字段表示使用者使用的終端代碼。Pts表示使用者是采用遠端登入的。第三個參數TIME表示這個程式所消耗的CPU時間,注意這個時間不是程式開 始運作的時間。最後一個參數CMD就表示程式的名字。

二、讓系統報告詳細的資訊。

在使用ps指令時,如果不采用任何的

可選項,則其顯示的資訊是非常有限的,而且往往隻顯示目前使用者所運作的程式。當系統管理者需要知道應用程式更加詳細的 運作資訊時,如想要知道這個應用程式記憶體、CPU的占用率情況時,那麼就需要加入一些可選項。如系統管理者需要一并檢視其它使用者所執行的應用程式時,就需 要在這個指令後面采用可選項-al。如此的話,系統會列出系統中所有使用者運作的所有程式。如想要知道某個程式CPU與記憶體的使用情況,而不是隻簡單的現實 其CPU的使用時間,那麼就需要在這個指令後面加入參數-l ,即使用ps –l指令可以讓系統顯示出應用程式的詳細運作資訊。關于上面各個字段所代表的含義,大家若有興趣的話可以檢視相關的幫助。一般來說,系統管理者關心的隻是 程式的PID号碼、記憶體與CPU的使用率、指令的名字、使用者采用的終端等等。其它的資訊對于系統管理者來說價值不是很大。

三、檢視背景運作的程式。

認情況下,ps指令隻顯示前台運作的程式,而不會顯示背景運作的程式。但是并非所有的程式都是在前台運作。正常情況下,隐藏在背景運作的程式數量要比前 台運作的程式多的多。如随着作業系統啟動而啟動的不少系統自帶程式,其運作的方式都是背景運作。而且有時候,系統出現問題往往是由于背景程式所造成的。如 常見的木馬等程式都是在背景所運作的。為此系統管理者相對來說,更加想要知道在背景運作着哪些程式。

如果要檢視背景運作的程式,那就比

較複雜一點。因為在不同版本的Linux作業系統中,要顯示背景程序其所采用的可選項是不同的。如在紅帽子 Linux作業系統中,其實采用參數的形式而不是可選項。即采用ps aux指令可以顯示出所有的應用程式(包括前台與背景的)。參數與可選項的差異主要在前面又沒有這個-符号。如果帶有這個符号的就表示這是一個可選項。而 如果不帶的,就表示這事一個參數。這個符号一般情況下可不能夠省。在該寫的地方沒寫,或者不需要些的地方偏偏加上了,則系統都會提示錯誤資訊,說找不到這 個指令。而在其它的Linux系統版本中,可能不能夠識别這個aux參數。如在一些Linux作業系統版本中,需要采用-a可選項來完成這個任務。由于系 統版本之間的差異,給系統管理者帶來了不少的麻煩。不過值得慶幸的是,各個作業系統版本中都有線上的幫助。如果系統管理者在使用一個新版本的作業系統時, 不知道要顯示全部程序該使用哪個可選項時,可以利用ps --heip等指令來檢視系統幫助。不過美中不足的是,系統線上幫助都是英文的,對系統管理者的英文水準是一個不小的考驗。不過如果要作Linux系統管 理員,這點英文底子還是要有的。因為最新的Linux技術基本上都是先出來英文文檔的。其實要掌握最先進的作業系統書籍,大部分的計算機書籍都是英文的。

四、對程式清單進行排序。

運作的應用程式比較多時,系統管理者需要對應用程式進行排序。Ps指令的排序功能是比較強的。主要是因為這個指令有一個--sort參數(注意在這個參 數前面采用的是兩個小橫杆符号,各位讀者不要以為是筆者寫錯了)。在這個參數後面加上系統管理者想要的排序字段,就可以進行排序了。如這個指令ps –A --sort cmd,就表示顯示系統所有的應用程式,并根據程式指令來進行排序。在Linux作業系統參數中,還有一個比較麻煩的事情,就是參數大小寫不同往往代表着 不同的含義。如上面這個指令,将大寫字母A換成是小寫字元a,則結果就完全兩樣了。大寫字元A表示所有的應用程式,而小寫字元a則表示“all w/ tty except session leaders”。兩者有本質的差別。通過這個差異可以用來過濾不同終端登陸帳戶所運作的應用程式。

ps指令中,不少參數都有這種情況。運作ps --help檢視這個指令的所有參數,就可以看到類似的大小寫不同代表不同含義的情況還有很多。如大寫字元O與小寫字元o、大寫字元U與小寫字元u等等。 這些差異無形之中增加了系統管理者維護作業系統的難度。系統管理者要掌握這麼多的參數以及參數大小寫之間的差異,往往是不可能的。系統管理者除了平時要多 使用使用常用的參數來增加值觀的印象,這個系統指令的線上幫助确實也是少不了的。這個系統幫助可以給管理者使用系統指令提供線上的指導。

五、報告特定程式的運作情況。

系統中運作的程式比較多時,通過對程式名字排序可以幫助管理者找到自己所關心的程式。但是這仍然不是最簡便的方式。如現在系統管理者在其它作業系統中發 現有一個叫做threadx的木馬程式在系統背景運作。為此管理者需要在其它電腦上檢視是否也有這個木馬程式在運作。此時該如何處理呢?利用排序功能,對 程式的名字進行排序(注意不是對程式的PID進行排序,因為即使程式相同,啟動的時間不同或者作業系統中已經啟動程式的數量不同,這個PID号碼也就不 同。也就是說這個PID号碼是自動生成的)。這在一定程度上可以幫助管理者加快程式查找的速度。不過筆者認為,如果系統管理者能夠使用管道符與 grep等查詢指令可能會更快的找到自己所需要的應用程式資訊。

如現在系統管理者若使用這個指令ps aux |grep

“threadx”,會出現什麼情況呢?首先系統會列出目前系統中所有運作的應用程式(包括前台運作與背景運作的)。然後将輸出的結果通過管道符号|傳遞 給指令grep。然後指令grep就會在ps指令輸出的結果中查找是否有threadx這個程式運作的資訊。如果有的話,則會在視窗中顯示這個程式的信 息,而過濾掉其它應用程式的運作資訊。可見采用管道符跟其它查詢指令結合,可以幫助系統管理者在最短的時間内找到自己想了解的應用程式的資訊。

一些特殊符号結合還可以實作一些更加負責的功能。如跟cat指令結合使用可以統計出符合條件的程式數量。如在指令後面加入>符号,可以将輸出的結 果定位到一個檔案中。如跟通配符結合使用,可以查詢出滿足特定條件的一類程式。如還可以查詢出某個程式父程式或者其子程式的運作資訊等等。

作者:少帥

繼續閱讀