Începând cu #!/bin/sh -e, faci ca scriptul să ruleze cu SH (basheste mai bine IMHO) și -e iese la orice eroare (set de om), deci nu se pot gestiona erorile. Scriptul tău eșuează și cron încearcă să vă trimită jurnalul prin e-mail. cron nu poate găsi un agent de transfer de mesaje (MTA). E-mailul nu a fost configurat pe sistemul dvs., nici măcar pentru livrare locală.
Locuri de muncă rulează cron, sau systemd Scripturile de pornire nu sunt rulate în același mediu de rulare pe care îl aveți pe desktop. systemd scripturile de pornire sunt rulate ca rădăcină. Nici unul dintre voi CALE modificări sau alte setări ale variabilelor de mediu din ~/.bashrc sunt propagate automat către dvs cron loc de munca. De exemplu, nu există $DISPLAY, deci programele GUI au nevoie de un tratament special (citiți man xhost).
Se pot seta variabile de mediu pentru toate cron locuri de muncă în crontab fişier
Citit om 5 crontab.
Uită-te la rezultatele echo "=== id ===";id;echo "=== set ===";set;echo "=== env ===";env | sort;echo "=== alias ===";alias în fiecare dintre mediile dumneavoastră.
De când comanda parte a crontab linia este, implicit, interpretată de /bin/sh, care are o sintaxă mai simplă decât /bin/bash, recomand să aveți comanda fii un apel către a bash script (executabil, montat, începe cu #!/bin/bash) care configurează mediul, apoi apelează programul dorit.