Quel est le fichier approprié à utiliser et le meilleur moyen de le faire?
crontab -e
est le meilleur moyen de le faire - cela vous permettra d’éditer facilement les crontabs par utilisateur.
Si je planifie une tâche en tant qu'utilisateur non root, cette tâche sera-t-elle exécutée d'elle-même selon l'intervalle de temps spécifié, sans aucun problème?
Oui, et il fonctionnera avec les privilèges de ce compte utilisateur.
En principe, il est préférable d'exécuter des tâches planifiées avec les privilèges les plus bas que vous puissiez obtenir. Par conséquent, si ce que vous faites ne nécessite pas de root, n'utilisez pas root. Si vous n'avez même pas besoin d'accéder aux fichiers et aux dossiers de votre compte, vous pouvez créer un nouvel utilisateur et utiliser ce compte uniquement pour cette tâche. D'autre part , si votre tâche ne nécessite racine, crontab de l' utilisation racine ( su
/ sudo su
à la racine puis utilisez crontab -e
).
Devrai-je redémarrer le serveur après avoir enregistré le travail cron dans le fichier crontab avant de commencer à fonctionner?
Non, ça va commencer à fonctionner tout de suite (enfin, la prochaine heure programmée possible).
Pourquoi ne pas éditer le fichier directement? Où est-il situé?
Les fichiers crontab de l'utilisateur sont situés dans /var/spool/cron/crontabs
, mais leurs autorisations sont définies de manière à ce qu'ils ne puissent pas être parcourus sans l'autorisation du superutilisateur (mais une fois ouvert, le processus cron supprime les privilèges lui permettant d'accéder au fichier).
Le système n'est pas conçu pour que les utilisateurs finaux puissent éditer ces fichiers directement. En effet, le haut du fichier est précédé d'un DO NOT EDIT THIS FILE
avertissement sévère à cet effet. Au lieu de cela, le fichier est conçu pour être édité via la crontab -e
configuration d’un miroir temporaire du fichier /tmp
, sans avertissement sévère, après quoi il vérifie et installe le fichier crontab permanent. Tout cela peut être fait sans la permission du superutilisateur.
Si vous avez édité directement le fichier crontab, je ne sais pas quel en serait le résultat. C'est peut-être que cela ne prendrait tout simplement pas effet avant le prochain redémarrage et toute erreur pourrait être difficile à déboguer.
crontab -e
vous permet de modifier votre crontab utilisateur sans sudo. Les crontabs de l'utilisateur sont/var/spool/cron/crontabs
un répertoire auquel on ne peut pas accéder sans la permission du superutilisateur (mais de telle sorte qu'une fois que cron a supprimé ses privilèges, il est toujours capable de le lire). Même si vous utilisez sudo pour essayer d’éditer directement le fichier, vous voyez un gros avertissement en haut, «NE MODIFIEZ PAS CE FICHIER» - le fichier est conçu pour être édité à l’aide de lacrontab
commande qui utilise une copie temporaire/tmp
puis est installée. après avoir économisé.Chaque utilisateur a le sien
crontab
.Pour le voir, tapez simplement
et, oui, vous avez bien vu, quand vous voulez ajouter un
crontab
simplement fairepour la première fois, on vous posera des questions sur l'éditeur à utiliser
crontab
. Comme vous êtes un débutant comme vous le dites, je vous recommande d’utiliser nano, c’est l’éditeur le plus simple à utiliser.La crontab elle-même fonctionne comme ça
Donc, par exemple, pour déclencher un travail toutes les 15 minutes seulement le lundi, vous le faites comme
et OUI il est très important que vous mettiez votre travail cron dans la crontab de l'utilisateur qui dispose des droits suffisants pour l'exécuter.
Donc, si votre script doit être root ou un utilisateur spécial, assurez-vous de le soumettre à cet utilisateur et ajoutez-y le travail cron.
Aussi très important!
cronjob est bête! Oui je l'ai dit. Assurez-vous toujours de saisir le PATH complet dans le fichier que
application/command/script
vous utilisez, car crontab ne fonctionnera pas avec.bashrc
ou similaire. Vous devez toujours vous assurer que vous dites à cron où il peut trouver les fichiers et les répertoires.Pour répondre au reste de vos questions:
Bien sûr, il fonctionnera tout seul, c'est pour cela qu'il est fait. Mais vous devez vérifier que cronjob le fait vraiment, ou s'il manque quelque chose. Par exemple, connectez-vous à un fichier journal pour voir si cela fonctionne vraiment.
Et NON, un redémarrage n'est pas nécessaire. Un redémarrage avec Linux n'est normalement nécessaire que si vous installez un nouveau noyau. Pour l'utiliser, vous devez redémarrer. Presque tout le reste peut être fait sans redémarrer sous Linux. Bien sûr, il existe des exceptions, mais en général, cette affirmation est correcte.
la source