Ein in Python geschriebenes Überwachungsskript -Test1.py wird ständig ausgeführt, während es wahr ist. Wenn SSH remote ist (unter Verwendung von Putty Terminal), startet es das Skript mit dem folgenden Befehl:
Die Codekopie lautet wie folgt:
Python test1.py &
Jetzt wird das Skript normal ausgeführt und Sie können die Prozessnummer über PS sehen. Zu diesem Zeitpunkt schließen Sie das SSH -Terminal direkt (verwenden Sie den Befehl exit nicht, führen ihn jedoch direkt über die Taste des Kitts aus). Nachdem Sie sich erneut angemeldet haben, stellen Sie fest, dass der Prozess beendet ist.
Das Problem wurde durch die Hintergrund -Start -up -Methode gelöst. Hier ist eine Zusammenfassung, die für mich in Zukunft bequem ist.
Laufen im Hintergrund unter Linux
Implementiert durch Gabel
In der Linux -Umgebung wird der Daemon -Prozess in C durch Gabel implementiert, und Python kann auch mit dieser Methode implementiert werden. Der Beispielcode lautet wie folgt:
Die Codekopie lautet wie folgt:
#!/usr/bin/env python
Importzeit, Plattform
OS importieren
Def funzionedemo ():
# Dies ist ein bestimmtes Beispiel für Geschäftsfunktion
fout = open ('/tmp/dämone.log', 'w'))
Während wahr:
fout.write (time.ctime ()+'/n')
fout.flush ()
time.sleep (2)
fout.close ()
Def createdaemon ():
#Fork -Prozess
versuchen:
if os.fork ()> 0: os._exit (0)
Außer Oserror, Fehler:
Drucken 'Gabel Nr. 1 fehlgeschlagen: %d ( %s)' %(error.errno, error.strerrror)
os._exit (1)
os.chdir ('/')
os.setsid ()
os.umask (0)
versuchen:
PID = OS.FORK ()
Wenn PID> 0:
Dämmerung 'Daemon PID % d' % pid drucken
os._exit (0)
Außer Oserror, Fehler:
Drucken 'Gabel #2 fehlgeschlagen: %d ( %s)' %(error.errno, error.strerrror)
os._exit (1)
# Umleitung Standard IO
sys.stdout.flush ()
sys.stderr.flush ()
si = Datei ("/dev/null", 'r')
So = Datei ("/dev/null", 'a+')
SE = Datei ("/dev/null", 'a+', 0)
os.dup2 (si.fileno (), sys.stdin.fileno ())
os.dup2 (so.fileno (), sys.stdout.fileno ())
os.dup2 (se.fileno (), sys.stderr.fileno ())
# Code im untergeordneten Prozess ausführen
Funzionedemo () # Funktion Demo
Wenn __name__ == '__main__':
if platform.System () == "Linux":
erstellteaemon ()
anders:
os._exit (0)
Implementiert durch Upstart
Die Anwendung kann über Upstart in Systemdienste eingekapselt werden, und das vollständige Beispiel wird hier direkt aufgezeichnet.
1. Schreiben Sie Python -Skripte
Die Codekopie lautet wie folgt:
[Root@Local T27]# Cat Test123.Py
#!/usr/bin/env python
OS importieren, Zeit
Während wahr:
Druckzeit.Time ()
time.sleep (1)
2. Schreiben Sie die Konfigurationsdatei auf den
Die Codekopie lautet wie folgt:
[root@Local T27]# cat /etc/init/miketest.conf
Beschreibung "mein Test"
Autor "[email protected]"
Beginnen Sie mit Runlevel [234]
Stoppen Sie auf Runlevel [0156]
chdir /test /t27
exec /test/t27/test123.py
respawnen
3.. Laden Sie nach oben nach
Die Codekopie lautet wie folgt:
Initctl Reload-Konfiguration
4. Starten Sie den Service
Die Codekopie lautet wie folgt:
[Root@Local T27]# starten Sie Miketest
Miketest Start/Running, Prozess 6635
[root@Local T27]# PS Aux | GREP Test123.Py
Wurzel 6635 0,0 0,0 22448 3716? SS 09:55 0:00 Python /test/t27/test123.py
Wurzel 6677 0.0 0.0 103212 752 Punkte/1 S+ 09:56 0:00 Grep Test123.Py
5. Stop Service
Die Codekopie lautet wie folgt:
[Root@Local T27]# Stop Miketest Stop
Miketest Stop/Warten
[root@Local T27]# PS Aux | GREP Test123.Py
Wurzel 6696 0.0 0.0 103212 752 Punkte/1 S+ 09:56 0:00 Grep Test123.Py
[root@Local T27]#
Implementiert durch Bash -Skript
1. Python -Code
Die Codekopie lautet wie folgt:
[root@lokaler Test]# Cat Test123.Py
#!/usr/bin/env python
OS importieren, Zeit
Während wahr:
Druckzeit.Time ()
time.sleep (1)
2. Schreiben Sie ein Startskript
Die Codekopie lautet wie folgt:
[root@lokaler Test]# cat start.sh
#! /bin/sh
Python test123.py &
3. Starten Sie den Prozess
Die Codekopie lautet wie folgt:
[root@Local Test]#./start.sh
Wenn Sie den Prozess direkt verwenden und starten:
Die Codekopie lautet wie folgt:
Python test123.py &
Schließen Sie das SSH -Terminal direkt zum Ausgang des Prozesses.
Implementiert über Bildschirm, TMUX und andere Methoden
Wenn Sie das Programm vorübergehend ausführen, können Sie das Programm über Bildschirm oder TMUX starten. Hier ist eine Beschreibung, wie TMUX beginnt.
1. Starten Sie TMUX
Geben Sie TMUX in das Terminal ein, um zu beginnen
2. Starten Sie das Programm in TMUX
Führen Sie einfach den folgenden Befehl direkt aus (siehe Skript oben): Python test123.py
3. Schalten Sie das SSH -Terminal direkt aus (z. B. die Schließung des Kittes);
4. Führen Sie nach dem Resshing den folgenden Befehl aus:
Die Codekopie lautet wie folgt:
tmux anhängen
Sie können jetzt sehen, dass das Python -Programm immer noch normal ausgeführt wird.
Im Hintergrund unter Windows laufen
Ich habe es nicht ausführlich in Windows studiert. Die Methode, die ich häufig verwende, besteht darin, die Erweiterung des Python-Skripts an ".pyw" zu ändern und zu doppelklicken, um im Hintergrund auszuführen, ohne Code zu ändern.