
У меня есть очень простой bash-скрипт (run-build.sh):
cd /var/www/project
npm run build
Этот скрипт работает нормально, когда я запускаю его из командной строки, но я хочу запускать его каждые 30 минут с помощью задания cron:
*/30 * * * * /var/www/project/run-build.sh >> /var/www/test.log 2>&1
Что по какой-то причине не работает. Я пробовал разные другие подходы, например, запуск задания cron от имени пользователя root или добавление пути к узлу как части задания cron. Однако мне пока не удалось найти решение, поэтому я сейчас пишу здесь.
У кого-нибудь есть идеи, как заставить это задание cron работать?
решение1
Я обновил задание cron на:
* */12 * * * sudo -u user /var/www/project/run-build.sh >> /var/www/test.log 2>&1
и теперь это работает. Я уверен, что пробовал это раньше, но, должно быть, я пробовал что-то другое.
решение2
У меня была похожая проблема. В моем случае проблема была в том, что у моего скрипта .sh не было прав на выполнение.
Проверьте, имеет ли файл скрипта разрешение на выполнение ( x
флаг) с помощью ll
. Если нет, то что-то вроде:
chmod 744 file
должен позволить вашему пользователю выполнить его без прав root.