python-daemonize

#!/usr/bin/env python  
#coding: utf-8  
import sys, os  
  
'''將當(dāng)前進(jìn)程fork為一個(gè)守護(hù)進(jìn)程  
   注意:如果你的守護(hù)進(jìn)程是由inetd啟動(dòng)的哲思,不要這樣做炸裆!inetd完成了  
   所有需要做的事情粤剧,包括重定向標(biāo)準(zhǔn)文件描述符浮禾,需要做的事情只有chdir()和umask()了  
'''  
  
def daemonize (stdin='/dev/null', stdout='/dev/null', stderr='/dev/null'):  
    #重定向標(biāo)準(zhǔn)文件描述符(默認(rèn)情況下定向到/dev/null)  
    try:   
        pid = os.fork()   
          #父進(jìn)程(會(huì)話組頭領(lǐng)進(jìn)程)退出础芍,這意味著一個(gè)非會(huì)話組頭領(lǐng)進(jìn)程永遠(yuǎn)不能重新獲得控制終端招狸。  
        if pid > 0:  
            sys.exit(0)   #父進(jìn)程退出  
    except OSError, e:   
        sys.stderr.write ("fork #1 failed: (%d) %s\n" % (e.errno, e.strerror) )  
        sys.exit(1)  
  
    #從母體環(huán)境脫離  
    os.chdir("/")  #chdir確認(rèn)進(jìn)程不保持任何目錄于使用狀態(tài)贤惯,否則不能umount一個(gè)文件系統(tǒng)菜皂。也可以改變到對(duì)于守護(hù)程序運(yùn)行重要的文件所在目錄  
    os.umask(0)    #調(diào)用umask(0)以便擁有對(duì)于寫的任何東西的完全控制,因?yàn)橛袝r(shí)不知道繼承了什么樣的umask镇草。  
    os.setsid()    #setsid調(diào)用成功后眶痰,進(jìn)程成為新的會(huì)話組長(zhǎng)和新的進(jìn)程組長(zhǎng),并與原來(lái)的登錄會(huì)話和進(jìn)程組脫離梯啤。  
  
    #執(zhí)行第二次fork  
    try:   
        pid = os.fork()   
        if pid > 0:  
            sys.exit(0)   #第二個(gè)父進(jìn)程退出  
    except OSError, e:   
        sys.stderr.write ("fork #2 failed: (%d) %s\n" % (e.errno, e.strerror) )  
        sys.exit(1)  
  
    #進(jìn)程已經(jīng)是守護(hù)進(jìn)程了竖伯,重定向標(biāo)準(zhǔn)文件描述符  
  
    for f in sys.stdout, sys.stderr: f.flush()  
    si = open(stdin, 'r')  
    so = open(stdout, 'a+')  
    se = open(stderr, 'a+', 0)  
    os.dup2(si.fileno(), sys.stdin.fileno())    #dup2函數(shù)原子化關(guān)閉和復(fù)制文件描述符  
    os.dup2(so.fileno(), sys.stdout.fileno())  
    os.dup2(se.fileno(), sys.stderr.fileno())  
  
#示例函數(shù):每秒打印一個(gè)數(shù)字和時(shí)間戳  
def main():  
    import time  
    sys.stdout.write('Daemon started with pid %d\n' % os.getpid())  
    sys.stdout.write('Daemon stdout output\n')  
    sys.stderr.write('Daemon stderr output\n')  
    c = 0  
    while True:  
        sys.stdout.write('%d: %s\n' %(c, time.ctime()))  
        sys.stdout.flush()  
        c = c+1  
        time.sleep(1)  
  
if __name__ == "__main__":  
      daemonize('/dev/null','/tmp/daemon_stdout.log','/tmp/daemon_error.log')  
      main()  


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市因宇,隨后出現(xiàn)的幾起案子七婴,更是在濱河造成了極大的恐慌,老刑警劉巖察滑,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件打厘,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡杭棵,警方通過(guò)查閱死者的電腦和手機(jī)婚惫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)魂爪,“玉大人先舷,你說(shuō)我怎么就攤上這事∽沂蹋” “怎么了蒋川?”我有些...
    開(kāi)封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)撩笆。 經(jīng)常有香客問(wèn)我捺球,道長(zhǎng),這世上最難降的妖魔是什么夕冲? 我笑而不...
    開(kāi)封第一講書人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任氮兵,我火速辦了婚禮,結(jié)果婚禮上歹鱼,老公的妹妹穿的比我還像新娘泣栈。我一直安慰自己,他們只是感情好弥姻,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布南片。 她就那樣靜靜地躺著,像睡著了一般庭敦。 火紅的嫁衣襯著肌膚如雪疼进。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 48,970評(píng)論 1 284
  • 那天秧廉,我揣著相機(jī)與錄音伞广,去河邊找鬼拣帽。 笑死,一個(gè)胖子當(dāng)著我的面吹牛赔癌,可吹牛的內(nèi)容都是我干的诞外。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼灾票,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了茫虽?” 一聲冷哼從身側(cè)響起刊苍,我...
    開(kāi)封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎濒析,沒(méi)想到半個(gè)月后正什,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡号杏,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年婴氮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片盾致。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡主经,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出庭惜,到底是詐尸還是另有隱情罩驻,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布护赊,位于F島的核電站惠遏,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏骏啰。R本人自食惡果不足惜节吮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望判耕。 院中可真熱鬧透绩,春花似錦、人聲如沸祈秕。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)请毛。三九已至志鞍,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間方仿,已是汗流浹背固棚。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工统翩, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人此洲。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓厂汗,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親呜师。 傳聞我的和親對(duì)象是個(gè)殘疾皇子娶桦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容