Скрипт оболочки не работает с 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 говорит тебе)

Другие вопросы по тегам