2 votes

L'entrée Crontab ne fonctionne pas

J'ai ceci dans crontab.(dans /etc)

J'ai édité le fichier en tant que root.

script fonctionne bien lorsqu'il est exécuté de manière autonome, mais pas dans la crontab.

@daily          root    /home/andy/bin/Backup_18_04.sh

3voto

Fjor Points 159

Pour déterminer si certains script dans la crontab ont des problèmes, nous devons vérifier le journal du système en utilisant la commande

less -S /var/log/syslog

en recherchant les lignes CRON et en recherchant les messages d'erreur associés.

Une autre façon de simplifier cette analyse est d'ajouter un fichier journal explicite dans la définition du cron, comme ceci :

@daily root /home/andy/bin/Backup_18_04.sh >/home/andy/backup.log 2>&1

Le symbole > redirige toute la sortie du script vers le fichier, et le 2>&1 redirige tous les messages d'erreur vers le même fichier de sortie déjà redirigé (1 est le descripteur interne où tous les programmes par défaut envoient les messages normaux, et 2 est le même pour les erreurs, donc 2>&1 fait que le 'canal' 2 se connecte à une copie du 'canal' 1). IMPORTANT : la définition de la ligne doit être terminée par un saut de ligne.

Je préfère utiliser le système CRON normal configuré à travers crontab -e il ne semble complexe que parce qu'il a beaucoup de flexibilité. Par exemple, vous pourriez déclencher le script quotidiennement à 3h25 du matin en utilisant :

#MINUTE HOUR DAYOFMONTH MONTH DAYOFWEEK COMMAND
 25     3    *          *     *         /home/andy/bin/Backup_18_04.sh >/home/andy/backup.log 2>&1

Les astérisques signifient "tous" pour chaque champ, donc 'tous les jours de tous les mois à n'importe quel jour de la semaine à l'heure 3 et à la minute 25' cron exécute le script et enregistre ses messages normaux et d'erreur s'il y en a un dans le fichier. /home/andy/backup.log .

Le mot @daily que vous utilisiez est équivalent à 0 0 * * * tous les jours à 0h00.

En outre, le nom d'utilisateur après l'indication de l'heure n'est utilisé que dans /etc/crontab, pas dans les scripts créés avec crontab -e (car l'utilisateur est le créateur par défaut).

Deux autres aspects importants sont de déclarer le script comme exécutable et d'indiquer quel interprète script le traitera. Rendre le script exécutable est facile avec la commande suivante :

chmod a+x /home/andy/Backup_18_04.sh

Pour indiquer l'interpréteur Shell, la toute première ligne du Shell doit comporter le dièse/exclamation simbols. #! et le chemin Shell souhaité (on appelle cela un 'shebang'), par exemple :

 #!/bin/bash

Cela fera en sorte que le script soit traité avec l'interprète Bash script.

Pour plus d'informations sur le format de la ligne crontab, lisez le manuel correspondant à la commande :

man 5 crontab

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