У меня есть два сервера на линоде, на которых есть несколько веб-сайтов. Я создал сценарий, чтобы увидеть, работает ли mysql на сервере, и если он не запущен, сценарий запустит mysql. Скрипт находится на обоих серверах и в одной файловой структуре.
Я добавил сценарий в cron с помощью команды «crontab -e» с обоими серверами. Проблема в том, что мой dev-сервер будет запускать скрипт, в то время как prod-сервер не будет работать. Я добавил пробелы в конец crontab, поэтому знаю, что проблема не в этом.
Когда скрипт запускается на prod-сервере вручную, я получаю следующее сообщение об ошибке «(Для« -p »не может быть прочитана информация: geteuid () = 1000, но вы должны быть пользователем root.)». Несмотря на то, что появляется ошибка, сценарий по-прежнему перезапускает mysql, но когда сценарий выполняется с помощью cron, mysql не перезапускается. Также обратите внимание, что я запустил сценарий на сервере разработки и получил ту же ошибку. Несмотря на наличие ошибки, сценарий будет запускаться на dev и перезапустить mysql при запуске через cron.
Когда я запускаю команду под sudo на сервере разработки, она не запрашивает пропуск, но когда я запускаю ее на сервере prod, меня спрашивают пароль.
Я проверил системный журнал и знаю, что команда cron запущена.
В сценарии используется команда netstat с параметрами -v -u -l -n -t -p.
кое-что, на что следует обратить внимание
запустите visudo от имени пользователя root и посмотрите, указан ли там пользователь Должно быть что-то вроде (ваш пользователь, где имя пользователя)
имя пользователя ВСЕ= (ВСЕ )NOPASSWD :ВСЕ
Это позволит вам использовать sudo без пароля. Если нет, добавьте его, а затем повторите попытку.
Теперь, если он по-прежнему не запускается как cron, это звучит так, как будто запись cron верна, но, возможно, сценарий неправильный. Похоже у вас кроны палят от того что вы написали вы это видели в системных журналах. попробуйте chmod 755 /path/to/script.sh
Повторно запустить задание cron.
Если он по-прежнему не запускается, проверьте владельца скрипта. имя пользователя chown /path/to/script.sh
Дайте нам знать, если это поможет.