cronキューイングbashおよびpythonスクリプト

Sep 29 2020

私は現在、私のmacbookproのcrontabキューを理解して慣れることを目指しています。最近、単純なbashスクリプトが実行されない問題を解決しました。bashスクリプトとその出力を/Users/myusername/パスに移動する必要があったことがわかりました。私がそれを持っていた前に/Users/myusername/Desktop/。この投稿はここにあります-https://stackoverflow.com/questions/64110897/simple-bash-script-doesnt-cron-properly?noredirect=1#comment113370465_64110897

私の質問:すべてのbashおよびpythonスクリプト/Users/myusernameを常にパスに格納する必要がありますか?回避策はありませんか?

回答

3 Seamus Sep 30 2020 at 13:36

質問:

私の質問:すべてのbashおよびpythonスクリプト/Users/myusernameを常にパスに格納する必要がありますか?回避策はありませんか?

回答:

いいえ。bashスクリプトとpythonスクリプトはどこにでも配置できます。ただし、追加の要件があります。

  1. あなたのcron仕事は異なると実行環境あなたがそれらを実行したときに比べて、例:$PATH。したがって、;でスクリプトを指定するには、フルパス仕様を使用する必要がありcrontabます。使用例:
* * * * * /opt/local/bin/python3 /some/dir/you/choose/myscript.py
  1. 私のMac(Catalina)では、に「フルディスクアクセス」権限を与える必要があることがわかりましたcron。別のOSバージョンのYMMV。方法は次のとおりです。

System Preferences -> Security & Privacy -> Privacyタブ:

  1. 少なくともながらデバッグあなたのcron仕事を、あなたは(すべてのエラーメッセージをリダイレクト検討すべきstderrファイルに) -そうでなければ、中に巻き上げる/dev/null有用されていません!上記の例を続ける:
* * * * * /opt/local/bin/python3 /some/dir/you/choose/myscript.py >> /Home/<username>/MyCronLog.txt 2>&1
2 bmike Sep 29 2020 at 07:24

要素に権限を付与し、すべてにフルパスを使用する必要がある場合があります。インタラクティブシェルを使用しているときにスクリプトが実行されるからといって、限られたシェルでスクリプトが正しいとは限りません。

ここに最近の質問に関するスーパーデバッグのヒントがあります。

  • cronと「コマンドが見つかりません」
  • cronジョブは実行されません
  • cron経由でスクリプトを実行しようとすると、不明なコマンドエラーが発生します