I tuoi comandi dovrebbero funzionare, tuttavia non è come lo farei io.
Prova invece: -
sudo crontab -e -u root
quindi per elencare: -
sudo crontab -l -u root
Come regola generale, ho un sacco di problemi a mai eseguire una shell di root. Quando lo faccio, utilizzo sudo -s
anziché sudo su
.
Quando esci da vi dovresti vedere due righe: -
crontab: no crontab for root - using an empty one
crontab: installing new crontab
Se non riesci a ottenere quelle due linee hai problemi seri. Se lo fai e poi il comando list non mostra nulla sospetto problemi di autorizzazione.
Inoltre non utilizzerei la tua riga di esempio mentre chiedi al sistema di eseguire "sayhi.sh" una volta al minuto tutto il giorno, ogni giorno. Mi chiedo anche del percorso "/sayhi.sh" - hai davvero lo script nella parte superiore del tuo disco di avvio? Non è neanche una buona idea o forse intendi "~ / sayhi.sh" che in questo caso sarebbe nella directory principale di root (di solito / var / root) o intendi la tua home directory . Nei file crontab è meglio codificare esplicitamente l'intero percorso, a prescindere.
Ti rendi anche conto che tutto il lavoro cron di cron non andrà a nessun terminale ma verrà inviato via email a root (per impostazione predefinita).
Se vuoi verificare che cron esegua le attività in modo semplice
*/5 * * * * echo "CRON" > /Users/myname/.cronout
lo farà (il primo campo esegue l'attività molto più ragionevole ogni 5 minuti).
Gli stessi crontabs sono memorizzati in / usr / lib / cron / tabs. /usr/lib/cron
è in realtà un collegamento a /var/at
e se ci vai, troverai la directory tabs
e anche il file cron.deny
. Verifica che nessuno abbia aggiunto root a questo e se non hai ancora gioia allora potresti provare:
echo > /var/at/tabs/root
che dovrebbe creare un file vuoto che potresti essere in grado di modificare.