linux 基礎12-程式與資源管理
阿新 • • 發佈:2018-12-03
1、基礎概念
2、作業管理
3、程序管理
1. 基礎概念
- 可執行的二進位制檔案就是程式
- 執行程式的時候因觸發事件而獲取的ID,稱為PID
- 在登入並執行bash時,系統依據登入者的UID/GID給登入者一個PID/GPID/SID等
- 啟動程式時,根據啟動這個程式的使用者和相關屬性關係,給這個PID一組有效的全線設定。每個程式都有三組許可權,每組都具有r/w/r的許可權,所以:不同的使用者身份執行某個程式時,系統給予的許可權也都不同。
- 子程式與父程式:我們登入系統後,會取得一個bash shell的PID,我們可以用bash提供的介面去執行另一個程式,那些另外執行的程式也會獲得一個PID,這個PID就是子程式,而在我們的bash環境,就稱為父程式。
- 常駐在記憶體的程式有哪些:
- ls、touch、rm等執行完就退出記憶體了
- 系統或者網路服務crond atd,syslog,Apache,named,vsftpd等是常駐記憶體的。
2. 作業管理
- 登入系統取得bash shell之後,在單一終端介面下,同時管理多個作業。
- 要進行bash的作業管理,需要注意到的限制是
- 程式必須是shell的子程式
- 程式不能等待terminal/shell的輸入
2.1 &:
- 直接將命令放到後臺中“執行”的&:
- 前臺:使用者可以控制的作業就是前臺錯也
- 後臺:在記憶體可以自行執行的作業,使用者無法直接控制他,除非用bg/fg等指令來將該作業調用出來
- 如果前臺執行的話,程式在結束之前不能進行其他的操作
- 程式在後臺執行則可以同時進行其他命令比如:ls等
tar -zcf etc.tar.gz /etc >log.txt 2>&1 &
2.2 [ctrl] -z:
- 把程式從前臺暫停到後臺,
2.3 jobs:
jobs #等效於jobs -s
jobs -l #還會小時程序號
jobs -r #顯示正在執行的
2.4 fg:
fg %+ #預設呼叫+的作業
fg %%
fg %1 #執行作業號為1的作業
2.5 bg:
讓後臺暫停的作業在後臺記憶體中執行
find /-perm -4000
然後暫停它
jobs
bg %之前暫停作業的作業號
2.6 kill:
- 使用kill -l
- 使用kill -9 程序號或者作業號,對應的.swp檔案不會刪除
使用kill -15 程序號或者作業號,對應的.swp檔案不會刪除
kill -9 %3
3. 程序管理
- 為什麼程序管理這麼重要
- 如果linux系統很繁忙,當整個系統資源快被耗盡的時候,我們應該找出最耗系統的那個程序,然後刪除該程序或者降低它的執行許可權,讓系統恢復正常
- 如果某個程式僵死,導致程式一直在記憶體當中,我們應該將其找到並殺死
- 如果系統中同時又五六項作業在執行,但是其中有一項作業非常重要,那麼,如何讓這項重要的工作被最優先執行呢
3.1 程序的觀察ps、top、pstree:
- ps靜態的檢視程序
- top動態的檢視程序
- pstree來查閱程式之間的關係
- F是標誌的意思,4表示root使用者
- S是state狀態的意思,S表示sleeping,R表示running,T表示停止的意思,Z表示zombie僵死了。
- PPID是程序的副程序
- C所佔的cpu的百分比
- PRI是priority優先順序的意思
- NI是nice謙讓值的意思
- ADDR程序所在的位置,如果在執行就顯示-號
- SZ表示程序所佔用的記憶體大小
- WATCH表示執行的狀態,-號代表正在執行,wait代表正在等待
- TTY代表登入狀態,
- CMD,是command的縮寫
- VSZ,虛擬記憶體佔用大小
- RSS,所佔用記憶體頁數
ps aux | head
ps -axjf #顯示樹狀結構
ps -lA | cat -n
ps -aux | cat -n
ps -le | cat -n
- load average 分別表示1分鐘,5分鐘,15分鐘的負載
- Men、Swap:物理、虛擬記憶體使用
- Cpu:us、sy、ni、id、wa、hi、si、st分別為使用者佔用、系統佔用、nice佔用、id空閒佔用、wa等待輸入輸出佔用、hi硬體中斷佔用、si軟中斷佔用
3.2 killall:
service httpd start
kill -9 'ps aux| grep httpd| grep -v 'grep'| awk '{print $2}''#用kill命令殺死httpd挺麻煩的。
killall -9 httpd
3.3 系統資源的觀察:free、uname、dmesg、sar:
3.4 netstat、:
netstat | nl
netstat | head