亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

使用Python編寫Linux系統(tǒng)守護進程實例

 更新時間:2015年02月03日 11:59:31   投稿:junjie  
這篇文章主要介紹了使用Python編寫Linux系統(tǒng)守護進程實例,本文先是講解了什么是守護進程,然后給出了一個Python語言的簡單實現(xiàn),需要的朋友可以參考下

守護進程(daemon)是指在UNIX或其他多任務(wù)操作系統(tǒng)中在后臺執(zhí)行的電腦程序,并不會接受電腦用戶的直接操控。此類程序會被以進程的形式初始化。通常,守護進程沒有任何存在的父進程(即PPID=1),且在UNIX系統(tǒng)進程層級中直接位于init之下。守護進程程序通常通過如下方法使自己成為守護進程:對一個子進程調(diào)用fork,然后使其父進程立即終止,使得這個子進程能在init下運行。–維基百科

守護進程區(qū)別于普通用戶登陸系統(tǒng)后運行的進程,它是直接由系統(tǒng)初始化,和系統(tǒng)用戶沒有關(guān)系,而用戶開啟的進程依存與用戶連接的終端,當(dāng)終端退出或斷開,進程也會隨著終止。
來看一下我Linux試驗機的進程狀態(tài):

[root@home tmp]# ping www.baidu.com > /dev/null &
[1] 2759
[root@home tmp]# pstree -p
systemd(1)-+-agetty(157)
      |-agetty(163)
      |-avahi-daemon(129)---avahi-daemon(134)
      |-avahi-dnsconfd(125)
      |-crond(121)
      |-dbus-daemon(130)
      |-haveged(128)
      |-ifplugd(126)
      |-nginx(226)---nginx(227)
      |-ntpd(223)
      |-python(2727)
      |-rngd(124)
      |-sshd(216)---sshd(2683)---bash(2690)-+-ping(2759)
      |                   `-pstree(2760)
      |-systemd(2687)---(sd-pam)(2688)
      |-systemd-journal(76)
      |-systemd-logind(127)
      |-systemd-udevd(89)
      `-wpa_supplicant(153)

可以看到,當(dāng)前有一個ping程序在后臺運行,如果如斷開連接,再次去登陸,ping程序是已經(jīng)終止了的。也就是說,普通進程,和用戶會話相關(guān),那么,如何去編寫一個和用戶會話無關(guān),一直運行在后臺的進程呢?大家可能注意到了上面pid為2727的python,如果只是正常打開python,它應(yīng)該是運行在bash下的,而這里卻直接運行在systemd下,實際上,它是一個守護進程,來看一下python編寫linux守護進程的簡單實現(xiàn):

#!/usr/bin/env python
import os
import signal
import time
logfile="/tmp/daemon.log"
pid=os.fork()
#exit parent process
if pid: exit()
#get the pid of subprocess
daeid=os.getpid()
os.setsid()
os.umask(0)
os.chdir("/")
#Redirection file descriptor
fd=open("/dev/null","a+")
os.dup2(fd.fileno(),0)
os.dup2(fd.fileno(),1)
os.dup2(fd.fileno(),2)
fd.close()
log=open(logfile,'a')
log.write('Daemon start up at %s\n'%(time.strftime('%Y:%m:%d',time.localtime(time.time()))))
log.close()
def reload(a,b):
  log=open(logfile,'a')
  log.write('Daemon reload at %s\n'%(time.strftime('%Y:%m:%d',time.localtime(time.time()))))
  log.close()
while True:
  signal.signal(signal.SIGHUP,reload)
  time.sleep(2)

要點是利用linux中,當(dāng)一個進程的父進程終止是,系統(tǒng)會接管這個進程,讓init成為這個進程的父進程,這時候這個進程就成為了一個守護進程。需要注意的是,通過setsid,umask和chdir做工作目錄設(shè)置、關(guān)閉文件描述符、設(shè)置文件創(chuàng)建掩碼等操作。把上面的代碼保存起來,給于運行權(quán)限,并用python打開,就會看到有一個新的守護進程在運行,并且能夠處理系統(tǒng)發(fā)送的SIGHUP信號。

以上程序僅用來測試,僅能夠處理系統(tǒng)SIGHUP信號,請使用kill pid結(jié)束進程。

相關(guān)文章

  • python3.6數(shù)獨問題的解決

    python3.6數(shù)獨問題的解決

    這篇文章主要為大家詳細介紹了python3.6數(shù)獨問題的解決,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • Python實現(xiàn)手勢識別

    Python實現(xiàn)手勢識別

    這篇文章主要介紹了Python如何實現(xiàn)手指指尖的檢測,并且可以在windows系統(tǒng)下通過判斷手指數(shù)目,來模擬鍵盤操作,感興趣的朋友可以了解下
    2020-10-10
  • python spilt()分隔字符串的實現(xiàn)示例

    python spilt()分隔字符串的實現(xiàn)示例

    split() 方法可以實現(xiàn)將一個字符串按照指定的分隔符切分成多個子串,本文介紹了spilt的具體使用,感興趣的可以了解一下
    2021-05-05
  • 教你漂亮打印Pandas DataFrames和Series

    教你漂亮打印Pandas DataFrames和Series

    在今天的文章中,我們將探討如何配置所需的pandas選項,這些選項將使我們能夠“漂亮地打印” pandas DataFrames,需要的朋友可以參考下
    2021-05-05
  • 一文詳解如何實現(xiàn)PyTorch模型編譯

    一文詳解如何實現(xiàn)PyTorch模型編譯

    這篇文章主要為大家介紹了如何實現(xiàn)PyTorch?模型編譯詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)根據(jù)字段將記錄分組操作示例

    Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)根據(jù)字段將記錄分組操作示例

    這篇文章主要介紹了Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)根據(jù)字段將記錄分組操作,結(jié)合實例形式分析了itertools.groupby()函數(shù)針對字典進行分組操作的相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2018-03-03
  • Python?使用?pyc?解決明文密鑰問題記錄

    Python?使用?pyc?解決明文密鑰問題記錄

    pyc 是 Python 經(jīng)過 compile 后的文件類型,一段 Python 代碼執(zhí)行前會先將 .py 文件編譯成 .pyc 文件它是一種字節(jié)碼 byte code,然后由 Python 虛擬機執(zhí)行,這篇文章主要介紹了Python使用pyc解決明文密鑰問題,需要的朋友可以參考下
    2023-07-07
  • Python稀疏矩陣及參數(shù)保存代碼實現(xiàn)

    Python稀疏矩陣及參數(shù)保存代碼實現(xiàn)

    這篇文章主要介紹了Python稀疏矩陣及參數(shù)保存代碼實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • python使用minimax算法實現(xiàn)五子棋

    python使用minimax算法實現(xiàn)五子棋

    這篇文章主要為大家詳細介紹了python使用minimax算法實現(xiàn)五子棋,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • python ddt實現(xiàn)數(shù)據(jù)驅(qū)動

    python ddt實現(xiàn)數(shù)據(jù)驅(qū)動

    這篇文章主要為大家詳細介紹了python ddt實現(xiàn)數(shù)據(jù)驅(qū)動,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03

最新評論