So führen Sie den Befehl im Hintergrund unter Linux aus
- 3637
- 593
- Miriam Bauschke
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
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:
- 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
- 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
- Drücken Sie
Strg + a
auf Ihrer Tastatur und dannD
. 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.
- 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
- « Speichern Sie Ihre Passwörter in der Befehlszeile mit GOPass (mit Browser -Plugins!)
- So richten Sie FTP/SFTP -Server und Client auf Almalinux ein »