スクリプトの出力を txt ファイルに保存しようとすると、cron ジョブが実行されません。

スクリプトの出力を txt ファイルに保存しようとすると、cron ジョブが実行されません。

私は、Python スクリプトを 1 日に 2 回 (午前 8:00 と午後 8:00) 実行しようとしています。スクリプトの出力を LOG_{date-time}.txt という txt という名前のコンピューター上の txt ファイルに保存して、スクリプトで何か問題が発生した場合に「ログ」ファイルを確認できるようにしたいと考えていました。次の cron ジョブを設定しました。

0 8,20 * * * python3 /script/working/directory/Script.py > /script/working/directory/logs/LOG_"$(date +"%d-%m-%Y")".txt

cron ジョブを設定した後、午後 8 時以降にスクリプトをチェックしたところ、スクリプトがまだ実行されていないことに気付きました (スプレッドシート ファイルを更新し、更新ごとにタイムスタンプを残すように設定しています)。

自分で少しトラブルシューティングしてみたところ、出力部分なしで cron ジョブを実行すると機能することがわかりました (また、cron ジョブのログはシステム時間ではなく UTC で出力されることもわかりましたが、これは別の機会に説明します)。

0 8,20 * * * python3 /script/working/directory/Script.py

何か見落としている点があるのでしょうか? スクリプトの出力はファイルに保存するべきではないでしょうか? 私はこの分野に少し不慣れで、これを使いながら学ぼうとしていますが、どこに行けばよいのかよくわかりません。デバッグの目的でスクリプトの出力を保存できればよいと思います。

答え1

主な理由としては、ログ パスが存在しないか、ログ パスへの書き込み権限がないことが考えられます。

cronの代わりに手動でコマンドを実行してみてください

python3 /script/working/directory/Script.py > /script/working/directory/logs/LOG_"$(date +"%d-%m-%Y")".txt

おそらく、ターミナルにエラーが表示されるでしょう。

関連情報