So starten Sie den Befehl Linux im Hintergrund- und Abnahmeprozess im Terminal

So starten Sie den Befehl Linux im Hintergrund- und Abnahmeprozess im Terminal

In diesem Leitfaden werden wir ein einfaches und dennoch wichtiges Konzept in der Prozessbearbeitung in einem Linux -System ans Licht bringen.

Wenn ein Prozess mit einem Terminal verbunden ist, können zwei Probleme auftreten:

  1. Ihr Steuerterminal ist mit so vielen Ausgabedaten und Fehler-/Diagnosemeldungen gefüllt.
  2. Für den Fall, dass das Terminal geschlossen ist, wird das Verfahren zusammen mit seinen Kinderprozessen beendet.

Um mit diesen beiden Problemen umzugehen, müssen Sie einen Prozess vollständig von einem kontrollierenden Terminal abnehmen. Bevor wir uns tatsächlich bewegen, um das Problem zu lösen.

So starten Sie im Hintergrund einen Linux -Prozess oder -befehl

Wenn sich bereits ein Prozess in der Ausführung befindet, wie z. B. das folgende TAR -Befehlsbeispiel, drücken Sie einfach Strg+z Um es zu stoppen und dann den Befehl einzugeben BG mit seiner Ausführung im Hintergrund als Job fortzusetzen.

Sie können alle Ihre Hintergrundjobs durch Eingabe anzeigen Arbeitsplätze. Es ist jedoch sein Stdin, Stdout, Stderr sind immer noch mit dem Terminal verbunden.

$ tar -czf Haus.Teer.gz . $ bg $ Jobs 
Führen Sie den Befehl Linux im Hintergrund aus

Sie können einen Prozess auch direkt vom Hintergrund über den Ampersanden ausführen, & Zeichen.

$ tar -czf Haus.Teer.gz . & $ Jobs 
Starten Sie den Linux -Prozess im Hintergrund

Schauen Sie sich das Beispiel unten an, obwohl der TAR -Befehl als Hintergrundjob gestartet wurde, eine Fehlermeldung weiterhin an das Terminal gesendet wurde, was bedeutet.

$ tar -czf Haus.Teer.gz . & $ Jobs 
Linux -Prozess, der in Hintergrundnachricht ausgeführt wird

Halten Sie Linux -Prozesse nach dem Verlassen des Terminals am Laufen

Wir werden verwenden verleugnen Der Befehl, es wird verwendet, nachdem der A -Prozess gestartet und in den Hintergrund eingebracht wurde. Es wird gearbeitet, einen Shell -Job aus den aktiven Listenjobs der Shell zu entfernen. Daher werden Sie nicht verwenden fg, BG Befehle zu diesem bestimmten Job noch.

Wenn Sie das kontrollierende Terminal schließen, hängt oder senden Sie außerdem keine Aufgabe SEUFZEND zu jedem Kinderjobs.

Vorgeschlagene Lesen: 5 Möglichkeiten, Remote -SSH -Sitzungen und -prozesse laufen zu lassen

Schauen wir uns das folgende Beispiel der Verwendung an drucken Bash-integrierte Funktion.

$ sudo rsync templates/*/var/www/html/file/& $ Jobs $ disuner -H %1 $ Jobs 
Halten Sie den Linux -Prozess nach dem Schließen des Terminals fort

Sie können auch verwenden nohup Befehl, mit dem ein Prozess auch im Hintergrund ausgeführt wird, wenn ein Benutzer eine Shell verlässt.

$ nohup tar -czf iso.Teer.GZ -Vorlagen/* & $ Jobs 
Legen Sie den Linux -Prozess nach dem Schließen der Shell in den Hintergrund ein

Lösen Sie ein Linux -Prozess von der Steuerung des Terminals

Um einen Prozess vollständig von einem kontrollierenden Terminal zu lösen, verwenden Sie daher das unten stehende Befehlsformat. Dies ist für die grafische Benutzeroberfläche effektiver (effektiver (GUI) Anwendungen wie Firefox:

$ Firefox /Dev /Null & 

Unter Linux, /dev/null ist eine spezielle Gerätedatei, die alle darauf geschriebenen Daten in dem obigen Befehl ausschreibt, die Eingabe ausgelesen wird und die Ausgabe an gesendet wird /dev/null.

Vorgeschlagene Lesen: 10 Beispiele für Bildschirmbefehlsbeispiele zum Abnehmen der Terminalsitzungen

Als abschließende Bemerkung, vorausgesetzt, ein Prozess ist mit einem steuerlichen Terminal als Benutzer verbunden, sehen Sie mehrere Ausgabestellen der Prozessdaten sowie Fehlermeldungen auf Ihrem Terminal. Wenn Sie das A -kontrollierende Terminal schließen, werden Ihr Prozess und Ihre Kinderprozesse beendet.

Wichtig ist, dass Sie uns für Fragen oder Bemerkungen zu diesem Thema mit dem folgenden Kommentarformular verwenden.