久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

linux守護進程怎么創建

156次閱讀
沒有評論

共計 2152 個字符,預計需要花費 6 分鐘才能閱讀完成。

這篇文章主要講解了“linux 守護進程怎么創建”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著丸趣 TV 小編的思路慢慢深入,一起來研究和學習“linux 守護進程怎么創建”吧!

在 linux 中,守護進程也稱“精靈進程”,是一個在后臺運行且不受任何終端控制的特殊進程,用于執行特定的系統任務。守護進程獨立于控制終端并且周期性的執行某種發生的事件。

本教程操作環境:linux5.9.8 系統、Dell G3 電腦。

守護進程的定義

守護進程也稱為精靈進程(Daemon),是一個在后臺運行且不受任何終端控制的特殊進程,用于執行特定的系統任務。很多守護進程在系統引導的時候啟動,并且一直運行直到系統關閉。另一些只在需要的時候才啟動,完成任務后就自動結束。

它獨立于控制終端并且周期性的執行某種發生的事件。守護進程是一種很有用的進程。Linux 的大多數服務器就是用守護進程實現的。

Linux 系統啟動時會啟動很多系統服務進程,這些系統服務進程沒有控制終端,不能直接和用戶交互。其他進程都是在用戶登錄或運行程序時創建,在運行結束或用戶注銷時終止,但系統服務進程 (守護進程) 不受用戶登錄注銷的影響,它們一直在運行著。這種進程有一個名稱叫守護進程(Daemon)。

下面們用 ps axj 命令查看系統中的進程。參數 a 表示不僅列出當前用戶的進程,也列出所有其他用戶的進程;參數 x 表示不僅列出有控制終端的進程,也列出所有無控制終端的進程;參數 j 表示列出與作業控制相關的信息。

(1)凡是 TPGID 一欄寫著 - 1 的都是沒有控制終端的進程,也就是守護進程;

(2)在 COMMAND 一列用 [] 括起來的名字表示內核線程,這些線程在內核里創建,沒有用戶空間代碼,因此沒有程序文件名和命令行,通常采用以 k 開頭的名字,表示 Kernel;

(3)init 進程我們已經很熟悉了,udevd 負責維護 /dev 目錄下的設備文件,acpid 負責電源管理,syslogd 負責維護 /var/log 下的日志文件;

(4)可以看出,守護進程通常采用以 d 結尾的名字,表示 Daemon。

守護進程的特點

(1)在 Linux 中,每個系統與用戶進行交流的界面成為終端,每一個從此終端開始運行的進程都會依附于這個終端,這個終端被稱為這些進程的控制終端;

(2)當控制終端被關閉的時候,相應的進程都會自動關閉。但是守護進程卻能突破這種限制,它脫離于終端并且在后臺運行,(脫離終端的目的是為了避免進程在運行的過程中的信息在任何終端中顯示并且進程也不會被任何終端所產生的終端信息所打斷),它從被執行的時候開始運轉,直到整個系統關閉才退出(當然可以認為是殺死相應的守護進程);

(3)如果想讓某個進程不因為用戶或中斷或其他變化而影響,那么就必須把這個進程變成一個守護進程。

進程,進程組,會話,控制終端之間的關系

因為守護進程的創建需要改變這些環境參數,所以了解它們之間的關系很重要:

進程組:它是由一個或多個進程組成,進程組號 (GID) 就是這些進程中的進程組長的 PID。

會話:其實叫做會話期 (session),它包括了期間所有的進程組,一般一個會話期開始于用戶 login,一般 login 的是 shell 終端,所以 shell 終端又是此次會話期的首進程,會話一般結束于 logout。對于非進程組長,它可以調用 setsid() 創建一個新的會話。

控制終端(tty):一般就是指 shell 終端,它在會話期中可有也可以沒有。

創建守護進程

創建守護進程最關鍵的一步是調用 setsid 函數創建一個新的 Session Leader。

#includepid_t setid(void);// 該函數調用成功時返回新創建的 Session 的 id(其實也就是當前進程的 id), 出錯返回 -1。

注意,調用這個函數之前,當前進程不允許是進程組的 Leader,否則該函數返回 -1。要保證當前進程不是進程組的 Leader 也很容易,只要先 fork 再調用 setsid 就行了。fork 創建的子進程和父進程在同一個進程組中,進程組的 Leader 必然是該組的第一個進程,所以子進程不可能是該組的第一個進程,在子進程中調用 setsid 就不會有問題了。

成功調用該函數的結果是:

(1)創建一個新的 Session,當前進程為 Session Leader,當前進程的 id 就是 Session 的 id;

(2)創建一個新的進程組,當前進程為進程組的 Leader,當前進程的 id 就是進程組的 id;

(3)如果當前進程原本有一個控制終端,則它失去這個終端,成為一個沒有控制終端的進程。(所謂失去控制終端指的是,原來的控制終端仍然是打開的,仍然可以讀寫,但只是一個普通的打開文件,而不是控制終端了)。

如何殺死守護進程

1. 首先 ps axj | grep 守護進程名字,找到相應的守護進程,然后使用 kill -9 守護進程名殺掉;

2. 利用 ps -ef 命令查找相應的守護進程,再用 kill - 9 命令將其殺死;

3. 創建 shell 腳本對進程的啟動、關閉、重啟進行自動管理。

感謝各位的閱讀,以上就是“linux 守護進程怎么創建”的內容了,經過本文的學習后,相信大家對 linux 守護進程怎么創建這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是丸趣 TV,丸趣 TV 小編將為大家推送更多相關知識點的文章,歡迎關注!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-03發表,共計2152字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 绵阳市| 奉贤区| 陆良县| 河东区| 平远县| 于都县| 大悟县| 钟山县| 平武县| 永泰县| 盐池县| 社旗县| 乐亭县| 莒南县| 东乌| 澄江县| 丹巴县| 尼勒克县| 南城县| 科尔| 锡林郭勒盟| 新邵县| 青铜峡市| 轮台县| 奈曼旗| 通辽市| 常熟市| 大庆市| 乌海市| 锡林浩特市| 日照市| 仪陇县| 会宁县| 蓬溪县| 南丹县| 呼伦贝尔市| 罗平县| 五河县| 泾源县| 南康市| 鄯善县|