Vos commandes devraient en fait fonctionner, mais ce n'est pas comme je le ferais.
Essayez plutôt :-
sudo crontab -e -u root
puis à la liste :-
sudo crontab -l -u root
En règle générale, je me donne beaucoup de mal pour jamais exécuter un shell Root. Lorsque je le fais, j'utilise sudo -s
plutôt que sudo su
.
Lorsque vous quittez vi, vous devriez voir deux lignes :-.
crontab: no crontab for root - using an empty one
crontab: installing new crontab
Si vous n'avez pas ces deux lignes, vous avez de sérieux problèmes. Si vous les obtenez et que la commande list ne montre rien, je soupçonne des problèmes de permission.
Je n'utiliserais pas non plus votre ligne d'exemple car vous demandez au système d'exécuter "sayhi.sh" une fois par minute, toute la journée, tous les jours. Je m'interroge également sur le chemin "/sayhi.sh" - avez-vous vraiment le script tout en haut de votre disque de démarrage ? Ce n'est pas une bonne idée non plus ou peut-être voulez-vous dire "~/sayhi.sh" qui, dans ce cas, serait dans le répertoire personnel des racines (habituellement /var/Root) ou voulez-vous dire votre répertoire personnel. Dans les fichiers crontab, il est préférable de coder explicitement le chemin complet, quel qu'il soit.
Vous devez également savoir que les résultats de la tâche cron ne seront pas envoyés à un terminal mais seront envoyés par courriel à Root (par défaut).
Si vous voulez vérifier que cron exécute des tâches, un simple
*/5 * * * * echo "CRON" > /Users/myname/.cronout
le fera (le premier champ exécute la tâche toutes les 5 minutes, ce qui est beaucoup plus raisonnable).
Les crontabs eux-mêmes sont stockés dans /usr/lib/cron/tabs. /usr/lib/cron
est en fait un lien vers /var/at
et si vous y allez, vous trouverez le tabs
et aussi le répertoire cron.deny
fichier. Vérifiez que personne n'a ajouté Root à ce fichier et si vous n'avez toujours aucune chance, vous pouvez essayer :
echo > /var/at/tabs/root
ce qui devrait créer un fichier vide que vous pourrez ensuite modifier.