站長資訊網
        最全最豐富的資訊網站

        什么是linux守護進程

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

        什么是linux守護進程

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

        守護進程的定義

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

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

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

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

        什么是linux守護進程

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

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

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

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

        守護進程的特點

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

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

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

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

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

        什么是linux守護進程

        • 進程組:它是由一個或多個進程組成,進程組號(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腳本對進程的啟動、關閉、重啟進行自動管理。

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 九色精品视频在线观看| 人妻少妇精品中文字幕AV| 亚洲成网777777国产精品| 国产成人精品天堂| 亚洲精品高清无码视频| 精品国产爽爽AV| 2020最新久久久视精品爱| 91麻豆精品视频| 久久99久久99精品免视看动漫| 久久无码人妻精品一区二区三区| 影视网欧洲精品| 精品视频在线免费观看| 久久久久女人精品毛片| 欧美日韩在线精品一区二区三区激情综合| 91久久精品国产91性色也| 国产精品99精品久久免费| 亚洲国产精品无码中文字| 亚洲äv永久无码精品天堂久久| 99久久www免费人成精品| 国产精品久久亚洲不卡动漫| 久久精品99久久香蕉国产色戒| 自拍偷自拍亚洲精品第1页| 久久露脸国产精品| 精品亚洲视频在线观看| 国产精品v欧美精品v日本精| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 国产欧美亚洲精品A| 亚洲2022国产成人精品无码区| 久久亚洲AV永久无码精品| 国产伦精品一区二区三区视频猫咪| 欧美精品在线一区| 欧美精品/日韩精品/国产精品| 国产精品久久久久无码av| 国产国拍亚洲精品mv在线观看 | 无码国产精品一区二区免费16 | 99免费精品国产| 国产福利电影一区二区三区,亚洲国模精品一区 | 国产精品久久永久免费| 国产精品嫩草影院一二三区入口 | 99国产精品国产免费观看| 久久亚洲国产精品一区二区|