Linux——進程管理

進程:已啓動的可執行程序的運行實例,即運行的程序。
進程與程序的關係:
程序: 靜止的代碼
程序: 當程序開始被運行(執行)的時候,具有動態、生命週期以及運行狀態。

進程生命週期

在這裏插入圖片描述
父進程通過fork()函數可以創建一個子進程,並分配一個新的進程ID號,此時整個的父進程的地址空間是沒有被複制,父子進程共享相同的地址空間,exec()函數複製新的程序到子進程的地址空間,內存會分配新的物理內存頁給子進程,當程序已經執行完成,子進程通過調用exit()系統調用終止。exit()系統調用釋放進程大部分的數據並通過發送一個信號通知其父進程。此時,子進程是一個被叫作殭屍進程的進程。

進程狀態

在這裏插入圖片描述

運行狀態

此狀態具有進程正在運行進程處於就緒狀態兩種情況,就緒狀態的進程處於預備運行的狀態,在等待系統按照時間片輪轉規則將CPU分配給他,得到CPU後就會投入運行。

等待狀態

進程正在等待某個事件發生或等待某種資源,該狀態分爲兩類:可中斷的睡眠狀態不可中斷的睡眠狀態。處於可中斷的等待狀態進程,既可以被信號中斷,也可以由於資源就緒而被喚醒進入運行狀態;而不可中斷等待狀態只能用wake_up()函數喚醒。

暫停狀態

當進程收到信號SIGSTOP、SIGTSTP、SIGTTIN或SIGTTOU時就會進入暫停狀態。可向其發送SIGCONT信號讓進程轉換到可運行狀態。

僵死狀態

子進程退出時,父進程並未對其發出的SIGCHLD信號進行適當處理,導致子進程停留在僵死狀態等待其父進程爲其收屍,這個狀態下的子進程就是僵死進程。

  • ps [參數](功能描述:永遠顯示當前進程的狀態)
     				常用參數:
     							-a: 顯示當前終端的所有進程信息
     							-u: 以用戶的格式顯示進程信息
     							-x: 顯示後臺進程運行的參數
     							-e: 顯示所有進程
     							-f: 全格式
    

在這裏插入圖片描述
在這裏插入圖片描述

  • kill [選項] 進程號(功能描述:通過進程號殺死進程)
     				常用選項 :
     							-9: 強迫進程立即停止
    

在這裏插入圖片描述

  • killall 進程名稱(功能描述:通過進程名稱殺死進程,也支持通配符,在系統因負載過大而變得很慢時很有用)
    

在這裏插入圖片描述

  • pstree [選項](功能描述:所有進程以樹狀圖顯示)
     						常用選項:
     									-p: 顯示進程的PID
     									-u: 顯示進程的所屬用戶
    

在這裏插入圖片描述

服務(Service)管理

服務本質就是進程,但是時運行在後臺的,通常都會監聽某個端口,等待其他程序的請求,比如mysql、sshd、防火牆等,這樣的進程又稱爲守護進程。

查看服務名:

1.使用 setup 查看系統服務名稱
在這裏插入圖片描述
在這裏插入圖片描述
2./etc/init.d文件中查看服務名稱
在這裏插入圖片描述centos7系統服務管理
在這裏插入圖片描述
CentOS7與CentOS6關於服務管理的命令差異比較大。

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