Începând cu #!/bin/sh -e
, faci ca scriptul să ruleze cu SH
(bash
este 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.