- 4 sehenswerte Filme diese Woche im Kino! - März 21, 2023
- „Senna“ Netflix-Formel-1-Legenden-Biopic-Serie: Alles, was wir bisher wissen - März 21, 2023
- „Blood and Honey“ aus den Kinos in Hongkong – The Hollywood Reporter - März 21, 2023
[ad_1]
Wenn Sie einen Roboter, eine Sensorplattform oder eine Wetterstation bauen, möchten Sie nicht, dass der Code aufhört zu laufen, wenn Sie die Verbindung zum Terminal trennen, und neinhup ist genau das Richtige für Sie. In diesem How-To lernen wir, wie man es benutzt neinhup über eine Reihe von Beispielen
Es gibt Zeiten, in denen Sie einen Befehl ausführen und ihn auch nach dem Schließen eines Terminalfensters / einer SSH-Sitzung ausführen lassen möchten. Der einfachste Weg ist die Verwendung neinhup (keine Hangups), die alle Befehle oder ausführbaren Skripte ausführen, lange nachdem wir das Terminal geschlossen haben.
Grundlegende Nohup-Verwendung in Linux
In seiner einfachsten Form neinhup kann mit nur einem einzigen Argument verwendet werden, dem Namen des Skripts / Befehls, den wir ausführen möchten. Zum Beispiel, wenn wir ein Bash-Skript aufgerufen hätten test.sh wir könnten es so laufen lassen.
nohup ./test.sh
Wenn das Skript / der Befehl eine Standardausgabe erzeugt, wird in diese Ausgabe geschrieben nohup.out und nicht das Endgerät. Um die Ausgabe zu überprüfen, können wir verwenden Schwanz um die an der Datei vorgenommenen Aktualisierungen zu verfolgen.
tail -f nohup.out
Ein Beispiel für die Verwendung von Nohup
Wir haben ein einfaches Bash-Skript erstellt, das jede Sekunde eine Nachricht auf dem Bildschirm ausgibt und den in der Variablen gespeicherten Wert aktualisiert n. Hier ist der Code für diese Datei namens test.sh.
#!/bin/bash
n=0
while true
do
echo "I keep counting"
echo $n
n=$((n+1))
sleep 1
done
1. Öffnen Sie einen Texteditor und fügen Sie den Beispielcode ein.
2. Speichern Sie die Datei als test.sh in Ihrem Home-Verzeichnis.
3. Öffnen Sie ein Terminal und setzen Sie test.sh auf ausführbar.
chmod +x test.sh
4. Testen Sie, ob test.sh ausführbar ist, indem Sie den Befehl ausführen. Wenn erfolgreich, drücken Sie STRG + C, um zu stoppen.
5. Verwenden Sie nohup und verwenden Sie test.sh als Argument. Beachten Sie, dass wir ./test.sh verwenden müssen, um dem System mitzuteilen, wo das Skript zu finden ist. Die einzige Ausgabe im Terminal ist „ nohup: Eingabe ignorieren und Ausgabe an ‚nohup.out‘ anhängen“
nohup ./test.sh
6. Öffnen Sie ein anderes Terminal und verwenden Sie den Befehl tail, um die an der Datei nohup.out vorgenommenen Aktualisierungen zu verfolgen. Sie sollten „Ich zähle weiter“ sehen und eine Zahl, die aufwärts zählt, scrollen Sie über den Bildschirm.
tail -f nohup.out
7. Schließen Sie das Terminal mit nohup. Wenn Sie aufgefordert werden, das Schließen zu bestätigen, wählen Sie Ja. Das Terminal mit tail -f läuft weiter und zeigt an, dass nohup das Skript immer noch ausführt. Wir haben dies bestätigt, indem wir htop ausgeführt und nach test.sh gesucht haben.
Umleitung der Nohup-Ausgabe
Nohup hat eine Einschränkung. Standardmäßig schreibt es an nohup.outwenn wir also zwei Instanzen von nohup verwenden würden, würden sie beide in dieselbe Datei schreiben.
Um dies zu umgehen, können wir die Umleitung verwenden, um die Ausgabe an eine andere Datei zu senden. Also lasst uns verwenden neinhup zusammen mit Klingeln Befehl, einen der DNS-Server von Google zu pingen und die Ausgabe in GooglePing.txt zu speichern.
1. Öffnen Sie ein Terminalfenster.
2. Verwenden Sie mit dem Befehl nohup ping 8.8.8.8 als Argument. Dies pingt jede Sekunde einen der DNS-Server von Google an, ein nützlicher Verbindungstest.
nohup ping 8.8.8.8 > GooglePing.txt
3. Öffnen Sie ein weiteres Terminal und verwenden Sie tail, um der Ausgabe von GooglePing.txt zu folgen. Drücken Sie STRG+C, wenn Sie bereit sind, das Tailing der Ausgabe zu stoppen.
nohup ping 8.8.8.8 > GooglePing.txt
4. Drücken Sie im Nohup-Terminal STRG+C, um den Ping-Befehl zu stoppen.
Ausführen eines Nohup-Befehls im Hintergrund
Wann neinhup läuft, übernimmt es die Kontrolle über das Terminal und deaktiviert es effektiv. Aber mit etwas mehr Linux-Magie können wir den Befehl in den Hintergrund rücken. Indem wir den Befehl in den Hintergrund stellen, können wir das Terminal weiter verwenden.
Wir werden das Ping-Beispiel zur Veranschaulichung wiederverwenden.
1. Öffnen Sie ein Terminalfenster.
2. Verwenden Sie bei Verwendung des nohup-Befehls ping 8.8.8.8 als Argument und fügen Sie dann & hinzu, um den Befehl in den Hintergrund zu senden. Beachten Sie, dass die Ausgabe des Ausführens dieses Befehls eine Prozess-ID (PID) ist. Das brauchen wir später.
nohup ping 8.8.8.8 > GooglePing.txt &
3. Öffnen Sie ein weiteres Terminal und verwenden Sie tail, um der Ausgabe von GooglePing.txt zu folgen.
4. Drücken Sie im Nohup-Terminal die Eingabetaste, um zur Eingabeaufforderung zurückzukehren. Der Befehl nohup gibt uns die Kontrolle zurück, aber die Eingabeaufforderung ist nicht vorhanden. Durch Drücken der Eingabetaste können wir die richtige Terminal-Eingabeaufforderung sehen.
5. Verwenden Sie den Befehl kill zusammen mit der Prozess-ID, um den Hintergrundprozess zu beenden. Wenn der Prozess nicht mehr benötigt wird, empfiehlt es sich, ihn zu beenden, um Ressourcen zu sparen. Wenn wir dieses Beispiel laufen lassen würden, würde es den DNS-Server von Google kontinuierlich pingen, bis der Computer ausgeschaltet wird.
kill 28365
[ad_2]