93 votes

Quelle est la manière correcte de modifier un fichier crontab ?

J'essaie d'automatiser le rafraîchissement d'awstats pour mon serveur web et je comprends que je dois utiliser cron pour le mettre en place. Chaque utilisateur a donc un fichier crontab ?

Je suivais les instructions aquí Communauté/AWStats

Et ça dit d'aller dans le fichier à : /etc/crontab

Ce fichier contient déjà des informations. Est-ce que c'est le principal crontab ou autre ? J'ai vu des instructions en ligne indiquant qu'il fallait utiliser le fichier qui s'affiche avec la fonction crontab -e .

Quel est le bon fichier à utiliser et la meilleure façon de procéder ?

Si je planifie une tâche en tant qu'utilisateur non root, s'exécutera-t-elle d'elle-même à l'intervalle de temps spécifié, sans problème ?

Devrai-je redémarrer le serveur après avoir sauvegardé la tâche cron dans le répertoire de l'utilisateur ? crontab avant qu'il ne commence à fonctionner ?

97voto

thomasrutter Points 33791

Quel est le fichier à utiliser et la meilleure façon de procéder ?

crontab -e est le meilleur moyen de le faire - cela vous permettra de modifier facilement les crontabs par utilisateur.

Si je planifie une tâche en tant qu'utilisateur non root, s'exécutera-t-elle d'elle-même à l'intervalle de temps spécifié, sans problème ?

Oui, et il s'exécutera avec les privilèges de ce compte utilisateur.

En principe, il est préférable d'exécuter les tâches planifiées avec les privilèges les plus bas possibles, donc si ce que vous faites ne nécessite pas l'accès à root, n'utilisez pas root. Si vous n'avez même pas besoin de pouvoir accéder à votre vous pouvez alors créer un nouvel utilisateur et utiliser ce compte d'utilisateur. sólo pour cette tâche. En revanche, si votre tâche fait nécessite root, utilise la crontab de root ( su / sudo su à la racine, puis utilisez crontab -e ).

Devrai-je redémarrer le serveur après avoir enregistré la tâche cron dans le fichier crontab pour qu'elle commence à fonctionner ?

Non, il commencera à fonctionner immédiatement (enfin, à la prochaine heure prévue).

Pourquoi ne pas éditer le fichier directement ? Où se trouve-t-il ?

Les fichiers crontab de l'utilisateur sont situés dans /var/spool/cron/crontabs mais leurs permissions sont définies de telle sorte qu'ils ne peuvent pas être traversés sans la permission du super-utilisateur (mais une fois ouvert et le processus cron abandonne ses privilèges, il peut toujours accéder au fichier).

Le système n'est pas conçu pour que les utilisateurs finaux puissent modifier ces fichiers directement, et en effet, le haut du fichier comporte un avertissement sévère. DO NOT EDIT THIS FILE un avertissement en haut de page à cet effet. Le fichier est plutôt conçu pour être édité via crontab -e qui met en place un miroir temporaire du fichier en /tmp pour modification - sans l'avertissement sévère - après quoi il vérifie et installe lui-même le fichier crontab permanent. Tout ceci peut être fait sans la permission du super-utilisateur.

Si vous modifiez directement le fichier crontab, je ne sais pas quel serait le résultat. Il est possible que la modification ne prenne effet qu'au prochain redémarrage et que les erreurs éventuelles soient difficiles à déboguer.

43voto

s1mmel Points 1794

Chaque utilisateur a sa propre crontab .

Pour le voir, il suffit de taper

crontab -l

et, oui, vous l'avez bien vu, lorsque vous voulez ajouter une crontab alors il suffit de faire

crontab -e

pour la première fois, vous serez interrogé sur l'éditeur à utiliser avec crontab . Comme vous êtes un débutant, je vous recommande d'utiliser nano, c'est l'éditeur le plus simple à utiliser.

La crontab elle-même fonctionne comme suit

MIN =  Minute 0-60
HOUR = Hour [24-hour clock] 0-23
MDAY = Day of Month 1-31
MON = Month 1-12 OR jan,feb,mar,apr ...
DOW =  Day of Week 0-6 OR sun,mon,tue,wed,thu,fri,sat
COMMAND = Command to be run Any valid command-line

Ainsi, par exemple, pour déclencher un travail toutes les 15 minutes uniquement le lundi, vous procédez comme suit

*/15 * * * mon /home/me/yourscript.sh

et OUI il est très important que vous mettiez votre cronjob dans la crontab de l'utilisateur qui a suffisamment de droits pour l'exécuter.

Donc si votre script doit être root ou un utilisateur spécial, assurez-vous de vous connecter à cet utilisateur et d'y ajouter le cronjob.

Très important aussi !

cronjob est débile ! Oui, je l'ai dit. Assurez vous toujours d'entrer le PATH complet dans le fichier application/command/script que vous utilisez, parce que crontab ne fonctionnera pas avec .bashrc ou similaire. Vous devez toujours vous assurer que vous indiquez à 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 ça qu'il est là. Mais vous devez vérifier que cronjob le fait vraiment, ou si quelque chose lui manque. Par exemple, connectez-vous à un fichier journal pour voir s'il 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 qu'il soit utilisé, vous devez redémarrer. Presque tout le reste peut être fait sans redémarrage sous Linux. Bien sûr, il y a des exceptions, mais en général, cette affirmation est correcte.

-5voto

user1200412 Points 1

Je ne peux pas le trouver maintenant, mais j'ai cru lire que vous ne modifiez pas avec crontab -e. Vous copiez le crontab dans un fichier crontab -l > crontab.txt vous éditez ce fichier puis vous le remettez en place crontab crontab.txt

Je ne sais pas où j'ai lu ça. Apparemment, les choses ont changé, car je ne peux plus trouver cette note.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X