OVH Cloud OVH Cloud

Démon UNIX en Python

11 réponses
Avatar
Thoma
Bonjour,

J'ai trouvé plusieurs exemples permettant de détacher un script Python
de sa console et de le mettre en arrière-plan (daemon). Par contre, je
ne trouve pas d'information satisfaisante permettant, en cas de
nouvelle exécution, d'indiquer que le script réside déjà en mémoire. Si
quelqu'un avait un tuyau sur le sujet, cela m'interesserait beaucoup.

D'avance merci

Thoma

P.S. : voilà le code que j'utilise (je me suis, très fortement, inspiré
de ce script-ci : http://homepage.hispeed.ch/py430/python/daemon.py)

LOGFILE = '/root/pydaemon.log'
PIDFILE = '/root/pydaemon.pid'

import time
import datetime

def prog():
while (1):
print datetime.datetime.now()
time.sleep(1)

USERPROG = prog

import sys, os

class Log:
def __init__(self, f):
self.f = f
def write(self, s):
self.f.write(s)
self.f.flush()

def main():
sys.stdout = sys.stderr = Log(open(LOGFILE, 'a+'))
USERPROG()

if __name__ == "__main__":
try:
pid = os.fork()
if pid > 0:
# exit first parent
sys.exit(0)
except OSError, e:
print >>sys.stderr, "fork #1 failed: %d (%s)" % (e.errno,
e.strerror)
sys.exit(1)

os.chdir("/")
os.setsid()
os.umask(0)

try:
pid = os.fork()
if pid > 0:
open(PIDFILE,'w').write("%d"%pid)
sys.exit(0)
except OSError, e:
print >>sys.stderr, "fork #2 failed: %d (%s)" % (e.errno,
e.strerror)
sys.exit(1)

main()

1 réponse

1 2
Avatar
Jean-Baptiste renard
Eric Brunel wrote:

Bon on va peut-être arrêter, on est un peu total HS, là...
Ok, ok mais c'est dur ;-)


1 2