先來看一些常用的系統守護進程,以及它們怎樣和http://www.CUOXin.com/nufangrensheng/p/3513323.html、http://www.CUOXin.com/nufangrensheng/p/3513400.html、http://www.CUOXin.com/nufangrensheng/p/3513443.html中所述的進程組、會話和控制終端等概念相關聯。
ps(1)命令打印系統中各個進程的狀態。
ps -axj
選項-a顯示由其他用戶所擁有的進程的狀態。-x顯示沒有控制終端的進程狀態。-j顯示與作業有關的信息:會話ID、進程組ID、控制終端以及終端進程組ID。
ps的輸出大致是:
我們暫且先考慮紅色邊框內的各列。按照順序,各列標題的意義是:父進程ID、進程ID、進程組ID、會話ID、終端名稱、終端進程組ID(與該控制終端相關的前臺進程組)、用戶ID以及命令字符串。
系統進程依賴于操作系統實現。父進程ID為0的各進程通常是內核進程,它們作為系統自舉過程的一部分而啟動。(init是此種進程的例外,它是內核在自舉時啟動的用戶層命令。)內核進程是特殊的,通常存在于系統的整個生命期中。它們以超級用戶特權運行,無控制終端,無命令行。
進程1通常是init。它是一個系統守護進程,負責啟動個運行層次特定的系統服務。這些服務通常是在它們自己擁有的守護進程的幫助下實現的。
在linux下,keventd守護進程為在內核中運行計劃執行的函數提供進程上下文。kapmd守護進程對很多計算機系統中具有的高級電源管理提供支持。kswapd守護進程也稱為頁面調出守護進程(pageout daemon)。它通過將臟頁面以低速寫到磁盤上從而使這些頁面在需要時仍可回收利用,這種方式支持虛存子系統。
Linux內核使用兩個守護進程bdflush和kupdated將高速緩存中的數據沖洗到磁盤上。當可用內存達到下限時,bdflush守護進程將臟緩沖區從緩沖池(buffer cache)中沖洗到磁盤上。每隔一定時間間隔,kupdated守護進程將臟頁面沖洗到磁盤上,以便在系統失效時減少丟失的數據。
端口映射守護進程portmap提供將RPC(Remote PRocedure Call,遠程過程調用)程序號映射為網絡端口號的服務。syslogd守護進程提供將系統消息記入日志的服務??梢栽谝慌_實際的控制臺上打印這些消息,也可將它們寫到一個文件中。
http://www.CUOXin.com/nufangrensheng/p/3513254.html 中已談到inetd守護進程(xinetd),它偵聽系統網絡接口,以便取得來自網絡的對各種網絡服務進程的請求。nfsd、lockd和rpciod守護進程提供對網絡文件系統(Network File System,NFS)的支持。
cron守護進程(crond)在指定的日期和時間執行指定的命令。許多系統管理任務是由cron定期地執行相關程序而實現的。cuPSD守護進程是打印假脫機進程,它處理對系統提出的所有打印請求。
注意,大多數守護進程都以超級用戶(用戶ID為0)特權運行。沒有一個守護進程具有控制終端,其終端設置為問號(?),終端前臺進程組ID設置為-1。內核守護進程以無控制終端方式啟動。用戶層守護進程缺少控制終端可能是守護進程調用了setsid的結果。所有用戶層守護進程都是進程組的組長進程以及會話的首進程,而且是這些進程組和會話中的唯一進程。最后,應當引起注意的是大多數守護進程的父進程是init進程。
本篇博文內容摘自《UNIX環境高級編程》(第二版),僅作個人學習記錄所用。關于本書可參考:http://www.apuebook.com/。
新聞熱點
疑難解答