@sergeyll212

Не работает bin/bash в крон. Как решить?

Здравствуйте
Добавил в /var/spool/cron/crontabs/root

@reboot /var/www/user_site/data/www/nodejs/zapusk-nodejs.sh - не работает
@reboot root /bin/bash /var/www/user_site/data/www/nodejs/zapusk-nodejs.sh - не работает

sudo chmod +x zapusk-nodejs.sh - не помогло
Вручную работает
cd /var/www/user_site/data/www/nodejs/
bash zapusk-nodejs.sh - работает

В чем может быть причина?
  • Вопрос задан
  • 115 просмотров
Пригласить эксперта
Ответы на вопрос 2
@SunTechnik
Да тут вариантов ошибок - куча..
1. Файл задания cron напрямую не редактируется. Для этого есть :
crontab -e

2. При прямом релктировании - есть риск ошибиться с форматом. Что у Вас сейчас в файле - непонятно. На первый взгляд, это не формат данного файла

3. Если все же файл редактировали руками, cron надо перезапустить, что бы он перечитал задание.

4. В логе работы cron будеет видно, запускал ли он задание и коды возврата.

5. Как Вы сами пишите, перед запуском команды надо перейти в определенный каталог. Cron об этом ниичего не знает. Команда cd долдна быть внутри скрипта.

6. Хорошим тоном считается, если скрипт начинается со строки, определяющей тип требуемого интерпритатора.
#! /usr/bin/bash

7. При запуске скрипта не надо запускать интерпритатор. Достаточно указать сам скрипт и что бы он имел права исполнения..

.......
Ответ написан
Комментировать
@hx510b
"Я знаю, что ничего не знаю"
пропишите при каждом вызове скрипта bash с полным путем, тогда будет работать надежно.
cron как правил запускает задачи без переменных окружения, а значит переменная PATH пустая.
если это cron пользователя, то указывать пользователя не надо:
@reboot /usr/bin/bash /var/www/user_site/data/www/nodejs/zapusk-nodejs.sh

если cron системный, то надо прописать пользователя:
@reboot root /usr/bin/bash /var/www/user_site/data/www/nodejs/zapusk-nodejs.sh

в этом варианте я бы создал файл задания в каталоге /etc/cron.d/zapusk-nodejs, а не мучал бы crontab
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы