首頁 > linux教程 > Linux系統管理 閱讀:0更新時間:2020-03-28 01:04:22

Linux進程管理及作用

無論是 linux 系統管理員還是普通用戶,監視系統進程的運行情況并適時終止一些失控的進程,是每天的例行事務。和 Linux 系統相比,進程管理在 Windows 中更加直觀,它主要是使用"任務管理器"來進行進程管理的。

通常,使用"任務管理器"主要有 3 個目的:
  1. 利用"應用程序"和"進程"標簽來査看系統中到底運行了哪些程序和進程;
  2. 利用"性能"和"用戶"標簽來判斷服務器的健康狀態;
  3. 在"應用程序"和"進程"標簽中強制中止任務和進程;

Linux 中雖然使用命令進行進程管理,但是進程管理的主要目的是一樣的,即查看系統中運行的程序和進程、判斷服務器的健康狀態和強制中止不需要的進程。

那么,到底什么是進程呢?它和我們平時所說的“程序”又有什么聯系呢?

什么是進程和程序

進程是正在執行的一個程序或命令,每個進程都是一個運行的實體,都有自己的地址空間,并占用一定的系統資源。程序是人使用計算機語言編寫的可以實現特定目標或解決特定問題的代碼集合。

這么講很難理解,那我們換一種說法。程序是人使用計算機語言編寫的,可以實現一定功能,并且可以執行的代碼集合。而進程是正在執行中的程序。當程序被執行時,執行人的權限和屬性,以及程序的代碼都會被加載入內存,操作系統給這個進程分配一個 ID,稱為 PID(進程 ID)。

也就是說,在操作系統中,所有可以執行的程序與命令都會產生進程。只是有些程序和命令非常簡單,如 ls 命令、touch 命令等,它們在執行完后就會結束,相應的進程也就會終結,所以我們很難捕捉到這些進程。但是還有一些程和命令,比如 httpd 進程,啟動之后就會一直駐留在系統當中,我們把這樣的進程稱作常駐內存進程。

某些進程會產生一些新的進程,我們把這些進程稱作子進程,而把這個進程本身稱作父進程。比如,我們必須正常登錄到 shell 環境中才能執行系統命令,而 Linux 的標準 Shell 是 bash。我們在 bash 當中執行了 ls 命令,那么 bash 就是父進程,而 ls 命令是在 bash 進程中產生的進程,所以 ls 進程是 bash 進程的子進程。也就是說,子進程是依賴父進程而產生的,如果父進程不存在,那么子進程也不存在了。

進程管理的作用

在使用 Windows 系統的過程中,使用任務管理器,很大程度上是為了強制關閉“未反應”的軟件,也就是殺死進程。的確,這是很多使用進程管理工具或進程管理命令的人最常見的使用方法。不過,殺死進程(強制中止進程)只是進程管理工作中最不常用的手段,因為每個進程都有自己正確的結束方法,而殺死進程是在正常方法已經失效的情況下的后備手段。

那么,進程管理到底應該是做什么的呢?我以為,進程管理主要有以下 3 個作用。

1) 判斷服務器的健康狀態

運維工程師最主要的工作就是保證服務器安全、穩定地運行。理想的狀態是,在服務器出現問題,但是還沒有造成服務器宕機或停止服務時,就人為干預解決了問題。

進程管理最主要的工作就是判斷服務器當前運行是否健康,是否需要人為干預。如果服務器的 CPU 占用率、內存占用率過高,就需要人為介入解決問題了。這又出現了一個問題,我們發現服務器的 CPU 或內存占用率很高,該如何介入呢?是直接終止高負載的進程嗎?

當然不是,應該判斷這個進程是否是正常進程,如果是正常進程,則說明你的服務器已經不能滿足應用需求,你需要更好的硬件或搭建集群了;如果是非法進程占用了系統資源,則更不能直接中止進程,而要判斷非法進程的來源、作用和所在位置,從而把它徹底清除。

當然,如果服務器數量很少,我們完全可以人為通過進程管理命令來進行監控與干預,但如果服務器數量較多,那么人為手工監控就變得非常困難了,這時我們就需要相應的監控服務,如 cacti 或 nagios??傊?,進程管理工作中最重要的工作就是判斷服務器的健康狀 態,最理想的狀態是服務器宕機之前就解決問題,從而避免服務器的宕機。

2) 查看系統中所有的進程

我們需要查看看系統中所有正在運行的進程,通過這些進程可以判斷系統中運行了哪些服務、是否有非法服務在運行。

3) 殺死進程

這是進程管理中最不常用的手段。當需要停止服務時,會通過正確關閉命令來停止服務(如 apache 服務可以通過 service httpd stop 命令來關閉)。只有在正確終止進程的手段失效的情況下,才會考慮使用 kill 命令殺死進程。

其實,進程管理和 Windows 中任務管理器的作用非常類似,不過大家在使用任務管理器時是為了殺死進程,而不是為了判斷服務器的健康狀態。

beylze編程學院,一個分享編程知識和seo優化知識的網站。跟著beylze一起學習,每天都有進步。

通俗易懂,深入淺出,一篇文章只講一個知識點。

文章不深奧,不需要鉆研,在公交、在地鐵、在廁所都可以閱讀,隨時隨地漲姿勢。

文章不涉及代碼,不燒腦細胞,人人都可以學習。

當你決定關注beylze(公眾號:beylze),你已然超越了90%的其他從業者!

相關文章

優秀教程

国产亚洲欧美日韩