進程:已啓動的可執行程序的運行實例,即運行的程序。
進程與程序的關係:
程序: 靜止的代碼
程序: 當程序開始被運行(執行)的時候,具有動態、生命週期以及運行狀態。
進程生命週期
父進程通過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關於服務管理的命令差異比較大。