Par exemple, je peux enregistrer stderr
un script de cette façon:
* * * * * run_script.sh > /var/log.txt 2>&1
Mais je veux enregistrer stderr
tous les scripts dans ma crontab. Je peux ajouter > /var/log.txt 2>&1
à tous les scripts, mais ce n'est pas bien si j'ai des centaines de scripts dedans cron
. Existe-t-il un autre moyen plus simple de procéder?
la source
Puisqu'il utilise le courrier local, vous n'avez vraiment pas besoin de configurer quoi que ce soit, ou peut-être simplement d'installer mailx s'il n'est pas déjà là. Cron vous enverra la sortie, vous pouvez enregistrer le courrier dans un fichier et faire beaucoup de choses à partir de là. Essayer de modifier la façon dont cron fonctionne pour répondre directement à vos besoins n'est pas la voie à suivre. Si vous ne le pensez pas, il suffit de patcher et de reconstruire cron, appelez-le my_cron et utilisez-le à la place de cron. Et soyez prêt à éventuellement garder votre my_cron à jour et à le reconstruire souvent.
Ajoutez-le au début de tous vos scripts pour tout enregistrer et arrêtez-vous à la première erreur
la source
> /var/log/YOUR_LOG_FILE 2>&1
c'est-à-dire, redirigez d'abord stdout vers un fichier, puis redirigez ensuite stderr vers stdout (qui pointe maintenant vers le fichier).Le script de Ryan Ye sur /programming//a/7145618/20774 est également utile pour cela, bien qu'il fasse à la fois stdout et stderr.
la source