課程大綱 『
進程的概念
進程管理命令
計劃任務
』
進程和程式的區別
1、程式是靜態概念,本身作為一種軟體資源長期儲存;而進程是程式的執行過程,
它是動態概念,有一定的生命期,是動態產生和消亡的。
2、程式和進程無一一對應關係。一個程式可以由多個進程共用;另一方面,一個
進程在活動中有可順序地執行若干個程式。
父進程與子進程
1、子進程是由一個進程所產生的進程,產生這個子進程的進程稱為父進程。
2、在Linux系統中,使用系統調用fork建立進程。fork複製的內容包括父進程的
資料和堆棧段以及父進程的進程環境。
3、父進程終止子進程自然終止。
前台進程和後台進程
前台進程:
在Shell提示處打入命令後,建立一個子進程,運行命
令,Shell等待命令退出,然後返回到對使用者給出提示
符。這條命令與Shell非同步運行,即在前台運行,使用者在
它完成之前不能執行另一個命令。
後台進程: 【很好】
在Shell提示處打入命令,若後隨一個&,Shell建立的子
進程運行此命令,但不等待命令退出,而直接返回到對
使用者給出提示。這條命令與Shell同步運行,即在後台運
行。後台進程必須是非互動。
進程狀態
就緒: 進程已經分配到資源,但因為其它進程正佔用
CPU,所以暫時不能運行而等待分配CPU的狀態。
等待: 因等待某種事件而暫時不能啟動並執行狀態。
運行: 進程分配到CPU,正在處理器上運行。
進程狀態細化
使用者態運行 : 在CPU上執行使用者代碼
核心態運行 : 在CPU上執行核心代碼
在記憶體就緒 : 具備運行條件,只等發送器為它分配CPU
在記憶體睡眠 : 因等待某一事件的發生,而在記憶體中排隊等待
在外存就緒 : 就緒進程被交換到外存上繼續處於就緒狀態
在外存睡眠 : 睡眠進程被交換到外存上繼續等待
在記憶體暫停 : 因調用stop程式而進入跟蹤暫停狀態,等待其父進程發送命令。
在外存暫停 : 處於跟蹤暫停態的進程被交換到外存上
建立態 : 新進程正在被建立、但尚未完畢的中間狀態
終止態 : 進程終止自己
查看使用者資訊 w
w顯示資訊的含義
JCPU : 以終端代號來區分,該終端所有相關的進程執行時,所消耗的CPU時間會顯示在這裡
PCPU : CPU執行程式耗費的時間
WHAT : 使用者正在執行的操作查看個別使用者資訊:w 使用者名稱
查看使用者資訊 w
w顯示資訊的含義
load average: 分別顯示系統在過去1、5、15分鐘內的平均負載程度。
FROM: 顯示使用者從何處登入系統,“:0”的顯示代表該使用者時從X Window下,開啟文
本強制回應視窗登入的
IDLE: 使用者閑置的時間。這是一個計時器,一旦使用者執行任何操作,該計時器便會
被重設
hp@ubuntu:~$ w
22:02:45 up 22 min, 2 users, load average: 0.27, 0.27, 0.28
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
hp tty7 21:40 22:33 1:16 0.34s gnome-session -
hp pts/0 :0 22:02 0.00s 0.37s 0.01s w
:0 就是用 xwindow 登陸的。
查看系統中的進程 ps 常用選項
a : 顯示所有使用者的進程
u : 顯示使用者名稱和啟動時間
x : 顯示沒有控制終端的進程
e : 顯示所有進程,包括沒有控制終端的進程
l : 長格式顯示
w : 寬行顯示,可以使用多個w進行加寬顯示
ps常用輸出資訊的含義
TIME:進程自從啟動以來啟用CPU的總時間
COMMAND/CMD:進程的命令名
USER:使用者名稱
%CPU:佔用CPU時間和總時間的百分比
%MEM:佔用記憶體與系統記憶體總量的百分比
ps應用執行個體
# ps 查看隸屬於自己的進程
# ps -u or -l 查看隸屬於自己進程詳細資料
# ps -le or -aux 查看所有使用者執行的進程的詳細資料
# ps -aux --sort pid 可按進程執行的時間、
PID、UID等對進程進行排序
ps應用執行個體
# ps -aux | grep sam
# ps -uU sam 查看系統中指定使用者執行的進程
# ps -le | grep init 查看指定進程資訊
# pstree
kill – 殺死進程
*1 為什麼要殺死進程
*2 該進程佔用了過多的CPU時間
*3 該進程縮住了一個終端,使其他前台進程無法運行
*4 已耗用時間過長,但沒有預期效果
*5 產生了過多到螢幕或磁碟檔案的輸出
*6 無法正常退出
關閉進程:kill 進程號
*1 kill -9 進程號(強行關閉) kill -s 9 進程號 [前簡化]
*2 kill -1 進程號(重啟進程)
*3 關閉圖形程式:xkill
*4 結束所有進程:killall
*5 尋找服務進程號:pgrep 服務名稱
*6 關閉進程:pkill 進程名稱
啟動程式 stop , 也可以關閉
/etc/rc.d/init.d/httpd restart
--------------------------------
# cat/proc/cpuinfo
# pgrep httpd 檢測但它所有進程的 pid
# pkill httpd 也可以關閉,很方便
nice和renice
nice
指定程式的運行優先順序
格式:nice -n command
例如:nice -5 myprogram
renice
改變一個正在啟動並執行進程的優先順序
格式:renice n pid
例如:renice -5 777
*優先順序取值範圍為(-20,19)*
nohup
使進程在使用者退出登陸後仍舊繼續執行,nohup命令將執行後的資料資訊和
錯誤資訊預設儲存到檔案nohup.out中
格式: nohup program &
進程的掛起和恢複
進程的中止(掛起)和終止
掛起(Ctrl+Z) [類似差不多暫停]
終止(Ctrl+C)
進程的恢複
恢複到前台繼續運行(fg)
恢複到後台繼續運行(bg)
查看被掛起 /背景進程(jobs)
top
作用:進程狀態顯示和進程式控制制,每5秒鐘自動重新整理一次(動態顯示)
常用選項:
d : 指定重新整理的時間間隔
c : 顯示整個命令列而不僅僅顯示命令名
top常用命令:
u : 查看指定使用者的進程
k : 終止執行中的進程
h or ?:獲得協助
r : 重新設定進程優先順序
s : 改變重新整理的時間間隔
W : 將當前設定寫入~/.toprc檔案中
計劃任務
#1 為什麼要設定計劃任務
#2 計劃任務的命令 {
*1 at 安排作業在某一時刻執行一次
*2 batch 安排作業在系統負載不重時執行一次
*3 cron 安排周期性啟動並執行作業
}
at命令的功能和格式
功能:安排一個或多個命令在指定的時間運行一次
at的命令格式及參數
at [-f 檔案名稱] 時間
at -d or atrm 刪除隊列中的任務
at -l or atq 查看隊列中的任務
伺服器一般 02:00 ~ 04:00 不那麼繁忙!
進程處理方式
standalone 獨立運行
xinetd 進程託管
atd、crond 計劃任務