欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

使用Python編寫Linux系統守護進程實例

系統 1634 0

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

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

            
[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)


          

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

            
#!/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中,當一個進程的父進程終止是,系統會接管這個進程,讓init成為這個進程的父進程,這時候這個進程就成為了一個守護進程。需要注意的是,通過setsid,umask和chdir做工作目錄設置、關閉文件描述符、設置文件創建掩碼等操作。把上面的代碼保存起來,給于運行權限,并用python打開,就會看到有一個新的守護進程在運行,并且能夠處理系統發送的SIGHUP信號。

以上程序僅用來測試,僅能夠處理系統SIGHUP信號,請使用kill pid結束進程。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲一区在线日韩在线深爱 | 日本一区二区视频 | 国产欧美综合精品一区二区 | 成av在线| 日韩在线观看视频一区二区三区 | 精品成人免费一区二区在线播放 | 欧美精品一区二 | 国产精品无码人妻系列AV | 精品国产一区二区三区成人 | 九九久久亚洲综合久久久 | 成人免费电影视频 | 久久精品国产清自在天天线 | 国产91在线 | 欧美 | 一级毛片免费观看不卡视频 | 亚洲精品国产a久久久久久 亚洲国产精品第一页 | 羞羞在线视频 | 国产成人精品免高潮在线观看 | 国产欧美一区二区精品忘忧草 | 国产成人精品一区二区仙踪林 | 国产精品久久99 | 天天摸日日干 | 婷婷久久激情啪啪 | 欧美综合国产精品久久丁香 | 日韩一区二区在线观看 | www.亚洲在线 | 亚洲经典激情春色另类 | 亚洲特级aaaaaa毛片 | 可以看的毛片 | 四虎884aa永久播放地址http | 日本欧美国产精品第一页久久 | 亚洲性一区 | 亚洲高清一区二区三区 | 欧美一级毛片在线播放 | 精品国产成人在线 | 亚洲播播播 | 康熙大帝1994蔺达诺版 | 求av网站| 日本资源站| 涩涩色中文综合亚洲 | 精品黑人一区二区三区 | 蜜桃精品导航 |