Question

J'ai un certain nombre de questions concernant le démarrage d'un script à l'aide de Pyinotify comme démon.

J'ai du code comme celui-ci:

#!/usr/bin/env python

import sys
import pyinotify
import shutil
import glob

PACKAGES_DIR = '/var/my-packages'
PACKAGES_TEMP_DIR = '/var/www-data/package_temp'

wm = pyinotify.WatchManager()
mask = pyinotify.IN_MOVED_TO

class ProcessPackages(pyinotify.ProcessEvent):
    def process_IN_MOVED_TO(self, event):
        for directory in glob.glob(PACKAGES_TEMP_DIR + '/*'):
            shutil.move(directory, PACKAGES_DIR)

handler = ProcessPackages()
notifier = pyinotify.Notifier(wm, handler)
wdd = wm.add_watch(PACKAGES_TEMP_DIR, mask)

try:
    notifier.loop(daemonize=True, pid_file='/tmp/packages.pid',  stdout='/tmp/stdout.txt')
except pyinotify.NotifierError, err:
    print >> sys.stderr, err

Ma question est maintenant si je me suis désigné sur le paramètre Daonize à True, cela signifie que l'ensemble du script est exécuté sous forme de démon ou est-ce juste pyinotify?

S'il ne s'agit que de pyinotify comment allez-y exécuter tout ce script en tant que processus de démon?

Si j'exécute le script comme Daemon, il est vraiment nécessaire de faire pyinotifier un démon?

Ma dernière question est si le pyinotify est démonisé aurait-il certainement besoin d'un rappel?Dans mon cas, je veux juste que le script fonctionne pour toujours et ne soit tué que sur le redémarrage / redémarrage du système.

Le script doit également fonctionner comme n'importe quel script de démarrage standard sans intervention manuelle.

FYI,

J'exécute un serveur Ubuntu 12.04.

Merci d'avance, NAV

Était-ce utile?

La solution

i Exécution d'un processus dépendant d'IpyNotify en tant que service système (ce que vous voulez, par le son des choses), en utilisant UpStart - également sur Ubuntu 12.04.

Personnellement, je n'ai pas modifié le script Python du tout .Je viens de m'assurer qu'il a bien fonctionné au terminal, puis j'ai créé un fichier de configuration de l'UPSART comme si:

/etc/init/myservice.conf :

description "MyService"
author "My Name"

start on runlevel [2345]
stop on runlevel [!2345]

# Automatically restart process if crashed
#respawn

exec su myuser -c "/usr/bin/python /path/to/myscript.py > /tmp/myscript.log 2>&1"

Lorsque votre fichier init est en place, vous voudrez essayer quelque chose comme sudo start myservice, puis inspecter /tmp/myscript.log pour toutes les erreurs.

hth!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top