Wenn ein Shell-Kommando länger dauert, und man möchte sich lieber ausloggen und per Mail benachrichtigt werden, wenn das Kommando durch ist, kann man das so machen:
Die folgenden Zeilen in eine Datei (z.B. endmail.sh)
#!/bin/bash FILE="`tempfile`" echo "From: console@deinserver" > $FILE echo "To: empfaenger@lima-city.de" >> $FILE echo "Subject: Command $1 exited" >> $FILE echo "Command ended with status 0" >> $FILE sendmail -t < $FILE unlink $FILE
Anschließend Auführungsrechte geben mit:
chmod +x endmail.sh
Und dann das Kommando starten:
nohup bash -c 'MEINKOMMANDO && /path/to/endmail.sh beschreibung' &
Nohup startet das Kommando so, dass beim Logout (was früher bei Modem-Verbindungen das auflegen (engl. hangup / nohup = no hangup) war, ignoriert wird, normalerweise wird dann das Kommando abgebrochen.
Das Kommando, welches nohup ausführt, ist eine Bash-Shell, die unser Kommando als Parameter -c mitbekommt. Dort kommt zuerst das Kommando hinein, welches ausgeführt werden soll, und das && hängt ein weiteres hinterher, was aber _nur_ ausgeführt wird, wenn das erste erfolgreich war. Möchte man immer eine Mail bekommen, auch wenn das Kommando nicht erflgreich war (Fehler o.ä.), muss man das && durch ; ersetzen. Eine Beschreibung (ein Wort), worum es sich handelt, kann man auch noch eingeben.
Das & setzt das Programm in den Hintergrund.