很多人對Linux進程和程序是什么,以及Linux進程管理的作用有哪些并不清楚。實際上,進程是計算機上某個數據集上程序的運行活動。它是系統進行資源分配和調度的基本單元,并且是操作系統結構的基礎。它的執行需要系統分配資源以創建實體,然后才能繼續進行。 例如:我們編寫的程序在運行時也是Linux進程的一個過程。
Linux進程和程序是什么?
進程是正在執行的一個程序或命令,每個進程都是一個運行的實體,都有自己的地址空間,并占用一定的系統資源。程序是人使用計算機語言編寫的可以實現特定目標或解決特定問題的代碼集合。
這么講很難理解,那我們換一種說法。程序是人使用計算機語言編寫的,可以實現一定功能,并且可以執行的代碼集合。而進程是正在執行中的程序。當程序被執行時,執行人的權限和屬性,以及程序的代碼都會被加載入內存,操作系統給這個進程分配一個ID,稱為 PID(進程ID)。
也就是說,在操作系統中,所有可以執行的程序與命令都會產生進程。只是有些程序和命令非常簡單,如ls命令、touch命令等,它們在執行完后就會結束,相應的進程也就會終結,所以我們很難捕捉到這些進程。但是還有一些程和命令,比如httpd進程,啟動之后就會一直駐留在系統當中,我們把這樣的進程稱作常駐內存進程。
某些進程會產生一些新的進程,我們把這些進程稱作子進程,而把這個進程本身稱作父進程。比如,我們必須正常登錄到Shell環境中才能執行系統命令,而Linux的標準Shell是bash。我們在bash當中執行了ls命令,那么bash就是父進程,而ls命令是在bash進程中產生的進程,所以ls進程是bash進程的子進程。也就是說,子進程是依賴父進程而產生的,如果父進程不存在,那么子進程也不存在了。
Linux進程管理的作用有哪些?
在使用Windows系統的過程中,使用任務管理器,很大程度上是為了強制關閉“未反應”的軟件,也就是殺死進程。的確,這是很多使用進程管理工具或進程管理命令的人最常見的使用方法。不過,殺死進程只是進程管理工作中最不常用的手段,因為每個進程都有自己正確的結束方法,而殺死進程是在正常方法已經失效的情況下的后備手段。
那么,進程管理到底應該是做什么的呢?我以為,進程管理主要有以下3個作用。
1.判斷服務器的健康狀態
運維工程師最主要的工作就是保證服務器安全、穩定地運行。理想的狀態是,在服務器出現問題,但是還沒有造成服務器宕機或停止服務時,就人為干預解決了問題。
進程管理最主要的工作就是判斷服務器當前運行是否健康,是否需要人為干預。如果服務器的CPU占用率、內存占用率過高,就需要人為介入解決問題了。這又出現了一個問題,我們發現服務器的CPU或內存占用率很高,該如何介入呢?是直接終止高負載的進程嗎?
當然不是,應該判斷這個進程是否是正常進程,如果是正常進程,則說明你的服務器已經不能滿足應用需求,你需要更好的硬件或搭建集群了;如果是非法進程占用了系統資源,則更不能直接中止進程,而要判斷非法進程的來源、作用和所在位置,從而把它徹底清除。
當然,如果服務器數量很少,我們完全可以人為通過進程管理命令來進行監控與干預,但如果服務器數量較多,那么人為手工監控就變得非常困難了,這時我們就需要相應的監控服務,如cacti或nagios。總之,進程管理工作中最重要的工作就是判斷服務器的健康狀態,最理想的狀態是服務器宕機之前就解決問題,從而避免服務器的宕機。
2.查看系統中所有的進程
我們需要查看看系統中所有正在運行的進程,通過這些進程可以判斷系統中運行了哪些服務、是否有非法服務在運行。
3.殺死進程
這是進程管理中最不常用的手段。當需要停止服務時,會通過正確關閉命令來停止服務。只有在正確終止進程的手段失效的情況下,才會考慮使用kill命令殺死進程。
上述就是關于Linux進程和程序是什么,以及Linux進程管理的作用有哪些的全部內容介紹,想了解更多關于Linux的信息,請繼續關注中培偉業。