Tôi không thể nhớ mình đã tải xuống ở đâu ... nhưng đây là tập lệnh chỉnh sửa tốt nhất mà tôi đã tìm thấy. Nó hoạt động rất đẹp (trên Mac và Linux.) (Lưu nó như daemonize.py)
import sys, os
def daemonize (stdin='/dev/null', stdout='/dev/null', stderr='/dev/null'):
# Perform first fork.
try:
pid = os.fork()
if pid > 0:
sys.exit(0) # Exit first parent.
except OSError, e:
sys.stderr.write("fork #1 failed: (%d) %sn" % (e.errno, e.strerror))
sys.exit(1)
# Decouple from parent environment.
os.chdir("/")
os.umask(0)
os.setsid()
# Perform second fork.
try:
pid = os.fork()
if pid > 0:
sys.exit(0) # Exit second parent.
except OSError, e:
sys.stderr.write("fork #2 failed: (%d) %sn" % (e.errno, e.strerror))
sys.exit(1)
# The process is now daemonized, redirect standard file descriptors.
for f in sys.stdout, sys.stderr: f.flush()
si = file(stdin, 'r')
so = file(stdout, 'a+')
se = file(stderr, 'a+', 0)
os.dup2(si.fileno(), sys.stdin.fileno())
os.dup2(so.fileno(), sys.stdout.fileno())
os.dup2(se.fileno(), sys.stderr.fileno())
Trong kịch bản của bạn, bạn sẽ chỉ đơn giản là:
from daemonize import daemonize
daemonize()
Và bạn cũng có thể xác định nơi để chuyển hướng stdio , err, v.v.
Nguồn
2009-02-26 18:29:22
Xem thêm câu hỏi SO này: http://stackoverflow.com/questions/473620/how-do-you-create-a-daemon-in-python – Rabarberski