Cronはメーラーに出力を送信します。ターミナルで出力を表示する場合は、ファイルにログを記録し、tail -fを使用して、出力を表示するターミナルで出力を表示できます。
ファイルに記録する
- 最も簡単な答えは、次のようなcrontabエントリを使用してファイルに直接ログを記録することです。
0 07-17 * * * /home/dat/scripts/cron.out > /path/to/log.txt 2> /path/to/error.txt
ログを記録する代替方法:
- プログラムが書き込み可能なスクリプトである場合、ログファイルに出力をリダイレクトするようにプログラムを変更できます。
echo output > log.txt
または、以下で説明するラッパースクリプトを使用できます。
- プログラムがバイナリまたは書き込み不可の場合、ラッパースクリプトを記述して出力をファイルにキャプチャする必要があります。
サンプルプログラムとラッパースクリプト:
$ 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
実行例1:
$ ./wrapper.sh 1 2 3 ; cat error.txt log.txt
sample error
arg 1=1 arg2=2 arg3=3
実行例2:
$ ./wrapper.sh "A B C" D E ; cat error.txt log.txt
sample error
arg 1=A B C arg2=D arg3=E
ターミナルで出力を表示:
これで、任意のターミナルでファイルへの標準出力と標準エラーの両方をログに記録できるtail -f
ようになったので、修正tail -f log.txt
などのtail -f log.txt error.txt
ためにテールがファイルを監視または追跡するように、またはその両方のファイルで実行できます。 テールマンページ
$ tail -f log.txt error.txt
==> log.txt <==
arg 1=1 arg2=2 arg3=3
==> error.txt <==
sample error
後に追加されるログファイル:
log.txtまたはerror.txtのいずれかが後でプログラムまたはのような別の端末から追加された場合、$ echo "more output" >> log.txt
実行中の端末で出力が表示されます$ tail -f log.txt error.txt
==> log.txt <==
more output
さらに、$ echo code red >> error.txt
結果は次のとおりです。
==> error.txt <==
code red