Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Abfragen, ob ein Shell-Skript manuell oder per cron gestartet wurde?
- Ersteller -Andrea-
- Erstellt am
du könntest denke ich im Script eventuell einfach
Also etwas wie
sollte meiner Meinung nach funktionieren. Auch wenn das sicher nicht 100% robust ist und auch Aufrufe über andere Quellen kein TTY haben können.
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
- Registriert
- Juni 2018
- Beiträge
- 8.617
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.
Wenns Bash ist, dann müsste eigentlich
gehen denk ich
https://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html
Code:
if [ -t 0]; then ...
https://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html
madmax2010
Fleet Admiral
- Registriert
- Juni 2018
- Beiträge
- 37.924
Ein bestimmtes oder system weit mehrere / alle generell?
Luftgucker
Captain
- Registriert
- Mai 2021
- Beiträge
- 3.923
Die KI weiß auch einige Möglichkeiten. Wie schon vorgeschlagen Terminal abfragen oder auf Umgebungsvariablen die cron setzt prüfen, usw...
- Registriert
- Juni 2005
- Beiträge
- 2.628
Interactive shell check:
https://www.cyberciti.biz/faq/linux-unix-bash-check-interactive-shell/
https://www.cyberciti.biz/faq/linux-unix-bash-check-interactive-shell/
Danke, funktioniert. Hier mein Test, der auch funktioniert: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.
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."fiLG
Andrea
foofoobar
Vice Admiral
- Registriert
- Dez. 2011
- Beiträge
- 6.146
Damit sollte sich das sicher bestimmen lassen: (not tested)
Oder auch hier:
https://man7.org/linux/man-pages/man1/bash.1.htmlPPID The process ID of the shell's parent. This variable is readonly.
Oder auch hier:
https://man7.org/linux/man-pages/man5/proc_pid_status.5.htmlPPid PID of parent process.
JumpingCat
Vice Admiral
- Registriert
- Juli 2023
- Beiträge
- 6.662
Oder ein wrapper Skript drumherum was THISHASBEENSTARTEDBYCRON setzt.
foofoobar
Vice Admiral
- Registriert
- Dez. 2011
- Beiträge
- 6.146
@JumpingCat Das Wrapper-Script kann man sich schenken wenn man das script auf einen anderen Namen linkt und $0 abprüft:
Code:
~/ee$ cat rr.sh
#!/bin/bash
if [[ "$0" =~ RR.sh$ ]]; then
echo "RR"
fi
if [[ "$0" =~ rr.sh$ ]]; then
echo "rr"
fi
~/ee$ ln rr.sh RR.sh
~/ee$ ./rr.sh
rr
~/ee$ ./RR.sh
RR
~/ee$ ls -i
39330109 rr.sh 39330109 RR.sh
~/ee$
JumpingCat
Vice Admiral
- Registriert
- Juli 2023
- Beiträge
- 6.662
@foofoobar Man kann vieles machen. Das mit den Links bevorzugst du für deine Skripte? Welchen Vorteil bietet das?
foofoobar
Vice Admiral
- Registriert
- Dez. 2011
- Beiträge
- 6.146
Kommt drauf an, meine Scripte@Work sind meistens pervers lange Oneliner aus der history, mit großen $HISTSIZE.JumpingCat schrieb:Das mit den Links bevorzugst du für deine Skripte? Welchen Vorteil bietet das?
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.
Am besten gleich getopts nutzen:-Andrea- schrieb:Danke, funktioniert. Hier mein Test, der auch funktioniert:
https://openbook.rheinwerk-verlag.de/shell_programmierung/shell_005_007.htm
Zuletzt bearbeitet: