Сценарий в cron не может найти команду

У меня есть скрипт, который выгружает базу данных и загружает файл SQL в Swift. Я столкнулся с проблемой, когда сценарий отлично работает в терминале, но не работает в cron.

Немного отладки, и я обнаружил, что команда /usr/local/bin/swift не найдена в скрипте.

Вот моя запись crontab:

 */2 * * * * . /etc/profile; bash /var/lib/postgresql/scripts/backup 

Вот что я пробовал:

  1. Использование полного пути для swift /usr/local/bin/swift
  2. Выполнение скрипта /etc/profile перед выполнением сценария bash.

Как я могу это решить?

2 Solutions collect form web for “Сценарий в cron не может найти команду”

Cron не работает с той же средой, что и пользователь. Если вы сделаете следующее, вы увидите, что я имею в виду:

введите env из приглашения на терминал и обратите внимание на результат.

Затем установите задание cron, подобное этому, и сравните его вывод с предыдущим:

 */5 * * * * env > ~/output.txt 

Вы обнаружите, что проблема, вероятно, crontab тем, что crontab не имеет той же PATH что и ваш пользователь. В качестве решения для этого вы можете (от своего пользователя postgres) выполнить echo $PATH а затем скопировать результаты этого в первую строку вашего crontab (что-то вроде этого)

 PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/jbutryn/.local/bin:/home/jbutryn/bin 

Или, если вы хотите быть более конкретным, вы можете просто добавить следующее:

 PATH=$PATH:/usr/local/bin 

Тем не менее, я обычно всегда ставил PATH моего пользователя в crontab, потому что я еще не слышал, что это не так, и вы, скорее всего, столкнетесь с этой проблемой, если этого не произойдет.

Вы сделали одну из самых распространенных ошибок cron . Если вы используете определенную среду, добавьте путь к $ PATH:

 # User specific environment and startup programs PATH=$PATH:$HOME/bin:/usr/sbin:/usr/bin:/script export PATH 

Также проверьте свой журнал cron (/ var / log / cron или / var / log / syslog). И проверьте разрешение пользователя на двоичные файлы.

  • Скопировать файлы с длинными именами
  • Как я могу получить шрифт Terminus на gnome-terminator?
  • Нет ttyUSB при подключении USB-RS485 к Beaglebone Black
  • Как я могу сделать Ubuntu UI равномерно использовать сочетания клавиш bash?
  • Curl. Проверить перенаправление
  • Как очистить / tmp?
  • Удаленный (REST) ​​API для системного администрирования
  • Как вы исправляете обновление apt-get «Несоответствие хэш-суммы»
  • gvfs и разрешения на удаленном внешнем USB-накопителе
  • .sh-файл, используемый sftp после загрузки и не может быть выполнен
  • Монтажные объемы докеров
  • Linux и Unix - лучшая ОС в мире.