Cron envoie la sortie à un expéditeur. Si vous voulez voir la sortie dans un terminal, vous pouvez vous connecter à un fichier et utiliser tail -f pour voir la sortie dans le terminal que vous voulez voir la sortie
Connectez-vous à un fichier
- La réponse la plus simple consiste à se connecter directement à un fichier avec une entrée crontab comme:
0 07-17 * * * /home/dat/scripts/cron.out > /path/to/log.txt 2> /path/to/error.txt
Autres façons de se connecter:
- Si votre programme est un script sur lequel vous pouvez écrire, vous pouvez le modifier pour rediriger la sortie vers un fichier journal avec.
echo output > log.txt
ou vous pouvez utiliser un script wrapper décrit ci-dessous.
- Si votre programme est un fichier binaire ou non inscriptible, vous devez écrire un script wrapper pour capturer la sortie dans un fichier.
Exemple de programme et de script wrapper:
$ cat program.sh wrapper.sh
#!/bin/bash
# sample program
echo "arg 1=$1 arg2=$2 arg3=$3"
echo "sample error" >&2
#!/bin/bash
# sample wrapper
exec ./program.sh "$@" >log.txt 2> error.txt
Exemple d'exécution 1:
$ ./wrapper.sh 1 2 3 ; cat error.txt log.txt
sample error
arg 1=1 arg2=2 arg3=3
Exemple d'exécution 2:
$ ./wrapper.sh "A B C" D E ; cat error.txt log.txt
sample error
arg 1=A B C arg2=D arg3=E
Afficher la sortie dans le terminal:
Maintenant que vous vous déconnectez à la fois de la sortie standard et de l'erreur standard dans un fichier, dans n'importe quel terminal, vous pouvez exécuter tail -f
un ou les deux fichiers comme tail -f log.txt
ou tail -f log.txt error.txt
pour que queue surveille ou plutôt suive le ou les fichiers pour les modifications. page de manuel de queue
$ tail -f log.txt error.txt
==> log.txt <==
arg 1=1 arg2=2 arg3=3
==> error.txt <==
sample error
Fichiers journaux ajoutés ensuite:
Si log.txt ou error.txt sont ajoutés ultérieurement à partir de votre programme ou d'un autre terminal comme $ echo "more output" >> log.txt
, la sortie est visible sur le terminal en cours d'exécution$ tail -f log.txt error.txt
==> log.txt <==
more output
De plus, cela se $ echo code red >> error.txt
traduit par:
==> error.txt <==
code red