Python通過fork的方式防止僵屍進程
阿新 • • 發佈:2018-01-11
name err try 方式 rgs starting download format amp
import subprocess import os import sys import platform def fock_new(func): def inner(*args, **kwargs): if ‘Linux‘.__eq__(platform.system()): print "main process start" try: pid = os.fork() if pid > 0: print "after fock enter main process" print {‘result‘: ‘success‘, ‘msg‘: ‘Starting deploy‘} sys.exit(0) except OSError, e: print e print "after fock enter sub process" try: os.setsid() pid= os.fork() if pid > 0: print "after fock 2 enter sub process" sys.exit(0) except OSError, e: print e print "after fock 2 enter sunzi process" return func(*args, **kwargs) else:return True return func(*args, **kwargs) return inner def test(command): print fock_new(subprocess.Popen)(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) if __name__ == ‘__main__‘: url = "http://xxx.tar.gz" path = "E:/xiaol/T" command = "sh Download.sh {url} {path}".format(url=url, path=path) test(command)
#!/usr/bin/sh echo $$>$2/ppid && echo $1>>$2/download_url && wget -o $2/wget-log -P $2 $1 && echo Decompression....>>$2/wget-log && tar -zxf $2/*.tar.gz -C $2 --force-local && rm -rf $2/wget-log $2/ppid $2/*.tar.gz
Python通過fork的方式防止僵屍進程