Ich habe einen Python-basierten Server, den ich vom Terminal aus starte. Diese spezielle Instanz des Terminals gibt dann dem Programm die Kontrolle und das Programm verwendet es als eine Art Protokollierungsfenster, bis es geschlossen wird. Ist das normal, oder sollte ich irgendwie versuchen, das Programm auf eine andere Weise zu starten, in der es einfach als aktiver Prozess angezeigt wird? Wenn ich das Terminal schließe, von dem aus ich das Programm gestartet habe, stirbt das Programm damit.
Vielen Dank
command-line
python
services
U2ros
quelle
quelle
Antworten:
Sogar alte Bash verwendet &, um Prozesse in den Hintergrund zu senden, aber es gibt auch einige andere Möglichkeiten. Aber grundlegende zwei sind diese:
Einige andere nützliche Befehle:
quelle
Verwandle es in einen Daemon (Dienst)
daemon --name="yourservicename" --output=log.txt sh yourscript.sh
quelle
Bei Verwendung von
&
wird das Programm im Hintergrund ausgeführt, anstatt die Shell zu blockieren, bis das Programm endet.quelle
dixon@dixon-vaio:~$ nautilus & [1] 11835
. Es gibt die Prozess-ID zurück und Sie erhalten eine neue Shell-Eingabeaufforderung. Überprüfen Sie auch Folgendes : http://unix.stackexchange.com/questions/3886/difference-between-nohup-disown-and .Sie können auch verwenden:
Hier ist das Skript init.d zum Starten und Stoppen eines Programms im Hintergrund.
quelle
Vom Terminal aus
screen
können Sie auch den Befehl ausführen oder ihn verfolgen&
. Einfache Möglichkeit, kontinuierliche Prozesse auszuführen.quelle
&
um den Hintergrund zu benutzen , ist der Prozess in diesem Fall meiner Meinung nach zu wenig. OP gibt an, dass sein Server sich so auf stdout anmeldet, wobei&
sein Terminal mit Ausgabe überfüllt sein wird. Da OP das Schließen des Terminals erwähnt , kann OP den Vorgang nicht erneut in den Vordergrund stellen und alle Protokollausgaben gehen verloren. Besser zumindest, es in eine Protokolldatei umzuleiten oder beimscreen
Setup zu bleiben - aber dann erklären Siescreen
OP bitte die Grundlagen (trennen / anhängen / etc)