cron queuing bash и скрипты python

Sep 29 2020

В настоящее время я хочу понять и освоиться с очередями crontab на моем MacBook Pro. Недавно я решил проблему, из-за которой мой простой сценарий 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. 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 и "команда не найдена"
  • cronjobs не запускаются
  • Получение неизвестной командной ошибки при попытке запустить скрипт через cron