Pour débuter
Outils de base
VIM
06 min
SSH
14 min
rsync
20 min
Shell fish
13 min
Serveur HTTP
Apache
40 min
Nginx
30 min
PHP
NodeJS
Base de données
MySQL
15 min
Redis
08 min
Emails
HTTPS
FTP
ProFTPD
14 min
Sécurité
Pour le confort
Déploiement

Lorsque l'on administre un serveur on est souvent amené à mettre en place des tâches récurrentes. Sur linux la mise en place de ces tâches peut se faire gràce à l'utilisation de cron et de la commande crontab.

Utilisation de crontab

Pour éditer les tâches récurrente de l'utilisateur courant il suffit de taper la commande crontab -e. Cette commande va alors ouvrir le fichier de tâche avec l'éditeur de votre choix. La structure d'une tâche suivra toujours ce motif :

# Minute    Heure   Jour du mois    Mois    Jour de la semaine
0               2              *       *                     *     ~/tache_a_executer

Il est possible d'utiliser des intervalles ou des palliers :

# La tâche s'éxécutera toutes les heures entre minuit et 12h
0 0-12 * * * ~/tache_a_executer

# La tâche s'éxécutera toutes les 2 heures entre minuit et 12h
0 0-12/2 * * * ~/tache_a_executer

Attention en revanche si le pallier n'est pas constant dans l'intervalle, par exemple 1-6/2 représentera 1, 3, 5, 1, 3... et aucune tâche ne sera éxécutée pour le nombre 6.

Attention au PATH

Une autre mise en garde concerne l'environnement qui est utilisé lors de l'éxécution des tâches cron. Ces tâches sont éxécutées avec le shell sh et le PATH ne contient que 2 entrées. Vous pouvez redéfinir cela en redéfinissant les variables d'environnement avant vos tâches.

SHELL=/bin/bash
PATH=/home/jonathan/bin:/usr/local/bin:/usr/bin
MAILTO=support@server.com

0 0-12/2 * * * ~/tache_a_executer

Le MAILTO permet d'indiquer l'email qui recevra la sortie des commandes.

En mode root

Si vous êtes administrateur vous avez quelques options en plus et vous pouvez notamment éditer les fichiers cron de vos utilisateurs à l'aide du drapeau -u.

# J'édite le fichier cron de mon utilisateur "demo"
crontab -u demo -e

Vous pouvez aussi contrôler qui a accès à l'utilisation des tâches cron à l'aide de fichiers /etc/cron.allow ou /etc/cron.deny qui permettent respectivement de lister les utilisateur ayant accès aux tâches récurrentes et ceux qui n'y ont pas accès.