に出力できるプログラムを書きますstderr。Linuxcrontabで実行する場合は、stderr. そうでない場合、プログラムは . で終了しSIGPIPEます。なんで?
良くないですよ
45 10 * * * /home/sandy/test > /home/sandy/test.log &
わかった
45 10 * * * /home/sandy/test > /home/sandy/test.log 2>&1 &
バックグラウンドでコマンドを実行しています(&最後に)。これは、コマンドを実行するために cron が開始したシェルが完了を待たず、コマンドが開始されるとすぐに終了することを意味します。プログラムが に書き込もうとするstderrと、読み取り側には何も接続されず、SIGPIPE が発生します。ファイルにリダイレクトする場合、実行中のプロセスが書き込み先を知っているため、これは起こりません。
これを修正するもう 1 つの方法は、コマンドをフォアグラウンドで実行することです。つまり&、最後に を付けずに実行します。とにかくこれはより良い練習です。