PuTTY oder ANDERE - Ausführen des Befehls auch nach Beenden von PuTTY


13

Ich habe ein paar Befehle, die ich ausführen muss. Diese Befehle müssen kontinuierlich ausgeführt werden, auch nachdem ich meine Schnittstelle verlassen habe. Wenn ich Zugriff auf die Linux-GUI habe, führe ich Folgendes aus:

cd /home/testuser/Scripts*
xterm -hold -T "Background_Script1" -e  "service1-start.sh" &
sleep 10
xterm -hold -T "Background_Script2" -e "service2-start.sh" &

Jede Hilfe wird sehr geschätzt.



Gibt es einen Grund, warum Sie diese Dienste nicht als Daemons betreiben?
SevenSidedDie

Sind die Befehle als Dienste gedacht, die mit einer Betriebszeit von nahezu 100% "für immer" ausgeführt werden sollen, oder eine langwierige Verarbeitungsaufgabe, die nach einiger Zeit abgeschlossen werden soll? Alle Antworten werden in beiden Fällen "funktionieren", die richtige Empfehlung wird jedoch unterschiedlich sein.
Peteris

Welche spezielle Linux-Distribution verwenden Sie? Ich habe das rennen gefunden set -m; macht es so, dass meine Skripte weiterlaufen, nachdem ich mich bei CentOS und RHEL abgemeldet habe.
ArtOfWarfare

Antworten:


33

Versuchen

nohup Background_ScriptX & amp;

nohup stellt sicher, dass ein Prozess nicht beendet wird, wenn ein Terminal geschlossen wird. Die & amp; Symbol drückt den Prozess in den Hintergrund.

Hoffe das war hilfreich.


nohup macht definitiv den Job
Pitto

Freut mich zu helfen.
Eamonn Travers

15
Bildschirm hat einen klaren Vorteil gegenüber nohup : nohup erlaubt es nicht, zu einem laufenden Befehl zurückzukehren (z. B. am nächsten Morgen, um die Standardausgabe zu lesen und dann zu beenden, usw.) Bildschirm können Sie genau das tun.
Andreas F

1
nohup sendet die Ausgabe an eine Datei, wo sie verarbeitet werden kann.
Brian Knoblauch

Für diejenigen, die neu sind nohup, es ist im Grunde "no hangup" - mit nohup, dem hangup ( HUP ) Signal wird ignoriert.
Dan7119

20

Wenn Sie die Ausgabe zu einem späteren Zeitpunkt lesen möchten, können Sie verwenden screen:

screen -d -m my_command

Dadurch erhalten Sie ein separates Terminal, zu dem Sie später eine Verbindung herstellen können ( screen -r ), um die Ausgabe von stdout / stderr zu lesen.


2
+1. Zum einen, wenn Sie Ihr Terminal schließen (z. B. Putty) und dann erneut öffnen und den Bildschirm wieder anbringen ( screen -r ) Sie haben auch die gesamte Ausgabe Ihres Programms und Sie hätten sonst "versäumt". Außerdem kann der Bildschirm so viele erstaunliche Dinge tun, z. :)
Alberto Santini

6

Eine andere Option, wenn nohup Befehl ist nicht verfügbar, ist die Verwendung der verleugnen Befehl.

Zuerst können Sie Ihre Hintergrundaufgaben anzeigen, indem Sie sie ausführen jobs im Terminal. Dort erhalten Sie die Auftragsnummer.

Jetzt lauf einfach disown %[job number] Der Prozess wird vom aktuellen Terminal getrennt und bleibt beim Abmelden erhalten.

Randbemerkung: Stellen Sie sicher, dass Sie die richtige Frage stellen. Wenn Sie tatsächliche Dienste ausführen, während Sie in Ihrem Beispiel darauf hinweisen, möchten Sie möglicherweise prüfen, wie ein Dämon in einem Betriebssystem Ihrer Wahl erstellt wird. Dadurch wird sichergestellt, dass der Prozess nach einem Neustart noch ausgeführt wird und mit anderen Diensten konsistenter ist.

Hoffe das hilft.


3

Schon seit screen wurde bereits erwähnt: Es gibt andere Terminal-Multiplexer. ich mag tmux sehr viel, siehe z.B. diese andere Superuser-Frage, TMV vs Bildschirm zum Vergleich.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.