進程的概念
進程管理命令
計劃任務
』
進程和程序的區別
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 計劃任務
分享到: