1. 程式人生 > >linux學習筆記--程序與進程管理

linux學習筆記--程序與進程管理

ref monitor vim 子進程 free task 排序 image ctrl

、工作管理

1、前臺程序放後臺程序 命令後 加 &

技術分享

2、任務執行時將前臺任務任務放到後臺中並【暫停】 ctr + z

3、jobs 觀察後臺工作狀態 及多少任務在執行,可以通過 help jobs查看jobs選項

  [[email protected] ~]# jobs [-lrs]
  參數:
  -l :除了列出 job number 之外,同時列出 PID
  -r :僅列出正在背景 run 的工作;
  -s :僅列出正在背景當中暫停 (stop) 的工作。
  範例:
  範例一:觀察目前的 bash 當中,所有的工作,與對應的 PID
  [[email protected]

/* */ ~]# jobs -l
  [1]+ 24988 Stopped /usr/bin/vim ~/.bashrc
  [2]- 25006 Stopped /usr/bin/vim ~/.bash_history

4、後臺工作放前臺 fg + %number

技術分享

5、前臺工作放後臺後暫停,讓後臺工作重新運行 bg %number

技術分享

6、管理後臺程序 kill

[[email protected] ~]# kill -signal %jobnumber
[[email protected] ~]# kill -l
參數:
-l :這個是 L 的小寫,列出目前 kill 能夠使用的訊號 (signal) 有哪些?


signal :代表給予後面接的那個工作什麽樣的指示啰!用 man 7 signal 可知:
-1 :重新讀取一次參數的設定檔 (類似 reload);
-2 :代表與由鍵盤輸入 [ctrl]-c 同樣的動作;
-9 :立刻強制刪除一個工作;
-15:以正常的程序方式終止一項工作。與 -9 是不一樣的。
範例:
範例一:找出目前的 bash 環境下的背景工作,並將該工作刪除。
[[email protected] ~]# jobs
[1]+ Stopped vim bashrc
[[email protected] ~]# kill -9 %1
[1]+ 已砍掉 vim bashrc

範例:找出目前的 bash 環境下的背景工作,並將該工作終止掉。
[[email protected] ~]# jobs
[1]+ Stopped vim bashrc
[[email protected] ~]# kill -SIGTERM %1
[1]+ 終止 vim bashrc
# -SIGTERM 與 -15 是一樣的!您可以使用 kill -l 來查閱!

網頁給出殺死進程的多種方法:http://blog.csdn.net/andy572633/article/details/7211546

關於信號的信息可以參考網頁:http://www.xuejiehome.com/blread-1596.html

2、 程序觀察

靜態ps以及動態top來觀察程序的運行,以及使用pstree來查看程序之間的聯系

了解ps的使用,可以使用info ps來具體查看ps的信息

ps 的參數有

[[email protected] ~]# ps aux
[[email protected] ~]# ps -lA
[[email protected] ~]# ps axjf
參數:
-A :所有的 process 均顯示出來,與 -e 具有同樣的效用;
-a :不與 terminal 有關的所有 process ;
-u :有效使用者 (effective user) 相關的 process ;
x :通常與 a 這個參數一起使用,可列出較完整信息。
輸出格式規劃:
l :較長、較詳細的將該 PID 的的信息列出;
j :工作的格式 (jobs format)
-f :做一個更為完整的輸出。
特別說明:
由於 ps 能夠支持的 OS 類型相當的多,所以他的參數多的離譜!
而且有沒有加上 - 差很多!詳細的用法應該要參考 man ps 喔!

常用的操作ps有 ps aux

範例二:列出目前所有的正在內存當中的程序:
[[email protected] ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 1740 540 ? S Jul25 0:01 init [3]
root 2 0.0 0.0 0 0 ? SN Jul25 0:00 [ksoftirqd/0]

我們必須要知道的是『疆屍 (zombie) 』程序是什麽? 通常,造成疆屍程序的成因是因為該程序應該已經執行完畢,或者是因故應該要終止了, 但是該程序的父程序卻無法完整的將該程序結束掉,而造成那個程序一直存在內存當中..... 如果您發現在某個程序的 CMD 後面還接上 <defunct> 時,就代表該程序是疆屍程序啦

top

top 也是個挺不錯的程序觀察工具!但不同於 ps 是靜態的結果輸出, top 這個程序可以持續的監測 (monitor) 整個系統的程序工作狀態,例如上面的範例一所示啊! 在預設的情況下,每次更新程序資源的時間為 5 秒,不過,可以使用 -d 來進行修改。

[[email protected] ~]# top [-d] | top [-bnp]
參數:
-d :後面可以接秒數,就是整個程序畫面更新的秒數。預設是 5 秒;
-b :以批次的方式執行 top ,還有更多的參數可以使用喔!
通常會搭配數據流重導向來將批次的結果輸出成為檔案。
-n :與 -b 搭配,意義是,需要進行幾次 top 的輸出結果。
-p :指定某些個 PID 來進行觀察監測而已。
在 top 執行過程當中可以使用的按鍵指令:
? :顯示在 top 當中可以輸入的按鍵指令;
P :以 CPU 的使用資源排序顯示;
M :以 Memory 的使用資源排序顯示;
N :以 PID 來排序喔!
T :由該 Process 使用的 CPU 時間累積 (TIME+) 排序。
k :給予某個 PID 一個訊號 (signal)
r :給予某個 PID 重新制訂一個 nice 值。
範例:
範例一:每兩秒鐘更新一次 top ,觀察整體信息:
[[email protected] ~]# top -d 2

top - 18:30:36 up 30 days, 7 min, 1 user, load average: 0.42, 0.48, 0.45
Tasks: 163 total, 1 running, 161 sleeping, 1 stopped, 0 zombie
Cpu(s): 4.7% us, 4.0% sy, 6.3% ni, 82.5% id, 0.4% wa, 0.1% hi, 2.0% si
Mem: 1033592k total, 955252k used, 78340k free, 208648k buffers
Swap: 1052216k total, 728k used, 1051488k free, 360248k cached
<==如果加入 k 或 r 時,就會有相關的字樣出現在這裏喔!
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3981 apache 34 19 84012 11m 7352 S 17.3 1.2 0:00.09 httpd
1454 mysql 16 0 289m 40m 2228 S 3.8 4.0 115:01.32 mysqld
3985 dmtsai 15 0 2148 904 668 R 3.8 0.1 0:00.03 top
1 root 16 0 3552 552 472 S 0.0 0.1 0:08.90 init
2 root RT 0 0 0 0 S 0.0 0.0 0:52.76 migration/0
3 root 34 19 0 0 0 S 0.0 0.0 0:03.01 ksoftirqd/0

kill 後面接%jobnumber或者後面直接接pid 殺死某一個進程

kill all 將下達指令的名稱的進程殺死

killall -9 httpd #將以httpd命名的進程殺死

free [-b|-k|-m|-g] [-t] #顯示系統的版本內核等信息
參數:
-b :直接輸入 free 時,顯示的單位是 Kbytes,我們可以使用 b(bytes), m(Mbytes)
k(Kbytes), 及 g(Gbytes) 來顯示單位喔!
-t :在輸出的最終結果,顯示物理內存與 swap 的總量。

uname [-asrmpi] #顯示系統版本信息
參數:
-a :所有系統相關的信息;
-s :系統核心名稱
-r :核心的版本
-m :本系統的硬件名稱
-p :CPU 的類型
-i :硬件的平臺 (ix86)

uptime #就是顯示出目前系統已經開機多久的時間

sar [-ru] [秒數] [次數] #主動偵測主機資源的使用情況
參數:
-u :進行 CPU 資源的統計;
-r :進行主存儲器目前狀態的分析

3、關於程序的順序執行利用ps -l可以查看當前環境進程信息,為了是使得各程序的運行合理,系統為每個進程都分配優先級,用戶可以通過nice這個參數為某個進程調整優先級,

nice影想程序的優先級,PRI(new) = PRI(old) + nice,數字越小代表優先級越高。

? 一般使用者的 nice 值為 0 ~ 19 ;
? root 可用的 nice 值為 -20 ~ 19 ;

  一開始執行程序就立即給予一個特定的 nice 值:用 nice 指令;
調整某個已經存在的 PID 的 nice 值:用 renice 指令。

nice [-n] command #調用nice函數

整個nice的操作是在父子進程之間進行傳遞的,父進程的nice改變,相應的子進程的nice值也發生改變。

linux學習筆記--程序與進程管理