So führen Sie den Befehl im Hintergrund unter Linux aus

So führen Sie den Befehl im Hintergrund unter Linux aus

Das Ausführen von Befehlen oder Prozessen im Hintergrund eines Linux -Systems wird zu einer gemeinsamen Aufgabe, wenn Sie Ihr Terminal oder die Trennung von einer SSH -Sitzung frei machen müssen. Dies gilt insbesondere für Befehle, die lange ausgeführt werden, entweder zum Hören auf Ereignisse oder ihre lange Aufgabe zu erledigen.

Wir haben einige Optionen auf Linux, um Befehle im Hintergrund auszuführen. In diesem Handbuch behandeln wir einige verschiedene Methoden und zeigen Ihnen, wie Sie sie anhand von Beispielen verwenden können.

In diesem Tutorial lernen Sie:

  • So stecken Sie einen laufenden Befehl in den Hintergrund
  • So starten Sie einen Befehl im Hintergrund
  • Wie man das Terminal schließt und den Hintergrundauftrag läuft
  • So verwenden Sie den Befehl screen
Einen Prozess in den Hintergrund stellen und in den Vordergrund verschieben Softwareanforderungen und Linux -Befehlszeilenkonventionen
Kategorie Anforderungen, Konventionen oder Softwareversion verwendet
System Jede Linux -Distribution
Software Standard -Linux -Dienstprogramme, Bildschirm
Andere Privilegierter Zugriff auf Ihr Linux -System als Root oder über die sudo Befehl.
Konventionen # - erfordert, dass gegebene Linux -Befehle mit Root -Berechtigungen entweder direkt als Stammbenutzer oder mit Verwendung von ausgeführt werden können sudo Befehl
$ - Erfordert, dass die angegebenen Linux-Befehle als regelmäßiger nicht privilegierter Benutzer ausgeführt werden können

Legen Sie einen laufenden Befehl in den Hintergrund

Wenn Sie einen Befehl ausführen, der für lange Zeit weiter ausgeführt werden möchte, ist das Problem, dass Ihr aktuelles Terminal dem Befehl gewidmet ist. Sie können das Terminal nicht weiter verwenden, und Sie können es auch nicht schließen, da dies den Befehl beendet, der derzeit ausgeführt wird.

Wenn Sie einen Befehl ausführen und ihn in den Hintergrund stellen müssen, um Ihr Terminal freizugeben, können Sie drücken Strg + z auf Ihrer Tastatur, um den Prozess zu stoppen. Hier ist ein Beispiel.

$ Sleep 10000 ^Z [1]+ Störungen der Schlaf 10000 

Verwenden Sie das, um eine Liste von Jobs im Hintergrund zu sehen, die Arbeitsplätze Befehl.

$ job 


Um einen Job zurück in den Vordergrund zu bringen, können wir die verwenden fg Befehl.

$ fg 

Wenn wir mehrere Anstiegsjobs hätten, müssten wir ein prozentuales Zeichen verwenden und den Job -ID angeben, um den entsprechenden Vordergrund zurückzubringen.

$ fg %1 

Großartig, jetzt können wir Prozesse in den Hintergrund stecken und sie zurückbringen, wenn wir sie später wollen. Aber was ist, wenn wir möchten, dass der Befehl weiter ausführt, während er sich im Hintergrund befindet? Dafür können wir die verwenden BG Befehl, gefolgt von einem Verstärker und der Job -ID. Der folgende Befehl macht unseren gestoppten Job -Lebenslauf, während wir ihn im Hintergrund behalten.

$ BG %1 [1]+ Schlaf 10000 & 

Jetzt können wir sehen, dass sich der Prozess noch im Hintergrund befindet, aber er zeigt einen Status des „Laufens“ anstelle von „Stopp.”

$ jobs -l [1]+ 1650 Rennen Schlaf 10000 

Es gibt noch eine Sache zu beachten. Sie können Ihr aktuelles Terminal nicht schließen, oder diese Hintergrundjobs werden schließen. Wenn Sie Ihr Terminal schließen müssen und nicht möchten, dass diese Befehle aufhören, müssen Sie die Arbeit (en) „ablehnen“. Wenn Sie nur einen Job im Hintergrund haben, funktioniert der folgende Befehl:

$ discond 

Wenn Sie mehrere haben, müssen Sie die Job -ID angeben.

$ discond %1 

Sie werden den Job in Ihrer Jobtabelle nicht mehr sehen, wenn Sie die ausführen Arbeitsplätze Befehl. Jetzt ist es sicher, das Terminal zu schließen, und Ihr Befehl wird weiter ausgeführt.

$ Jobs -l 

Sie können Ihren Laufbefehl immer noch im Auge behalten, indem Sie den PS -Befehl verwenden.

$ PS Aux | Grep Sleep Linuxco+ 1650 0.0 0.0 8084 524 Punkte/0 S 12:27 0:00 Schlaf 10000 

Und wenn Sie den Befehl ausführen möchten, können Sie den Befehl Kill verwenden und die Prozess -ID angeben.

$ Kill 1650 

Starten Sie einen Befehl im Hintergrund

Jetzt haben wir gesehen, wie man einen Laufprozess in den Hintergrund steckt und sich später erinnert. Wir haben aber auch die Möglichkeit, den Befehl am Anfang im Hintergrund zu starten. Alles, was Sie tun müssen, ist am Ende eines Linux -Befehls einen Verstärker und ein Verstärker zu setzen.

$ Sleep 10000 & [1] 1900 


Wie zuvor können wir den Auftrag mit dem aufgelistet sehen Arbeitsplätze Befehl. Diesmal läuft der Job jedoch bereits und wir mussten ihn nicht manuell im Hintergrund starten.

$ jobs -l [1]+ 1900 Rennen Schlaf 10000 & 

Schließen Sie das Terminal und halten Sie den Hintergrundauftrag laufen

Wir haben bereits in einem früheren Beispiel gesehen, wie wir die verwenden können verleugnen Befehl, um sicherzustellen, dass der Befehl weiter läuft, nachdem wir unser Terminal geschlossen haben. Eine andere Option ist die nohup Befehl.

Nohup sagt einen Prozess, um irgendwelche zu ignorieren SEUFZEND (Hangup) signalisiert, dass es empfängt. Das Seufzersignal wird an einen Hintergrundjob gesendet, wenn das aktuelle Terminal geschlossen ist. Somit können wir einen Job im Hintergrund haben, das Terminal schließen und immer noch sehen, wie es im Hintergrund läuft. Hier ist ein Beispiel.

$ NoHup Sleep 10000 & [1] 1908 Nohup: Eingabe ignorieren und die Ausgabe an 'Nohup anhängen.aus' 

Wir haben das Terminal geschlossen und wiedereröffnet und dann den folgenden Befehl ausgeführt, der zeigt, dass der Befehl noch ausgeführt wird.

$ PS Aux | Grep Sleep Linuxco+ 1908 0.0 0.0 8084 524 ? S 13:05 0:00 Schlaf 10000 

Verwenden des Bildschirmbefehls

Bisher haben wir die Standard -Linux -Methoden zum Ausführen von Befehlen im Hintergrund abgedeckt. Es gibt jedoch auch zusätzliche Softwarepakete, die verwendet werden können. Das vielleicht beliebteste wäre der Bildschirmbefehl.

Sie können den oben genannten Link für Installationsanweisungen und detaillierte Verwendung sehen, aber das Kern davon lautet wie folgt:

  1. Leiten Sie die Bildschirm Befehl zum Starten eines neuen "Bildschirms". Optional fügen Sie die ein -S Option, ihm einen Namen zu geben.
    $ screen -s mycommand 
  2. Führen Sie in der neuen Bildschirmsitzung den Befehl oder Skript aus, den Sie in den Hintergrund einfügen möchten.
    $/path/to/myScript.Sch 
  3. Drücken Sie Strg + a auf Ihrer Tastatur und dann D. Dadurch wird der Bildschirm abgenommen, dann können Sie das Terminal, den Abmelden Ihrer SSH -Sitzung usw. schließen, und der Bildschirm bleibt bestehen. Verwenden Sie diesen Befehl, um eine Liste von Bildschirmen anzuzeigen.
    $ screen -ls Es gibt einen Bildschirm auf: 2741.MyCommand (04/08/2021 01:13:24 PM) (abgetragen) 1 Socket in/run/screen/s-linuxconfig. 


  4. Verwenden Sie den folgenden Befehl, um die folgende Nummer mit der Prozess -ID zu ersetzen.
    $ screen -r 2741 

Gedanken schließen

In diesem Handbuch haben wir verschiedene Methoden zum Ausführen eines Befehls im Hintergrund unter Linux gesehen. Dies umfasste Standard -Linux -Dienstprogramme und den Befehl screen. Wir haben auch gesehen, wie man den Hintergrundprozess verwaltet, indem wir Jobs in den Vordergrund verschieben, Bildschirme wiederholen und Hintergrundprozesse töten.

Verwandte Linux -Tutorials:

  • Dinge zu installieren auf Ubuntu 20.04
  • Dinge zu tun nach der Installation Ubuntu 20.04 fokale Fossa Linux
  • Eine Einführung in Linux -Automatisierung, Tools und Techniken
  • Linux -Befehle: Top 20 wichtigste Befehle, die Sie benötigen, um…
  • So behandeln Sie ACPI -Ereignisse unter Linux
  • Grundlegende Linux -Befehle
  • Dinge zu tun nach der Installation Ubuntu 22.04 Jammy Quallen…
  • Installieren Sie Arch Linux in VMware Workstation
  • Linux -Download
  • Dinge zu installieren auf Ubuntu 22.04