La crontab
est le programme utilisé pour configurer les tables utilisées par le daemon cron
. Chaque utilisateur sur le système peut avoir sa propre crontab
et il est possible d’établir des restrictions d’utilisation.
La commande crontab
s’utilise comme tel :
crontab [ -u user ] file |
Le répertoire /var/spool/cron/crontabs
, contient tous les fichiers crontabs de chaque utilisateur, ils ne sont cependant pas destinés à être modifiés directement ici.
# ls -l /var/spool/cron/crontabs/ |
Les autres crons lancés par le système se trouvent dans : /etc/crontab
, /etc/cron.d
, /etc/cron.hourly
, /etc/cron.daily
, /etc/cron.weekly
, /etc/cron.monthly
.
Autorisations et interdictions pour les utilisateurs
Pour les systèmes Debian standards, tous les utilisateurs peuvent utiliser la commande crontab
par défaut, il est cependant possible de modifier les droits à l’aide d’une liste blanche ou d’une liste noire.
Par liste blanche
Il sera nécessaire de créer un fichier /etc/cron.allow
et y placer ligne par ligne les utilisateurs autorisés à utiliser la commande crontab
Par liste noire
Il faut créer un fichier /etc/cron.deny
et y placer ligne par ligne les utilisateurs non autorisés à utiliser la commande crontab
️ Aucun fichier n’est présent
Si aucun de ces fichiers n’est présent alors selon la configuration du serveur ou de la distribution il sera possible que :
- Soit uniquement le super utilisateur sera autorisé à utiliser
crontab
- Soit tous les utilisateurs pourront utiliser
crontab
Les deux fichiers sont présents
Si les deux fichiers existent /etc/cron.allow
sera prioritaire. Donc :
/etc/cron.deny
ne sera pas pris en compte- L’utilisateur devra figurer dans
/etc/cron.allow
pour utilisercrontab
Manipuler la crontab
Si l’option -u <utilisateur>
n’est pas précisée, crontab
examinera votre crontab
(celle de l’utilisateur qui exécute la commande)
Résumé des options
La commande s’utilise comme tel :
crontab [ -u user ] [ -i ] { -e | -l | -r } |
-l
: Affiche la crontab-e
: Editer la crontab-r
: Supprime la crontab-ir
: Supprime la crontab en demandant une confirmation
Exemple : Lister les tâches existantes
Pour avoir un aperçu de ce que contient votre table cron, il faut utiliser la commande :
# crontab -l |
Pour avoir un aperçu de ce que contient la table de l’utilisatrice Arya, il faut utiliser la commande :
# crontab -u Arya -l |
Changer d’éditeur par défaut
En ouvrant la crontab
, on tombe généralement sur l’éditeur nano, pour ceux qui ne sont pas familier avec il est possible d’en mettre un autre par défaut en modifiant la variable d’environnement VISUAL
ou EDITOR
par exemple avec Vi sous Debian :
# EDITOR=vi;export EDITOR |
Syntaxe de la table
La syntaxe générique de la crontab :
#------------------------------------------------------# |
Signification :
mm # les minutes (0-59) |
Combinaisons de valeurs possibles :
* # signifie tout le temps |
Normalement on devrait pouvoir tout prévoir… ou presque
Comment lancer un cron toutes les X secondes ?
On ne peut pas, ce n’est pas prévu pour ça, cependant il est possible de lancer un script bash qui se chargera de compter les secondes :
#!/bin/bash |
Les fichiers de logs
Les logs de cron
se trouvent dans /var/log/syslog
. On utilise grep
pour les filtrer.
# cat /var/log/syslog | grep cron |
Anacron
Pour les machines ne fonctionnant pas 24h/24h, anacron permet de lancer les commandes qui auraient dû s’exécuter si la machine avait été allumée.