web-dev-qa-db-fra.com

Quelle est la bonne façon de modifier un fichier crontab?

J'essaie d'automatiser l'actualisation des awstats pour mon serveur Web et je comprends que je dois utiliser cron pour le configurer. Donc, chaque utilisateur a un fichier crontab?

Je suivais les instructions ici communauté/AWStats

Et il est dit d'aller au fichier à: /etc/crontab

Ce fichier contient déjà des informations. Est-ce le fichier principal crontab ou quelque chose? J'ai vu des instructions en ligne pour utiliser le fichier qui apparaît avec crontab -e.

Quel est le fichier approprié à utiliser et le meilleur moyen de le faire?

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?

Devrai-je redémarrer le serveur après avoir enregistré le travail cron dans le fichier crontab avant de commencer à fonctionner?

46
timbram

Quel est le fichier approprié à utiliser et le meilleur moyen de le faire?

crontab -e est la meilleure façon 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 de pouvoir accéder aux fichiers et dossiers de votre compte, vous pouvez créer un nouvel utilisateur et utiliser ce compte utilisateur niquement pour cette tâche. D'autre part, si votre tâche nécessite nécessite root, utilisez la crontab de la racine (su/Sudo su to root 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).

44
thomasrutter

Chaque utilisateur a son propre crontabname__.

Pour le voir, tapez simplement

crontab -l

et, oui, vous avez bien compris, lorsque vous voulez ajouter un crontabname__, faites simplement

crontab -e

pour la première fois, l'éditeur vous demandera d'utiliser crontabname__. 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

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

Donc, par exemple pour déclencher un travail toutes les 15 minutes seulement le lundi, vous le faites comme

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

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 application/command/script que 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.

20
s1mmel