Archiv für den Monat: August 2013

nohup – Programme so ausführen, dass sie beim Logout (ssh etc.) nicht beendet werden

Wenn ein Programm mit dem nohup-Befehl gestartet wird, so ignoriert es das HUP-Signal, was beim Ausloggen gesendet wird. Das Programm läuft weiter.

Jetzt mal an einem Server anmelden.
ssh 192.168.69.23 -l cloud

… und ein kleines Script zum testen erstellt (schreibt alle 2 Sekunden Datum und Zeit in die Datei datum.txt).

touch script.sh
nano script.sh

#!/bin/bash
while true
do
  sleep 2
  date
done >> datum.txt

Script starten und Konsole für weitere Befehle auf lassen
nohup ./script.sh &

ab jetzt wird Datum/Zeit in datum.txt geschrieben, auch wenn man sich abmeldet.

datum.txt mit cat anzeigen lassen
cat datum.txt

um das script zu stoppen, sollte man kill nutzen
kill prozessnummer

screen – Programme so ausführen, dass sie beim Logout (ssh etc.) nicht beendet werden

Screen macht es möglch mehrere Terminalfenster zu erstellen. Diese können wieder bis 10 virtuelle Konsolen enthalten. In den Konsolen können Programme gestartet werden, die nach der Lösung der Sitzung vom Terminalfenster (bzw. Logout) erhalten bleiben.

Wenn screen nicht installiert sein sollte, kann man dieses nachholen:
sudo apt-get install screen

Jetzt kann man schon screen starten:
screen

Jetzt einfach “weiterblättern”, man befindet sich schon in der screen-Sitzung! Die kann man erkennen, indem man sich einfach mal alle laufende Sitzungen mit Namen anzeigen lässt.
screen -ls

screen -ls

screen -ls

Der Name der Sitzung wurde automatisch generiert, was nicht immer angenehm ist. Den Namen kann man selbst vergeben. Also erstmal die Sitzung beenden!
[Strg] + [D]

screen beendet

screen beendet

Jetzt mal an einem Server anmelden.
ssh 192.168.69.23 -l cloud

screen3, an server anmelden

Screen starten mit Sitzungsnamen (fern1) …
screen -S fern1

… und ein kleines Script zum testen erstellt (schreibt alle 2 Sekunden Datum und Zeit in die Datei datum.txt).

touch script.sh
nano script.sh

#!/bin/bash
while true
do
  sleep 2
  date
done >> datum.txt

Script starten und Konsole für weitere Befehle auf lassen
./script.sh &

datum.txt mit cat anzeigen lassen
cat datum.txt

screen4, script datum

Vom Server trennen.
exit

screen5, exit

Wieder auf den Server drauf.
ssh 192.168.69.23 -l cloud

Sitzungen anzeigen lassen.
screen -ls

Verbindung zur Sitzung wieder aufnahemen.
screen -r fern1

screen7, wieder drauf

datum.txt mit cat anzeigen lassen
cat datum.txt

screen8, datum.txt

Alles funzt. Script killen.
kill prozessnummer

screen9, kill