新聞中心

公司主營業(yè)務(wù):做網(wǎng)站、成都網(wǎng)站建設(shè)、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出北塔免費做網(wǎng)站回饋大家。
通常,使用"任務(wù)管理器"主要有 3 個目的:
- 利用"應(yīng)用程序"和"進程"標(biāo)簽來査看系統(tǒng)中到底運行了哪些程序和進程;
- 利用"性能"和"用戶"標(biāo)簽來判斷服務(wù)器的健康狀態(tài);
- 在"應(yīng)用程序"和"進程"標(biāo)簽中強制中止任務(wù)和進程;
Linux 中雖然使用命令進行進程管理,但是進程管理的主要目的是一樣的,即查看系統(tǒng)中運行的程序和進程、判斷服務(wù)器的健康狀態(tài)和強制中止不需要的進程。
那么,到底什么是進程呢?它和我們平時所說的“程序”又有什么聯(lián)系呢?
什么是進程和程序
進程是正在執(zhí)行的一個程序或命令,每個進程都是一個運行的實體,都有自己的地址空間,并占用一定的系統(tǒng)資源。程序是人使用計算機語言編寫的可以實現(xiàn)特定目標(biāo)或解決特定問題的代碼集合。
這么講很難理解,那我們換一種說法。程序是人使用計算機語言編寫的,可以實現(xiàn)一定功能,并且可以執(zhí)行的代碼集合。而進程是正在執(zhí)行中的程序。當(dāng)程序被執(zhí)行時,執(zhí)行人的權(quán)限和屬性,以及程序的代碼都會被加載入內(nèi)存,操作系統(tǒng)給這個進程分配一個 ID,稱為
PID(進程 ID)。
也就是說,在操作系統(tǒng)中,所有可以執(zhí)行的程序與命令都會產(chǎn)生進程。只是有些程序和命令非常簡單,如 ls 命令、touch 命令等,它們在執(zhí)行完后就會結(jié)束,相應(yīng)的進程也就會終結(jié),所以我們很難捕捉到這些進程。但是還有一些程和命令,比如 httpd 進程,啟動之后就會一直駐留在系統(tǒng)當(dāng)中,我們把這樣的進程稱作
常駐內(nèi)存進程。
某些進程會產(chǎn)生一些新的進程,我們把這些進程稱作
子進程,而把這個進程本身稱作
父進程。比如,我們必須正常登錄到 Shell 環(huán)境中才能執(zhí)行系統(tǒng)命令,而 Linux 的標(biāo)準(zhǔn) Shell 是 bash。我們在 bash 當(dāng)中執(zhí)行了 ls 命令,那么 bash 就是父進程,而 ls 命令是在 bash 進程中產(chǎn)生的進程,所以 ls 進程是 bash 進程的子進程。也就是說,
子進程是依賴父進程而產(chǎn)生的,如果父進程不存在,那么子進程也不存在了。
進程管理的作用
在使用 Windows 系統(tǒng)的過程中,使用任務(wù)管理器,很大程度上是為了強制關(guān)閉“未反應(yīng)”的軟件,也就是殺死進程。的確,這是很多使用進程管理工具或進程管理命令的人最常見的使用方法。不過,殺死進程(強制中止進程)只是進程管理工作中最不常用的手段,因為每個進程都有自己正確的結(jié)束方法,而殺死進程是在正常方法已經(jīng)失效的情況下的后備手段。
那么,進程管理到底應(yīng)該是做什么的呢?我以為,進程管理主要有以下 3 個作用。
1) 判斷服務(wù)器的健康狀態(tài)
運維工程師最主要的工作就是保證服務(wù)器安全、穩(wěn)定地運行。理想的狀態(tài)是,在服務(wù)器出現(xiàn)問題,但是還沒有造成服務(wù)器宕機或停止服務(wù)時,就人為干預(yù)解決了問題。
進程管理最主要的工作就是判斷服務(wù)器當(dāng)前運行是否健康,是否需要人為干預(yù)。如果服務(wù)器的 CPU 占用率、內(nèi)存占用率過高,就需要人為介入解決問題了。這又出現(xiàn)了一個問題,我們發(fā)現(xiàn)服務(wù)器的 CPU 或內(nèi)存占用率很高,該如何介入呢?是直接終止高負(fù)載的進程嗎?
當(dāng)然不是,應(yīng)該判斷這個進程是否是正常進程,如果是正常進程,則說明你的服務(wù)器已經(jīng)不能滿足應(yīng)用需求,你需要更好的硬件或搭建集群了;如果是非法進程占用了系統(tǒng)資源,則更不能直接中止進程,而要判斷非法進程的來源、作用和所在位置,從而把它徹底清除。
當(dāng)然,如果服務(wù)器數(shù)量很少,我們完全可以人為通過進程管理命令來進行監(jiān)控與干預(yù),但如果服務(wù)器數(shù)量較多,那么人為手工監(jiān)控就變得非常困難了,這時我們就需要相應(yīng)的監(jiān)控服務(wù),如 cacti 或 nagios??傊?,進程管理工作中最重要的工作就是判斷服務(wù)器的健康狀 態(tài),最理想的狀態(tài)是服務(wù)器宕機之前就解決問題,從而避免服務(wù)器的宕機。
2) 查看系統(tǒng)中所有的進程
我們需要查看看系統(tǒng)中所有正在運行的進程,通過這些進程可以判斷系統(tǒng)中運行了哪些服務(wù)、是否有非法服務(wù)在運行。
3) 殺死進程
這是進程管理中最不常用的手段。當(dāng)需要停止服務(wù)時,會通過正確關(guān)閉命令來停止服務(wù)(如 apache 服務(wù)可以通過 service httpd stop 命令來關(guān)閉)。只有在正確終止進程的手段失效的情況下,才會考慮使用 kill 命令殺死進程。
其實,進程管理和 Windows 中任務(wù)管理器的作用非常類似,不過大家在使用任務(wù)管理器時是為了殺死進程,而不是為了判斷服務(wù)器的健康狀態(tài)。
標(biāo)題名稱:Linux進程管理及作用
轉(zhuǎn)載注明:http://www.5511xx.com/article/ccceohp.html


咨詢
建站咨詢
