## 什么是守護進程?
守護進程(Daemon Process),也就是通常說的 Daemon 進程(精靈進程),是 Linux 中的后臺服務進程。它是一個生存期較長的進程,通常獨立于控制終端并且周期性地執行某種任務或等待處理某些發生的事件。
守護進程是個特殊的孤兒進程,這種進程脫離終端,為什么要脫離終端呢?之所以脫離于終端是為了避免進程被任何終端所產生的信息所打斷,其在執行過程中的信息也不在任何終端上顯示。由于在 Linux 中,每一個系統與用戶進行交流的界面稱為終端,每一個從此終端開始運行的進程都會依附于這個終端,這個終端就稱為這些進程的控制終端,當控制終端被關閉時,相應的進程都會自動關閉。
Linux 的大多數服務器就是用守護進程實現的。比如,Internet 服務器 inetd,Web 服務器 httpd 等。
## 如何查看守護進程
在終端敲:ps axj
1. a 表示不僅列當前用戶的進程,也列出所有其他用戶的進程
2. x 表示不僅列有控制終端的進程,也列出所有無控制終端的進程
3. j 表示列出與作業控制相關的信息
## 守護進行的一些特點
1. 守護進程基本上都是以超級用戶啟動( UID 為 0 )
2. 沒有控制終端( TTY 為 ?)
3. 終端進程組 ID 為 -1 ( TPGID 表示終端進程組 ID)
一般情況下,守護進程可以通過以下方式啟動:
1. 在系統啟動時由啟動腳本啟動,這些啟動腳本通常放在 /etc/rc.d 目錄下;
2. 利用 inetd 超級服務器啟動,如 telnet 等;
3. 由 cron 定時啟動以及在終端用 nohup 啟動的進程也是守護進程。