《Linux 七》 進程管理

課程大綱 『
 進程的概念
 進程管理命令
 計劃任務

進程和程序的區別
 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 計劃任務
分享到: 
發佈了62 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章