Es ist mal wieder Zeit, etwas zum Thema Shell-Scripting zu schreiben.

Problem: Wie erkenne, ich ob ein Script von einem Benutzer oder durch Cron ausgeführt wird ?

Lösung: Wie immer, mindestens 2 🙂

Ansatz 1)
Man setzt in den entsprechenden Crontabs eine Variable (z.B. ISCRON=1) und prüft diese im Script. Das funktioniert natürlich nur, wenn man Kontrolle über die Crontabs hat, was nicht immer der Fall ist.

Ansatz 2)
Man schaut auf eine Variable, die Cron nicht setzt. $TERM ist so eine. Diese wird gesetzt, wenn Sessions auf der Console oder per Telnet/SSH gestartet werden, Cron braucht sie aber schlicht nicht. Das sieht dann z.B. so aus:

if [ “$TERM” = “” ]; then
echo “Hallo Cron”
else
echo “Hallo Mensch”
fi