進程管理

1、進程的基本介紹

1)、在Linux中,每個執(zhí)行的程序(代碼)都稱為一個進程。每一個進程都分配一個ID號。
2)、每一個進程,都會對應一個父進程,而這個父進程可以復制多個子進程。例如www服務器。
3)、每個進程都可能以兩種方式存在的。前臺與后臺,所謂前臺進程就是用戶目前的屏幕上可以進行操作的。后臺進程則是實際在操作,但由于屏幕上無法看到的進程,通常使用后臺方式執(zhí)行。
4)、一般系統(tǒng)的服務都是以后臺進程的方式存在,而且都會常駐在系統(tǒng)中,直到關機才結束。

2、顯示系統(tǒng)執(zhí)行的進程

2.1、說明

  • 基本指令
    查看進程使用的指令是:ps,一般來說,使用的參數(shù)是ps -aux
  • ps顯示的信息選項
字段 說明
PID 進程識別號
TTY 終端機號
TIME 此進程所消CPU時間
CMD 正在執(zhí)行的命令或進程名
  • 常用選項
    ps -a:顯示當前終端的所有進程信息
    ps -u:以用戶的格式顯示進程信息
    ps -x:顯示后臺進程運行的參數(shù)

2.2、ps指令詳解

1)、指令:
ps -aux | grep xxx
比如:我看看有沒有sshd服務。

2)、指令說明

  • System V 展示風格
  • USER:用戶名稱
  • PID :進程號
  • %CPU :進程占用cpu的百分比
  • %MEM:進程占用物理內存的百分比
  • VSZ:進程占用的虛擬內存大小(單位:KB)
  • RSS:進程占用的物理內存大?。▎挝唬篕B)
  • TT:終端名稱,縮寫
  • STAT:進程狀態(tài),其中S-睡眠,s-表示該進程是會話的先導進程,N-表示進程擁有比普通優(yōu)先級更低的優(yōu)先級,R-正在運行,D-短期等待,Z-僵死進程,T-被跟蹤或者被停止等等。
  • STARTED:進程的啟動時間
  • TIME:CPU時間,即進程使用CPU的總時間
  • COMMAND:啟動進程所用的命令和參數(shù),如果過長會被截斷顯示。

2.3、應用實例

要求:以全格式顯示當前所有的進程,查看進程的父進程。

  • (1)ps -ef:是以全格式顯示當前所有進程
    說明
    -e:顯示所有進程
    -f:全格式

  • (2)ps -ef | grep xxx:查看指定指令的父進程
    說明
    是BSD風格
    UID:用戶ID
    PID:進程ID
    PPID:父進程ID
    C:CPU用于計算執(zhí)行優(yōu)先級的因子。數(shù)值越大,表明進程是CPU密集型運算,執(zhí)行優(yōu)先級會降低;數(shù)值越小,表明進程是I/O密集型運算,執(zhí)行優(yōu)先級會提高。
    STIME:進程啟動的時間
    TTY:完整的終端名稱
    TIME:CPU時間
    CMD:啟動進程所用的命令和參數(shù)
    思考題:如果我們希望查看sshd進程的父進程號是多少,應該怎樣查詢?
    ps -ef | grep sshd

3、終止進程killkillall

3.1、介紹

若是某個進程執(zhí)行一半需要停止時,或是已消了很大的系統(tǒng)資源時,此時可以考慮停止該進程。使用kill命令來完成此項任務。

3.2、基本語法

指令1:kill [選項] 進程號
功能描述:通過進程號殺死進程
指令2:killall 進程名稱
功能描述:通過進程名稱殺死進程,也支持通配符,這在系統(tǒng)因負載過大而變得很慢時很有用。

3.3、常用選項

-9:表示強迫進程立即停止

3.4、最佳實踐

案例1:踢掉某個非法登錄用戶


案例2:終止遠程登錄服務sshd,在適當時候再次重啟sshd服務。


案例3:終止多個gedit編輯器【killall,通過進程名來終止進程】
指令:killall gedit

案例4:強制殺掉一個終端


4、查看進程樹pstree

4.1、基本語法

指令:pstree [選項]
可以更加直觀的來看進程信息

4.2、常用選項

  • -p:顯示進程的PID
  • -u:顯示進程的所屬用戶

4.3、應用實例

案例1:請你樹狀的形式顯示進程的pid。
指令:pstree -p

案例2:請你樹狀的形式進程的用戶id。
指令:pstree -u

5、服務(Service)管理

5.1、介紹

服務(service)本質就是進程,但是是運行在后臺的,通常都會監(jiān)聽某個端口,等待其他程序的請求,比如(mysql,sshd,防火墻等),因此我們又稱為守護進程,是linux中非常重要的知識點。原理圖如下:

5.2、service管理指令:

service 服務名 [start|stop|restart|reload|status]
在CentOS7.0后,不再使用service,而是systemctl.

5.3、使用案例

1)、查看當前防火墻的狀況,關閉防火墻和重啟防火墻。


5.4、細節(jié)討論

1)、關閉或者啟用防火墻后,立即生效。
telnet 測試ip 端口

2)、這種方式只是臨時生效,當重啟系統(tǒng)后,還是回歸以前對服務的設置。
如果希望設置某個服務自啟動或關閉永久生效,要使用chkconfig指令。

5.5、查看服務名

方式1:使用setup->系統(tǒng)服務 就可以看到。


方式2:/etc/init.d/服務名稱
ls -l /etc/init.d/:列出系統(tǒng)有哪些服務

5.6、服務的運行級別

查看或者修改默認級別:vi /etc/inittab
Linux系統(tǒng)有7種運行級別(runlevel):常用的是級別3和5.

  • 運行級別0:系統(tǒng)停機狀態(tài),系統(tǒng)默認運行級別不能設為0,否則不能正常啟動。
  • 運行級別1:單用戶工作狀態(tài),root權限,用于系統(tǒng)維護,禁止遠程登陸。
  • 運行級別2:多用戶狀態(tài)(沒有NFS),不支持網絡。
  • 運行級別3:完全的多用戶狀態(tài)(有NFS),登陸后進入控制臺命令行模式
  • 運行級別4:系統(tǒng)未使用,保留
  • 運行級別5:x11控制臺,登陸后進入圖形GUI模式
  • 運行級別6:系統(tǒng)正常關閉并重啟,默認運行級別不能設為6,否則不能正常啟動。

5.7、開機的流程說明

開機流程

5.8、chkconfig指令

  • 介紹
    通過chkconfig命令可以給每個服務的各個運行級別設置自啟動/關閉
  • 基本語法
    查看服務各個運行級別設置自啟動/關閉
    1)、chkconfig --list
    2)、chkconfig --list | grep xxx
    3)、chkconfig 服務名 --list
    4)、chkconfig --level 5 服務名 on/off
    比如:請將sshd服務在運行級別為5的情況下,不要自啟動。
    chkconfig --level 5 sshd off

5.9、應用實例

1)、案例1:請顯示當前系統(tǒng)所有服務的各個運行級別的運行狀態(tài)。
chkconfig --list
2)、案例2:請查看sshd服務的運行狀態(tài)
service sshd status
3)、案例3:將sshd服務在運行級別5下設置為不自動啟動,看看有什么效果?
chkconfig --level 5 sshd off
4)、案例4:當運行級別為5時,關閉防火墻。
chkconfig --level 5 iptables off
5)、案例5:在所有運行級別下,關閉防火墻。
chkconfig iptables off
6)、案例6:在所有運行級別下,開啟防火墻。
chkconfig iptables on

5.10、使用細節(jié)

1)、chkconfig重新設置服務后自啟動或關閉,需要重啟機器reboot才能生效。

6、動態(tài)監(jiān)控進程

6.1、介紹

top與ps命令很相似。他們都用來顯示正在執(zhí)行的進程。top與ps最大的不同之處,在于top在執(zhí)行一段時間可以更新正在運行的進程。

6.2、基本語法

top [選項]

6.3、選項說明

選項 功能
-d 秒數(shù) 指定top命令每隔幾秒更新,默認是3秒在top命令的交互模式當中可以執(zhí)行的命令
-i 使top不顯示任何閑置或者僵死進程
-p 通過指定監(jiān)控進程ID來僅僅監(jiān)控某個進程的狀態(tài)

交互操作說明

操作 功能
P 以cpu使用率排序,默認就是此項
M 以內存的使用率排序
N 以PID排序
q 退出top

6.4、應用實例

案例1:監(jiān)視特定用戶
top:輸入此命令,按回車鍵,查看執(zhí)行的進程
u:然后輸入“u”回車,再輸入用戶名,即可。

案例2:終止指定的進程
top:輸入此命令,按回車鍵,查看執(zhí)行的進程。
k:然后輸入“k”回車,再輸入要結束的進程的ID號。

案例3:指定系統(tǒng)狀態(tài)更新的時間(每隔1o秒自動更新,默認是3秒)
top -d 10

6.5、查看系統(tǒng)網絡情況netstat(重要)

  • 基本語法
    netstat [選項]
    netstat -anp

  • 選項說明
    -an:按一定順序排列輸出
    -p:顯示哪個進程在調用

  • 應用案例
    案例1:查看系統(tǒng)所有的網絡服務
    netstat -anp | more

案例2:請查看服務名為sshd的服務的信息。
netstat -anp | grep sshd

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容