Einfaches Bash-Skript wird nicht richtig erstellt
Ich versuche, ein einfaches Bash-Skript auf meinem MacBook-Pro-Laptop zu erstellen. Letztendlich möchte ich dies zuerst für Bash-Skripte zum Laufen bringen und dann zu meinen Python-Skripten übergehen. Ich habe eine einfache Bash-Datei (mit dem Namen hello.sh) mit dem folgenden Code erstellt:
#!/bin/bash
echo "Hello World" >> /Users/myusername/Desktop/test.txt
Und mein crontab -ewird wie folgt bezeichnet:
* * * * * /bin/bash /Users/myusername/Desktop/bash-files/hello.sh
Nach einer Minute Wartezeit bekomme ich jedoch nichts.
Nachdem ich herumgegoogelt hatte, kam ich zu dem Schluss, dass ich möglicherweise auf das "Gotcha" -Problem gestoßen bin (Cron liest andere Parameter als env). Also habe ich folgendes in die Warteschlange gestellt:
* * * * * env > /tmp/env.output
und es wird wie folgt ausgegeben
SHELL=/bin/sh
USER=myusername
PATH=/usr/bin:/bin
PWD=/Users/myusername
SHLVL=1
HOME=/Users/myusername
LOGNAME=myusername
_=/usr/bin/env
Das Ausführen envin meinem Terminal erzeugt die folgenden relevanten Parameter:
SHELL=/bin/zsh
USER=myusername
PATH=/Users/myusername/opt/anaconda3/bin:/Users/myusername/opt/anaconda3/condabin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin:/opt/X11/bin
PWD=/tmp
SHLVL=1
HOME=/Users/myusername
LOGNAME=myusername
_=/usr/bin/env
Ich habe die obigen Parametereinstellungen zu meinem Skript "hello.sh" hinzugefügt, erhalte aber immer noch nichts.
Kann jemand darauf hinweisen, was mein Problem hier ist?
Antworten
Dies sind Berechtigungs- und Pfadfehler, die leicht behoben werden können.
Suchen Sie in den Systemeinstellungen nach dem vollständigen Festplattenzugriff auf Ihre Binärdateien und deaktivieren Sie PATH in Ihren Skripten, um nicht vollständige Pfade abzufangen.
Ich empfehle, /usr/local/binum die Verwaltung von Skripten, die Sie haben launchdoder cronplanen möchten, zu vereinfachen .
Es gibt jedoch keinen Grund, warum Sie nicht aus Ihrem Benutzerordner ausgeführt werden können, wenn dies zu Ihnen passt.