Ausführen von Prozessen nach dem Abmelden
Manchmal müssen Sie einen Prozess auch nach dem Abmelden vom Terminal weiterlaufen lassen. Der nohup
-Befehl ermöglicht es Ihnen, einen Befehl auszuführen, der auch nach dem Beenden der Shell weiterläuft.
Lassen Sie uns ein Skript erstellen, das lange läuft:
cd ~/project
nano persistent-task.sh
Fügen Sie den folgenden Inhalt hinzu:
#!/bin/bash
## This script runs for a very long time
echo "Starting persistent task at $(date)" > persistent-output.log
for i in {1..100}; do
echo "Iteration $i at $(date)" >> persistent-output.log
sleep 10
done
echo "Persistent task completed at $(date)" >> persistent-output.log
Speichern Sie die Datei und verlassen Sie nano, und machen Sie dann das Skript ausführbar:
chmod +x persistent-task.sh
Führen Sie es nun mit nohup
aus und legen Sie es in den Hintergrund:
nohup ./persistent-task.sh &
Sie sollten eine Ausgabe ähnlich der folgenden sehen:
[1] 5678
nohup: ignoring input and appending output to 'nohup.out'
Das bedeutet, dass der Prozess im Hintergrund läuft und auch nach dem Abmelden weiterläuft. Die Ausgabe, die normalerweise in das Terminal geschrieben würde, wird in eine Datei namens nohup.out
umgeleitet.
Sie können überprüfen, ob der Prozess läuft:
ps aux | grep persistent-task.sh
Und Sie können die Ausgabedatei untersuchen:
cat persistent-output.log
Die Ausgabe zeigt die Startzeit und die Iterationen der dauerhaften Aufgabe.
Der disown-Befehl
Eine andere Möglichkeit, Prozesse nach dem Abmelden weiterlaufen zu lassen, ist die Verwendung des disown
-Befehls. Zunächst starten Sie einen Prozess im Hintergrund:
cd ~/project
./persistent-task.sh &
Verwenden Sie dann disown
, um ihn vom Terminal zu trennen:
disown %1
Jetzt wird dieser Prozess auch nach dem Schließen des Terminals weiterlaufen.
Diese Befehle sind unerlässlich, wenn Sie Aufgaben auf Remote-Servern ausführen, bei denen Prozesse nach dem Trennen der Verbindung weiterlaufen müssen.