Crontabを使用してPythonスクリプトを実行する

Crontabを使用してPythonスクリプトを実行する

Pythonスクリプトを作成して次のように実行すると正常に実行されますが、python3 /path/to/file/Script.pycrontabを介して実行しようとすると期待どおりに実行されません。私のスクリプトは、ファイルをダウンロードし、解析し、データを新しいテキストファイルに追加し、更新されたテキストファイルを電子メールで送信します。

私は試してみましたcrontab -eが、sudo crontab -eどちらも動作しませんでした。両方のcrontabで、私は次のことを試しました。

45 20 * * * python3 /path/to/file/Script.py
45 20 * * * $(which python3) /path/to/file/Script.py
45 20 * * * /usr/bin/python3 /path/to/file/Script.py
45 20 * * * /path/to/file/Script.py (after adding #!/usr/bin/env python3 at the beginning of my script)

しかし、これらのどれも効果がありませんでした。 crontab形式の分と時間を過去の時間ではなく動作していた時間に変更しました。何が起こっているのか見ようとしましたが、/var/log/syslog正直なところ何がわかりませんでした。

ログファイルには以下が表示されます。

Mar 23 20:49:01 G3 CRON[10843]: (g3) CMD (/home/g3/covidfiles/COVID19.py)
Mar 23 20:49:01 G3 postfix/pickup[6415]: 435D914810F1: uid=1000 from=<g3>
Mar 23 20:49:01 G3 postfix/cleanup[8157]: 435D914810F1: message-id=<20200324004901.435D914810F1@G3>
Mar 23 20:49:01 G3 postfix/qmgr[6416]: 435D914810F1: from=<g3@G3>, size=593, nrcpt=1 (queue active)
Mar 23 20:49:01 G3 postfix/pickup[6415]: 45822148041F: uid=0 from=<root>
Mar 23 20:49:01 G3 postfix/cleanup[6515]: 45822148041F: message-id=<20200324004901.45822148041F@G3>
Mar 23 20:49:01 G3 postfix/local[6519]: 435D914810F1: to=<g3@G3>, orig_to=<g3>, relay=local, delay=0.02, delays=0.01/0/0/0.01, dsn=2.0.0, status=sent (delivered to mailbox)
Mar 23 20:49:01 G3 postfix/qmgr[6416]: 45822148041F: from=<root@G3>, size=625, nrcpt=1 (queue active)
Mar 23 20:49:01 G3 postfix/qmgr[6416]: 435D914810F1: removed
Mar 23 20:49:01 G3 postfix/local[6520]: 45822148041F: to=<root@G3>, orig_to=<root>, relay=local, delay=0.03, delays=0.02/0/0/0.01, dsn=2.0.0, status=sent (delivered to mailbox)
Mar 23 20:49:01 G3 postfix/qmgr[6416]: 45822148041F: removed
Mar 23 20:49:06 G3 postfix/pickup[6415]: C98061480A77: uid=1000 from=<g3>
Mar 23 20:49:06 G3 postfix/cleanup[8157]: C98061480A77: message-id=<20200324004906.C98061480A77@G3>
Mar 23 20:49:06 G3 postfix/qmgr[6416]: C98061480A77: from=<g3@G3>, size=924, nrcpt=1 (queue active)
Mar 23 20:49:06 G3 postfix/local[6519]: C98061480A77: to=<g3@G3>, orig_to=<g3>, relay=local, delay=0.02, delays=0.01/0/0/0.01, dsn=2.0.0, status=sent (delivered to mailbox)
Mar 23 20:49:06 G3 postfix/qmgr[6416]: C98061480A77: removed

メールがメールボックスに送信されたと表示されますが、私だけでなく他の受信者も何も受け取りません。私はmailutilsやpostfixがインストールされていないのでインストールしました。それらのどれも私の問題を解決できませんでした。これは個人プロジェクトなので、今後どのような道を選ぶべきか分からない。このスクリプトを毎日午後8時(東部標準時)以降に一度実行したいと思います。

これが役に立つかどうかはわかりませんが、私はLinux Mint Cinnamonを実行してテキストエディタを使ってコードを書いています。

ベストアンサー1

postfix出力syslogにはからに渡されるメッセージが表示されます。メールサブシステムに応じて、/var/mailディレクトリ、ファイル、またはそのホームディレクトリのサブディレクトリに電子メールを見つけることができます。crong3rootg3root~/Maildir

mailこれらのメールファイルは(または)コマンドを使用して正しく読み取ることができますが、この場合はお気に入りのエディタ()またはポケットベル()を使用するのは簡単ですmailx。これには、いかなる方法でも解釈できるメッセージが含まれます。vilesscronなぜスクリプトを実行できません。

出力が含まれているがcronスクリプトが失敗した理由がまだわからない場合は、実行時にステータスメッセージを生成するようにスクリプトを変更してください。標準エラー代わりに標準出力)(例:キー変数の値の印刷など)

おすすめ記事