web-dev-qa-db-ja.com

Crontabはpythonスクリプトを実行しません

次の問題があります。「hello world」pythonスクリプトをcrontabで実行できません。

Crontab命令を次のように設定すると:

* * * * * cd /home/ && /usr/bin/python /home/hello.py

テキストは端末に表示されません。

しかし、私がそうするなら:

* * * * * cd /home/ && /usr/bin/python /home/hello.py >> /home/log.txt

Ubuntuは「hello world」テキストをlog.txtに追加します

ここに私のスクリプトがあります:

#!/usr/bin/env python
print('Hello World!')

何が間違っていますか?

追伸すでにこのトピックを読んでください なぜcrontabスクリプトが機能しないのですか?

1
Artem Andreev

スクリプトはCronによって実行され、すべてが期待どおりに機能します。 Just Cronは、端末に何かを出力するようには設計されていません。だから、IMO、ここでの正しい質問は次のようなものでなければなりません:標準出力はCron内でどこに行きますか?

別のプログラムにリダイレクト(>>>)またはパイプ(|)されない限り、通常すべてが STDOUT に出力されます(実行する場合)すべてのエラーメッセージを含むコマンドラインのコマンド)は、Cronjobを実行するユーザーのローカルメールボックスに送信されます。これらの電子メールを送受信するには、ここで説明されている最小構成を適用する必要があります。電子メールを送信するようにCronを設定するにはどうすればよいですか?

提案された複製のほとんどの提案 Cronjobの出力をTTYまたはターミナルウィンドウにリダイレクトする方法を説明しますが、出力を取得するには、事前に(そのTTYまたはターミナルウィンドウで)ログインする必要があります。追加の例を次に示します。


さらに、この場合:

  • cd /home/は必要ありません。スクリプトはそこに何も書き込まず、スクリプトはそのフルパスによって呼び出されるためです。
  • /usr/bin/pythonは、シバン#!/usr/bin/env pythonによってPythonスクリプトであるとシステムに伝えるため、必要ありません。ただし、この場合、ファイルにはchmod +x /home/hello.pyという実行権限が必要です。
2
pa4080

これを試すことができます!

* * * * * cd /home/ && /usr/bin/python /home/hello.py >> /dev/tty3

(または、tty3でない場合は、tty)

0
SETO 1989