最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Linux中的守護(hù)進(jìn)程

 更新時間:2017年06月28日 10:09:55   投稿:lqh  
這篇文章主要介紹了詳解Linux中的守護(hù)進(jìn)程的相關(guān)資料,需要的朋友可以參考下

一、什么是守護(hù)進(jìn)程

Linux系統(tǒng)啟動時會啟動很多系統(tǒng)服務(wù)進(jìn)程,這些系統(tǒng)服 務(wù)進(jìn)程沒有控制終端,不能直接和用戶交互。其它進(jìn)程都是在用戶登錄或運(yùn)行程序時創(chuàng)建,在運(yùn)⾏結(jié)束或⽤戶注銷時終止,但系統(tǒng)服務(wù)進(jìn)程不受用戶登錄注銷的影響,它們⼀直在運(yùn)行著。這種進(jìn)程叫守護(hù)進(jìn)程。

守護(hù)進(jìn)程也被稱為精靈進(jìn)程,是運(yùn)行在后臺的一種特殊進(jìn)程,它獨(dú)立于控制終端并且周期性地執(zhí)行某種任務(wù)或等待處理某些發(fā)生的事件。
查看方式

ps axj命令:查看系統(tǒng)中的進(jìn)程。

參數(shù)a表示不僅列當(dāng)前⽤戶的進(jìn)程,也列出所有其他用戶的進(jìn)程;

參數(shù)x表示不僅列有控制終端的進(jìn)程,也列出所有⽆控制終端的進(jìn)程;

參數(shù)j表示列出與作業(yè)控制相關(guān)的信息;

榪欓噷鍐欏浘鐗囨弿榪? title=

 二、守護(hù)進(jìn)程的調(diào)用

創(chuàng)建守護(hù)進(jìn)程最關(guān)鍵的⼀步是調(diào)⽤setsid函數(shù)創(chuàng)建⼀個新的會話,并成為會話leader。

該函數(shù)調(diào)用成功時返回新創(chuàng)建的Session的id(其實也就是當(dāng)前進(jìn)程的id),出錯返回-1。注意,調(diào)用這個函數(shù)之前,當(dāng)前進(jìn)程不允許是進(jìn)程組的Leader,否則該函數(shù)返回-1。要保證當(dāng)前進(jìn)程不是進(jìn) 程組的Leader也很容易,只要先fork再調(diào)⽤setsid就行了。fork創(chuàng)建的子進(jìn)程和⽗進(jìn)程在同⼀個進(jìn)程組中,進(jìn)程組的Leader必然是該組的第⼀個進(jìn)程,所以子進(jìn)程不可能是該組的第⼀進(jìn)程,在子進(jìn)程中調(diào)用setsid就不會有問題了。

成功創(chuàng)建并調(diào)用一個守護(hù)進(jìn)程的標(biāo)志是:

1、成功新建一個會話,當(dāng)前進(jìn)程成為該會話的leader,該會話的ID為當(dāng)前進(jìn)程的ID;

2、成功新建一個新的進(jìn)程組,并且成為該組的組長,該進(jìn)程組的組id即為當(dāng)前進(jìn)程的id;

3、如果當(dāng)前進(jìn)程有一個控制終端,那么當(dāng)前進(jìn)程失去這個控制終端,成為一個無控制終端的進(jìn)程;所謂失去控制終端是指,原來的控制終端仍然是打開的,仍然可以讀寫,但只是⼀個普通的打開⽂件⽽不是控制終端了。

三、守護(hù)進(jìn)程的創(chuàng)建

1、使用umask將文件模式創(chuàng)建屏蔽字設(shè)置為0;

2、調(diào)用fork(),父進(jìn)程退出(exit)。 (如果該守護(hù)進(jìn)程作為一條簡單的shell命令啟動的,那么父進(jìn)程終止使得shell認(rèn)為該命令已經(jīng)執(zhí)行完畢。同時保證該進(jìn)程不是一個進(jìn)程組的組長進(jìn)程)

3、調(diào)用setsid創(chuàng)建一個新會話。(setsid會使1、調(diào)用進(jìn)程成為新會話的首進(jìn)程;2、調(diào)用進(jìn)程成為一個進(jìn)程組的組長進(jìn)程;3、調(diào)用進(jìn)程沒有控制終端)

4、將當(dāng)前工作目錄更改為根目錄;

5、關(guān)閉不再需要的文件描述符;

6、忽略SIGCHLD信號;

代碼實現(xiàn)mydemon:

榪欓噷鍐欏浘鐗囨弿榪? title=

榪欓噷鍐欏浘鐗囨弿榪? title=

榪欓噷鍐欏浘鐗囨弿榪? title=

除了自己實現(xiàn)外,我們還可以調(diào)用系統(tǒng)中的demon進(jìn)行設(shè)置;

進(jìn)行第二次fork的原因?

要明晰第二次fork的原因,就必須明晰這兩次fork的作用。

第一次fork的作用是:1、讓shell認(rèn)為這條命令已經(jīng)終止,不用掛在終端輸入上;

2、為之后的setsid服務(wù),因為調(diào)用setsid函數(shù)的進(jìn)程不能是進(jìn)程組組長,如果不fork出子進(jìn)程,則此時的父進(jìn)程是進(jìn)程組組長,就無法調(diào)用setsid。(當(dāng)子進(jìn)程調(diào)用完setsid函數(shù)之后,子進(jìn)程是會話組長也是進(jìn)程組組長,并且脫離了控制終端,此時,不管控制終端如何操作,新的進(jìn)程都不會收到一些信號使得進(jìn)程退出。)

(2)第二次fork的作用:

雖然當(dāng)前關(guān)閉了和終端的聯(lián)系,但是后期可能會誤操作打開了終端。只有確定會話首進(jìn)程能打開終端設(shè)備,也就是再fork一次,再把父進(jìn)程退出,再次fork的子進(jìn)程作為守護(hù)進(jìn)程繼續(xù)運(yùn)行,保證了該精靈進(jìn)程不是對話期的首進(jìn)程。

第二次不是必須的,是可選的,市面上有些開源項目也是fork一次

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • 13個實用的Apache Rewrite重寫規(guī)則

    13個實用的Apache Rewrite重寫規(guī)則

    這篇文章主要介紹了13個實用的Apache Rewrite重寫規(guī)則,需要的朋友可以參考下
    2014-03-03
  • linux下vsftpd的安裝及配置使用詳細(xì)步驟(推薦)

    linux下vsftpd的安裝及配置使用詳細(xì)步驟(推薦)

    這篇文章主要介紹了linux下vsftpd的安裝及配置使用詳細(xì)步驟 ,需要的朋友可以參考下
    2018-01-01
  • LNMP系列教程之一 添加域名建立站點(diǎn)

    LNMP系列教程之一 添加域名建立站點(diǎn)

    今天我在昨天安裝過后的教程基礎(chǔ)之后,添加我們需要的站點(diǎn)建立網(wǎng)站。雖然我們昨天在添加主域名的時候已經(jīng)添加了域名,但遠(yuǎn)遠(yuǎn)是不夠的,我們需要添加不同的域名建立多個網(wǎng)站
    2012-09-09
  • 干貨 | Linux新手入門好書推薦

    干貨 | Linux新手入門好書推薦

    今天在知乎上看到了這樣一個問答:學(xué)習(xí)操作系統(tǒng)的知識,看哪本書好?讀完之后,我決定理一下操作系統(tǒng)方面的好書推薦給需要學(xué)習(xí)這個方向知識的人。下面這篇文章主要給Linux新手們推薦了一些入門的好書,需要的朋友可以參考下。
    2017-10-10
  • CentOS7更改默認(rèn)SSH端口與配置指南

    CentOS7更改默認(rèn)SSH端口與配置指南

    SSH是 Linux 服務(wù)器遠(yuǎn)程管理的核心工具,其默認(rèn)監(jiān)聽端口為 22,由于端口 22 眾所周知,這也使得服務(wù)器容易受到自動化掃描和暴力 破解攻擊,本文將系統(tǒng)性地介紹如何在 CentOS 7 系統(tǒng)中安全地更改 SSH 端口,解決 SELinux 和防火墻相關(guān)配置,需要的朋友可以參考下
    2025-04-04
  • Apache偽靜態(tài)Rewrite詳解

    Apache偽靜態(tài)Rewrite詳解

    這篇文章主要介紹了Apache偽靜態(tài)Rewrite的相關(guān)知識以及使用方法和使用實例,需要的朋友可以參考下
    2014-03-03
  • Centos7搭建sftp服務(wù)流程

    Centos7搭建sftp服務(wù)流程

    本篇文章給大家詳細(xì)分析了Centos7搭建sftp服務(wù)的全過程以及相關(guān)命令分享,一起需要下。
    2018-02-02
  • Linux服務(wù)器選擇什么版本好

    Linux服務(wù)器選擇什么版本好

    服務(wù)器選擇什么版本的linux,這個問題是個老生常談的問題,每個月都有人討論,根據(jù)我運(yùn)維過1000臺 server的經(jīng)驗,回答如下
    2014-03-03
  • Vim編輯器常用的命令總結(jié)

    Vim編輯器常用的命令總結(jié)

    使用 Vim 的時間不長,但如今已經(jīng)離不開熟悉的 Vim 編輯模式了。 Vim 的學(xué)習(xí)曲線是非常陡的,一開始學(xué)習(xí)的時候,面對很多的操作命令要去記住,常常望而卻步。其實,只要記住一些常用的命令,加之在工作中堅持使用 Vim 進(jìn)行編輯,很快就能得心應(yīng)手了。下面來一起看看吧。
    2017-04-04
  • 最完的htaccess文件用法收集整理

    最完的htaccess文件用法收集整理

    最完的htaccess文件用法收集,這篇文章確實很詳細(xì),需要的朋友可以參考下
    2012-05-05

最新評論

平湖市| 甘南县| 德钦县| 康乐县| 马龙县| 南江县| 麻江县| 博爱县| 永和县| 拉萨市| 紫阳县| 揭阳市| 仪征市| 蒲城县| 伊宁县| 镇坪县| 台中县| 景宁| 旅游| 滕州市| 利川市| 彩票| 措勤县| 邓州市| 神池县| 筠连县| 铁岭市| 南平市| 富源县| 西乡县| 德令哈市| 宜宾县| 黑龙江省| 若尔盖县| 双桥区| 铁力市| 定远县| 武平县| 集贤县| 孟村| 六安市|