Скрипт оболочки не работает с cron
У меня есть этот сценарий оболочки в /usr/local/1.sh:
#!/bin/sh
wget -r -np --user=peter --password='123' ftp://67.225.87.95/ -p /test/
Если я запускаю его с помощью
# sh 1.sh
скрипт выполняется нормально и делает то, что должен делать.
Но если я создаю задание cron для выполнения точно такого же сценария:
1 2 * * * /usr/local/bin/1.sh
скрипт не выполняется вообще.
Что может быть не так?
3 ответа
- Всегда используйте полный путь, когда делаете что-то в работе cron
- Перенаправьте весь вывод, ошибка в файл журнала, чтобы увидеть, что произойдет:
1 2 * * * /usr/local/bin/1.sh > /var/log/1.log 2>&1
Если вы собираетесь запустить его напрямую, не вызывая интерпретатор оболочки, вам необходимо предоставить соответствующие разрешения:
chmod +x /usr/local/bin/1.sh
В противном случае, запустите интерпретатор против его:
1 2 * * * /bin/sh /usr/local/bin/1.sh
Заменить:
1 2 * * * /usr/local/bin/1.sh
От:
1 2 * * * /bin/bash /usr/local/bin/1.sh
или же
Оставь это:
1 2 * * * /usr/local/bin/1.sh
И добавьте следующее к /usr/local/bin/1.sh
:
#!/bin/bash
(возможно, вам придется заменить /bin/bash
кем бы то ни было which bash
говорит тебе)