Ich habe ein Skript, das funktioniert, wenn ich es über die Befehlszeile ausführe, aber wenn ich es mit cron
plane, erhalte ich die Fehlermeldung, dass es keine Dateien oder Befehle finden kann. Meine Frage ist zweifach:
Wenn ich einen Cron-Job mit terminiere
crontab -e
, verwendet er meine Benutzer-ID als Grundlage für seine Berechtigungen? Oder verwendet es eine Cron-Benutzer-ID und die damit verbundenen Berechtigungen?Was ist das Arbeitsverzeichnis, wenn ein Cron-Job gestartet wird? Ist es das Verzeichnis, in dem ich das auszuführende Skript spezifiziere, oder ein anderes Verzeichnis?
Hier ist mein Cron Job:
15 7 * * * /home/xxxx/Documents/Scripts/email_ip_script.sh
Hier ist das aktuelle Skript:
vIP_ADDR="`curl automation.whatismyip.com/n09230945.asp`"
echo "$vIP_ADDR"
sed "s/IPADDR/$vIP_ADDR/g" template.txt > emailmsg.txt
ssmtp XXXXX@gmail.com < emailmsg.txt
Folgende Fehler werden beim Anzeigen der mail
Nachricht angezeigt, die von cron
:
sed: can't read template.txt: No such file or directory
/home/xxxx/Documents/Scripts/email_ip_script.sh: line 15: ssmtp: command not found
Es kann das nicht finden, template.txt
aber es befindet sich im selben Verzeichnis wie das Skript. Es kann auch nicht laufen ssmtp
, aber ich kann als mein Benutzer. Was fehlt mir, damit das richtig funktioniert?
cron
es ein eigenesPATH
oder kann ich das meines Benutzers überprüfenPATH
? Ich habe ssmtp bis haben seine eigeneuser
und diewheel
Erlaubnis dachte , es würde jemand erlauben , es zu benutzen (einschließlich cron). Wenn es hilft Im auf CENTOS 6.2