Question :J'ai créé un script shell backup.sh et l'ai ajouté à ma crontab pour l'exécuter quotidiennement. Comment puis-je vérifier si le travail de script cron de sauvegarde s'est exécuté avec succès ? De plus, j'ai plusieurs instructions d'écho dans mon script shell backup.sh. Comment enregistrer la sortie de mon script dans un fichier journal lorsqu'il est exécuté en tant que tâche cron ?
Réponse :Disons que vous avez ajouté le backup.sh à votre crontab comme indiqué ci-dessous pour l'exécuter à minuit tous les jours.
$ crontab -e 59 23 * * * /home/john/bin/backup.sh
Pour vérifier si cette tâche a été exécutée avec succès ou non, consultez le fichier /var/log/cron, qui contient des informations sur toutes les tâches cron exécutées sur votre système. Comme vous le voyez dans la sortie suivante, la tâche cron de John a été exécutée avec succès.
$ tail /var/log/cron Oct 8 22:00:00 dev-db crond[18340]: (root) CMD (/bin/sh /home/root/bin/system_check &) Oct 8 23:00:00 dev-db crond[20348]: (oracle) CMD (/bin/sh /home/oracle/bin/cleanup.sh &) Oct 8 23:59:00 dev-db crond[20399]: (john) CMD (/bin/sh /home/john/bin/backup.sh &)
Le journal Cron contient les informations suivantes :
- Horodatage :la date et l'heure d'exécution de la tâche cron
- Nom d'hôte :nom d'hôte du serveur (par exemple, dev-db)
- Le nom du démon cron et le PID. Par exemple, crond[20399]
- Nom d'utilisateur - Le nom d'utilisateur sous lequel cette tâche cron a été exécutée. Par exemple, jean.
- CMD – Tout ce qui suit est la vraie commande qui a été exécutée à ce moment-là.
S'il existe des instructions d'écho dans le fichier backup.sh, vous souhaiterez peut-être les enregistrer dans un fichier. En général, si le script cron backup.sh génère une sortie (y compris des erreurs), vous souhaiterez peut-être les consigner dans un fichier journal. Pour ce faire, modifiez l'entrée crontab et ajoutez la sortie et la redirection d'erreur comme indiqué ci-dessous.
$ crontab -e 59 23 * * * /home/john/bin/backup.sh > /home/john/logs/backup.log 2>&1
Dans ce qui précède :
- > /home/john/logs/backup.log indique que la sortie standard du script backup.sh sera redirigée vers le fichier backup.log.
- 2>&1 indique que l'erreur standard (2>) est redirigée vers le même descripteur de fichier pointé par la sortie standard (&1).
- Ainsi, la sortie standard et l'erreur seront redirigées vers /home/john/logs/backup.log