linux 進程管理

Linux進程管理

序:

主要學習任務:

判斷服務器健康狀態

查看運行進程

強行終止進程

        

進程和程序的區別

         一動一靜,對應關係-多對多

父進程與子進程

         老子管兒子,殭屍和孤兒.

前臺進程和後臺進程

 

         前臺進程

                  例:ping 127.0.0.1 >>ping.result

         Shell提示處打投入命令後,創建一個子進程,運行命令,Shell等待它的

         結束,然後才能返回給用戶提示符。這條命令在前臺運行,用戶在它完成

         之前不能執行另一個命令。

        

         後臺進程

                  例:ping 127.0.0.1 >>ping.result &  將結果保存到ping.result文件

         Shell提示處打入一個命令,若後隨一個&Shell創建子進程運行此命令,

         但不等待命令退出,而是直接返回到對用戶給出提示。

         後臺進程必須是非交互式的。

         擴展:

                  watch -n 1 ls -l

         監聽某個命令執行效果,-n時間刷新頻露1s

 

一、進程常用命令

1w

         09:49:34 up 4 min,  2 users, load average: 0.42, 0.81, 0.38

         服務器時間開機時長  登錄用戶數  平均負載:1515分鐘(一般0.8以下,說明較輕)

         USER         登錄用戶名

         TTY           在哪登錄     :0表示XWindow登錄

         FROM       來自哪裏         :0.0 表示來自於XWindow    - 表示本地命令行登錄

         LOGIN@  什麼時候登錄的

         IDLE         空閒時間

         JCPU         該終端消耗的CPU時間

         PCPU        正在執行程序消耗的時間

         WHAT       正在做什麼

2who    簡單查看登陸者信息

 

3ps查看進程信息  (process status)

         -a      顯示終端下的進程(不含其他用戶)

         -u      顯示用戶和啓動時間

         -x      表示沒有控制終端的進程

         -e      顯示所有進程,包括沒有控制終端的進程

         -l       長格式顯示

        

         應用實例

         ps     顯示當前用戶自己的進程

         ps-l  查看隸屬於自己的進程詳細信息

         ps  uU 用戶名  查看系統中指定用戶執行的進程

         ps -le  aux         查看所有用戶執行的進程詳細信息   用得很多 aux可以查看到apache進程是哪個用戶

                  通常結合grep使用     ps -le | grep httpd  查看apache進程是否啓動

                  /etc/rc.d/init.d/httpd status   通過啓動腳本,也能查看進程是否已啓動

ps -le --sortpid                  可按pid排序

         ps–aux | grep jack  查看jack用戶的進程

         pstree| more 樹狀結構顯示進程

 

常見選項的含義

PID            進程號 (process id)       1init 系統第一個進程

         PPID                   父進程的進程號(parent process id)

         TTY           啓動的終端     tty1-7本地      1-6字符 7圖形      pts/n遠程

         STAT         進程當前狀態:  S休眠 D不可中斷的休眠  R運行  Z僵死  T停止

         NI              進程優先級

         TIME         進程自啓動以來佔用CPU的總時間

         COM/COMMAND    進程的命令名

         USER         用戶名  (ps -uU 用戶名)

         %CPU       佔用CPU時間和總時間的百分比

         %MEM     佔用內存與系統內存的百分比

         start                  進程觸發時間

         time         佔用cpu時間

         command         進程本身

 

4kill       殺死一個進程

         爲什麼要殺死進程?

  1. 該進程佔用了過多的CPU時間

  2. 該進程鎖住的一個終端,使其它前臺進程無法運行

  3. 運行時間過長,但沒有預期的效果 

  4. 產生了過多的到屏幕或磁盤文件輸出 例如find / -name "*"

  5. 無法正常退出

 

關閉進程         kill 進程號(PID)

         apachehttpd有很多個,我們關閉了父進程,子進程將自動關閉

         或調用/etc/rc.d/init.d/httpd stop

kill的信號        kill -l可以列出

kill -9 進程號 (強行關閉)

                  kill -1 進程號 (重啓進程)

                  也可以調用/etc/rc.d/init.d/httpd restart重啓apache進程

         關閉圖形程序         xkill  鼠標按哪兒,將關閉哪兒 點右鍵取消

         結束所有同名進程         killall -9進程名稱 (killall httpd)

 

5、以p開頭的命令

pgrep httpd 查看httpd進程的所有pid

重啓apache進程:kill -1 `pgrep httpd`

pkill httpd 直接關閉httpd進程,不用查pid

pkill  -9 -t 終端號  踢出登錄用戶

 

6、優先級命令

nice

     指定程序進行的優先級

     格式nice n myprogram

     nice --5 /etc/rc.d/init.d/httpd start  (默認是0,指定爲-5)

     ps -le | grep httpd        # NI進程優先級

 

renice

     改變一個正在進行的進程的優先級

     renice n pid

優先級取值範圍爲(-20,19)默認是值越小,權越大

ps -le 中,NI就是優先級

 

7、前後臺進程操作

         一個符號:

把進程放到後臺運行在後面加 &

         ping 127.0.0.1>>/test/ping.result &

         另一個終端去查看:

         tail -f/test/ping.result

兩個操作:

進程的掛起和終止

         掛起         ctrl+z        暫停          # ping 127.0.0.1 然後按ctrl+z              此時進程未終止,在後臺停止

         終止         ctrl+c                                   # ping 127.0.0.1 然後按ctrl+c              進程終止,釋放資源

三個命令:

查看被掛起或在後臺執行的進程

         jobs                   

進程的恢復

         fg [序號]           恢復到前繼續運行

         bg[序號]           恢復到後臺繼續運行  

若不加序號,則默認將命令作用於+修飾的進程

 

8top命令

         上面的信息,類似於w顯示的信息

         第一行:系統當前時間    系統持續時間    登錄用戶    1,5,15分鐘之前的平均負載

    第二行:進程總數

    第三行:CPU佔用率        %id    空閒百分比

    第四行:內存使用:   總共    使用    空閒    緩存

    第五行:swap使用

 

         下面類似於ps –le信息

         內置命令d 然後輸入5,將改爲每5秒刷新一次

         內置命令c 顯示整個命令行,而不僅僅顯示命令名   command

         u用戶名         只顯示某用戶的信息,管理員可以查看某個用戶在做什麼,

         k                         提示輸入pid 關閉進程

                                    可以在u查看某個用戶時,kill掉用戶的bash進程,

將用戶踢下線,提示輸入 kill的信號,例如9強制關閉

         r                          調優先級

         M                       內存排序

         P                         CPU排序

         q                         退出

         hor ?                 幫助信息

 

9free –m      查看內存狀態

 

10、查看proc文件下信息

         ls/proc    

         該目錄存放的是進程信息,數字是以pid爲目錄名,信息存放在目錄中

         cat/proc/cpuinfo 查看cpu信息

         cat/proc/meminfo 內存信息

         cat/proc/partitions 分區信息

 

 

三、進程分類

         1、分類

 

         standalone       獨立運行

         xinetd                進程託管

         atdcrond      計劃任務

        

         standalone       獨立運行

                  apachemysql的服務,啓動後,進程會一直在系統中,

                  佔用CPU和內存資源,等待或處理客戶端的請求

                  佔用系統資源多,但響應速度快

        

         xinetd       進程託管         (需要獨立安裝yum     -y      install       xinetd

                  有些服務,用得很少,沒必要獨立運行例如telnet服務

                  ls /etc/xinetd.d 查看這個目錄中有很多腳本

                  服務不啓動,由xinetd監聽這個端口,有客戶端訪問,則啓動進程,等服務完成後,結束進程

                  響應速度慢一點,但減少了系統資源佔用

 

         atdcrond      計劃任務

                  每隔一分鐘,從休眠中醒來一次,所以,計劃任務不能精確到秒。

 

 

 

2、管理

#chkconfig  --list

        運行級別:0-6

                0   關機

                1   單用戶模式

                2   不完全多用戶,不包含NFS服務

                3   完全多用戶   字符界面

                4   未分配

                5   圖形界面

                6   重啓

 

                init  0關機    init5  startx init 3

                init  6重啓

 

        runlevel            查詢系統當前運行級別

 

                vi  /etc/inittab

                id:3:initdefault:       定義系統默認運行級別

 

列出在每一種運行級別下服務是啓動還是關閉

chkconfig  --list | grep atd  查看計劃任務服務

 

3、啓動服務

        

         RPM包安裝的服務:

        

         service   服務名   start|stop|restart|status

                  service network start

         能被service命令識別是因爲,在/etc/rc.d/init.d/下有服務執行腳本

         /etc/rc.d/init.d/服務名   start|stop|restart|status

                  /etc/rc.d/init.d/httpd  start

        

         設置開機自啓動

         vi /etc/rc.local                                  ---->/etc/rc.d/rc.local

                  /etc/rc.d/init.d/httpd  start

         ntsysv  setup中會調用此工具)

                           所有系統默認安裝服務都可以使用ntsysv命令進行自啓動管理

 

         源碼包安裝的服務:

 

         絕對路徑啓動

                           /usr/local/apache2/bin/apachectl  start

 

         開機自啓動

                           vi/etc/rc.local

                           寫入啓動命令

                           /usr/local/apache2/bin/apachectl  start

                                                                                                   


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章