Alternate 5

Abfragen, ob ein Shell-Skript manuell oder per cron gestartet wurde?

-Andrea-

Cadet 1st Year
Registriert
Okt. 2025
Beiträge
8
Guten Tag,

wie kann ich in einem Shell-Srkipt herausfinden, ob es manuell oder per cron gestartet wurde?

Davon abhängig möchte ich den Log-Level einiger Befehle setzen.

LG
Andrea
 
Wenn per Cron dann steht ein Eintrag z.B. im Syslog oder Journal.

Im Shell-Srkipt selbst wirst du dazu nichts finden. Einfach zwei Skripte mit jeweils angepassten Parameter erstellen.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: madmax2010
du könntest denke ich im Script eventuell einfach tty ausführen - ich würde mal stark vermuten, dass hier bei Aufruf durch cron ein leerer Return kommen dürfte 🤔

Also etwas wie
Code:
if tty; then
    log_level=bash
else
    log_level=cron
fi
sollte meiner Meinung nach funktionieren. Auch wenn das sicher nicht 100% robust ist und auch Aufrufe über andere Quellen kein TTY haben können.
 
  • Gefällt mir
Reaktionen: madmax2010
Dein Script um Parameter für Loglevel erweitern und dann im Cron-Aufruf entsprechend übergeben. Und wenn man es händisch (ohne Parameter) startet, einen DefaultLogLevel definieren.
 
  • Gefällt mir
Reaktionen: NJay, -Andrea-, Termy und 2 andere
Ein bestimmtes oder system weit mehrere / alle generell?
 
Die KI weiß auch einige Möglichkeiten. Wie schon vorgeschlagen Terminal abfragen oder auf Umgebungsvariablen die cron setzt prüfen, usw...
 
  • Gefällt mir
Reaktionen: kieleich und -Andrea-
kartoffelpü schrieb:
Dein Script um Parameter für Loglevel erweitern und dann im Cron-Aufruf entsprechend übergeben. Und wenn man es händisch (ohne Parameter) startet, einen DefaultLogLevel definieren.
Danke, funktioniert. Hier mein Test, der auch funktioniert:


if [[ -v 1 ]]; then
echo "Die Variable \$1 existiert."

if [ $1 == "--quiet" ]
then
echo "quiet"
else
echo "nicht quiet"
fi
#else
# echo "Die Variable \$1 existiert nicht."
fi




LG
Andrea
 
JumpingCat schrieb:
Das mit den Links bevorzugst du für deine Skripte? Welchen Vorteil bietet das?
Kommt drauf an, meine Scripte@Work sind meistens pervers lange Oneliner aus der history, mit großen $HISTSIZE.
Und da meine Scripte meistens aus vielen hintereinander gehängten Pipes bestehen wo die Commandos dazwischen im wesentlichen statemaschines sind juckt das auch nicht so wenn das alles in einer Zeile steht.

Ein großen Vorteil zieht z.b busybox aus dieser Methode, ein anderer Vorteil ist das alles in einer Datei ist.

-Andrea- schrieb:
Danke, funktioniert. Hier mein Test, der auch funktioniert:
Am besten gleich getopts nutzen:

https://openbook.rheinwerk-verlag.de/shell_programmierung/shell_005_007.htm
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: JumpingCat
Zurück
Oben