nohup vs. Screen

39

In der Vergangenheit habe ich nohupgroße Hintergrundjobs ausgeführt, aber ich habe festgestellt, dass viele Leute screenin diesem Zusammenhang verwenden. Bietet es screeneinen funktionalen Vorteil, den ich nicht kenne, oder ist es nur eine Frage der Präferenz?

HalosGhost
quelle

Antworten:

25

Beide haben ihre eigenen Vor- und Nachteile:

nohup:

  1. nohup eignet sich zum Ausführen von Prozessen im Hintergrund, wenn für die Prozesse keine Benutzereingaben erforderlich sind, z. B. für einen Webserver oder einen anderen Serverprozess.
  2. nohup erstellt ein Protokoll im Verzeichnis der Prozessausführung. Der Name der Protokolldatei lautet nohup.out.
  3. Es wird vermieden, dass der Vorgang aufgrund einer Ctrl+ falschen Coder ähnlichen Tastenkombination abgebrochen wird. Nur ein Schutz.
  4. Es wird normalerweise standardmäßig mit der Grundkonfiguration installiert. Keine Notwendigkeit, separat wie Bildschirm zu installieren.
  5. Seine Funktionalität ist sehr spezifisch für das Ausführen eines Jobs im Hintergrund und das Speichern der Ausgabe. Wenig speicherintensiv.

Bildschirm:

  1. Muss separat installiert werden. Sie können nicht zu einem Rechenzentrum gehen oder sich an einer Box anmelden und erwarten, dass ein Bildschirm angezeigt wird.
  2. Gut, um mehrere Terminals zu unterschiedlichen Themen zu verwalten und ihnen Namen zu geben.
  3. Es ist eher ein Terminal-Manager und kein Befehl, einen Prozess für unendliche Zeit wie nohup auszuführen.
  4. Es ist besser geeignet, wenn der Prozess Benutzereingaben erfordert. Wie Installationsskripte, Ja / Nein-Aufforderungen.
  5. Mit Tonnen von Funktionen kommt sein Gedächtnis. Aber einigermaßen sind einige wirklich großartige Features.

@rahmu, ich werde nie raten, ob pid es töten wollen. Seien Sie sicher, bevor Sie jemanden / etwas töten;).

Der beste Weg , in beiden Fällen für Bildschirm und nohup ist: ps -eaf | grep "nohup" | grep "your proc name/keyword".

Verwenden Sie den Bildschirm und überprüfen Sie, was darauf ausgeführt wird.

Zusammenfassend ist festzuhalten, dass es sich um zwei verschiedene Dinge handelt, die mit unterschiedlichen Agenden erstellt wurden, sodass ein Vergleich schwierig ist.

mrtipale
quelle
20

Bildschirm hat eine Menge Funktionen. Es "dämonisiert" nicht nur einen Prozess, sondern ist eher ein Fenstermanager für Terminals.

Es kann verwendet werden, wenn der Prozess zu einem bestimmten Zeitpunkt Eingaben benötigt. Sie können die Ausgabe des Prozesses überprüfen, die Verbindung zu seinem Terminal wiederherstellen, ...

Also nein, es ist nicht nur eine Frage der Präferenz, sie sind überhaupt nicht dasselbe.

Matte
quelle
4
Sie können die Ausgabe auch mit überprüfen nohup [...] > fileName.log 2>&1. Das bedeutet außerdem, dass die Ausgabe nicht verloren geht.
Sardathrion
1
Ich mag diese Beschreibung des Bildschirms: "ein Fenstermanager für Terminals"!
Rickumali
7

screen lässt dich:

  1. Komm zurück zum aktuellen Laufbildschirm, sende Signale, schau wie schnell es geht, schau ob es Fehlermeldungen gibt etc ..
  2. Name verarbeitet mit einem aussagekräftigen Titel. Wenn Sie einen Prozess beenden möchten, müssen Sie die Prozess-ID nicht erraten.
avi
quelle
-2
  1. Prozessfortschritt kann auch nohupdurch Datenbankfelder Debug überprüft werden .
  2. ps ax | grep nohup zeigt Ihnen die ID des Prozesses und Sie können es töten.
  3. nohupist schneller. Der einfache Grund ist, dass es von der Internetverbindung zwischen Ihrem PC und dem Server abhängt. Immer wenn das Internet langsam wird, wird der Prozess auch langsam.
Nikolay
quelle
2
Ich verstehe Punkt 3 nicht. Können Sie das näher erläutern?
Mattdm
1
Punkt 2 ist falsch.
Jiggunjer
# 2 zeigt den Prozess zum Beenden nur an, wenn nur ein Nohup-Prozess ausgeführt wird. Andernfalls wird es mehrere anzeigen. In beiden Fällen ist Punkt 2 nicht ganz falsch.
Anil_M