歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 合理管理進程讓其成為Unix系統的守護神

合理管理進程讓其成為Unix系統的守護神

日期:2017/2/28 16:48:30   编辑:Linux教程

Unix系統中的進程指的是一個具有特定功能的程序,它可以和其他程序共享對某個數據集合的操作。進程被應用程序創建之後,在獲得資源時運行。如果得不到資源,就暫時停止直到獲得其所需要的資源。進程完成後消忙。故進程與普通程序仍然有所差別。因為進程是動態的,而程序是靜態的概念。不過筆者覺得這些描述都不怎麼直觀。筆者平時在跟大家交流過程中,都把Unxi進程比喻為系統的守護神。他負責與系統CPU之間進行通信並保障系統的正常運行。

  雖然進程是應用軟件自動產生的。但是系統工程師在必要的時候仍然要學會對系統進程進行調整。如把某些運行時間比較久的進程放入到後台運行等等。筆者這裡就進程管理這個話題,跟大家分享一下自己在這方面的管理經驗。

  一、如何查看進程標識?

  進程創建之後,系統就會為其分配一個唯一的標識。進程表示的允許范圍是從0到65535的十進制數字。通常情況下,進程標識是循環使用的。如果進程標識達到上界的話,將重新使用比較小的進程號。進程號在系統中的分配原則是必須唯一。所以即使是同一個應用程序發起的進程,發起時間不同其進程號也不同。但是關於進程的很多操作,都是針對進程號來進行的。如要把後台的進程調到前台來或者人工殺死一個不用的進程,都需要知道進程標識。故在進程管理中,系統工程師首先要掌握的一個內容就是如何查看系統的進程號。

  在Unix系統中,可以使用ps –ef命令來查看系統中的所有進程。輸入這個命令後,系統會顯示當前系統中進程的詳細信息。具體來說,會包括如下內容。如UID表示這個進程的所有者;PID表示進程的標識;PPID表示父進程的標識;TTY表示運行進程的終端;COMMMAND表示創建進程的系統命令。

  作為一個合格的Unix系統工程師,要能夠從這些信息中得到以下有用的結論。

  一是子進程與父進程的關系。每個進程都只有一個父進程,但是可以有多個子進程。創建其他進程的進程被稱為父進程;而這個被創建的進程就是子進程。為什麼要區分父子進程呢?如現在系統有三個進程,進程號分別為1001,1002,1003。而進程1003是有進程1001創建的。也就是說進程1001是進程1003所創建的。此時如果由於某種原因手工殺死父進程1001的話,那麼它的子進程也會被同時殺死或者說成為“孤兒進程”。為此系統工程師在手工殺死進程的時候,需要先判斷一下這個進程是否還創建了其他子進程。只有在確定這些子進程的手工關閉不會對系統產生不利影響之後,系統工程師才能夠殺死父進程。而父進程與子進程的明顯區別就在於進程標示號(PID)與父進程標識號(PPID)。如果子進程創建成功,則系統fork進程會將子進程的PID傳給父進程。故系統工程師要能夠根據進程標識號與父進程標識號來判斷誰是誰的父進程;在手工關閉父進程時要注意其創建的子進程對系統是否會產生不利影響。

  二是系統創建的進程不能夠被手工關閉。在Unix系統啟動的時候,系統核心將創建sched進程。然後這個進程又會產生三個子進程,分別為init進程、vhard進程和bdflush進程。這個四個進程的進程標示好分別為0、1、2、3。在核心調度程序為他們分配CPU時間之前,shced把其他程序調度內存。這裡Unix系統工程師需要注意的是,不要去嘗試著維護這四個進程,如不要想把這個四個進程強制關閉掉。否則的話,工程師會吃不了兜著走。

Copyright © Linux教程網 All Rights Reserved