У меня есть сценарий, который отлично работает, если я вызываю его из командной строки с помощью Bash. Но когда cron пытается запустить его, он выдает ошибку «mysql: command not found».
Я думаю, это потому, что cron не использует bash в качестве оболочки, но я не могу понять, как заставить cron использовать bash.
Я попытался добавить это в начало скрипта:
#!/bin/bash
Но без радости. Как заставить cron использовать bash в качестве оболочки? Я новичок в bash и cron, поэтому мне может не хватать чего-то простого. Я прочитал несколько сообщений о сбоях сервера (мог бы ссылаться на них все, но я не могу, новый пользователь) и попытался понять и применить информацию, как мог, плюс много погуглил, но застрял.
лучше всего использовать абсолютные пути к командам в сценариях cron. так что вы не полагаетесь на какие-либо настройки PATH, которые вы могли настроить.
Pulegium прав, проблема не в типе оболочки, а в PATH. Когда cron запускается, у него очень ограниченный путь поиска, вместо того, чтобы mysql
в вашей команде вы должны поставить /path/to/mysql
с фактическим путем к исполняемому файлу. Обычно что-то вроде /usr/local/bin/mysql
. Вам придется искать его, чтобы найти точный путь. Кроме того, если это была проблема оболочки, в вашем файле cron вы можете запустить bash, а затем запустить свой скрипт: /bin/bash /path/to/script.sh
, это гарантирует, что файл будет обрабатывать bash.