Redirection de la sortie d'un travail cron
J'ai l'entrée suivante dans la crontab:
0 5 * * * /bin/bash -l -c 'export RAILS_ENV=my_env; cd /my_folder; ./script/my_script.rb 2>&1 > ./log/my_log.log'
Le résultat de tout cela est que je suis la réception de la sortie de ./script/my_script.rb
dans ./log/my_log.log
. Ce comportement est voulu. Ce qui est curieux, c'est que je suis aussi la réception de la sortie dans mon courrier local. Je me demande comment la sortie de mon script est d'être capturé par la poste. Depuis que je suis rediriger la sortie vers un fichier de log, je m'attends à ce que ma tâche cron aurait pas de sortie, et que je ne recevrez pas de mail lors de la tâche cron s'exécute. Quelqu'un peut jeter un peu de lumière à la façon dont le courrier est en mesure d'obtenir la sortie de ./script/my_script.rb
?
source d'informationauteur Michael Frederick
Vous devez vous connecter pour publier un commentaire.
La redirection de votre commande est incorrecte. Stderr n'est pas redirigé vers le fichier, mais est envoyé sur la sortie standard stdout. C'est ce que vous devez être la réception de votre courrier.
Fixer la redirection en changeant votre tâche cron pour:
Essayez d'échanger
2>&1
avec> ./log/my_log.log
.À en juger par cette réponse vous avez juste besoin de changer l'ordre des redirections: