次の問題があります。「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スクリプトが機能しないのですか?
スクリプトは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
という実行権限が必要です。これを試すことができます!
* * * * * cd /home/ && /usr/bin/python /home/hello.py >> /dev/tty3
(または、tty3でない場合は、tty)