cronキューイングbashおよびpythonスクリプト
私は現在、私の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を常にパスに格納する必要がありますか?回避策はありませんか?
回答
質問:
私の質問:すべてのbashおよびpythonスクリプト
/Users/myusernameを常にパスに格納する必要がありますか?回避策はありませんか?
回答:
いいえ。bashスクリプトとpythonスクリプトはどこにでも配置できます。ただし、追加の要件があります。
- あなたの
cron仕事は異なると実行環境あなたがそれらを実行したときに比べて、例:$PATH。したがって、;でスクリプトを指定するには、フルパス仕様を使用する必要がありcrontabます。使用例:
* * * * * /opt/local/bin/python3 /some/dir/you/choose/myscript.py
- 私のMac(Catalina)では、に「フルディスクアクセス」権限を与える必要があることがわかりました
cron。別のOSバージョンのYMMV。方法は次のとおりです。
System Preferences -> Security & Privacy -> Privacyタブ:
- 少なくともながらデバッグあなたの
cron仕事を、あなたは(すべてのエラーメッセージをリダイレクト検討すべきstderrファイルに) -そうでなければ、中に巻き上げる/dev/null有用されていません!上記の例を続ける:
* * * * * /opt/local/bin/python3 /some/dir/you/choose/myscript.py >> /Home/<username>/MyCronLog.txt 2>&1
要素に権限を付与し、すべてにフルパスを使用する必要がある場合があります。インタラクティブシェルを使用しているときにスクリプトが実行されるからといって、限られたシェルでスクリプトが正しいとは限りません。
ここに最近の質問に関するスーパーデバッグのヒントがあります。
- cronと「コマンドが見つかりません」
- cronジョブは実行されません
- cron経由でスクリプトを実行しようとすると、不明なコマンドエラーが発生します