Назад | Перейти на главную страницу

Сценарий оболочки не работает с 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

скрипт вообще не выполняется.

Что могло быть не так?

Если вы собираетесь запускать его напрямую, не вызывая интерпретатор оболочки, вам необходимо предоставить соответствующие разрешения:

chmod +x /usr/local/bin/1.sh

В противном случае запустите интерпретатор против его:

1 2 * * * /bin/sh /usr/local/bin/1.sh
  • Всегда используйте полный путь, когда делаете что-то в cron job
  • Перенаправьте весь вывод ошибки в файл журнала, чтобы увидеть, что произойдет: 1 2 * * * /usr/local/bin/1.sh > /var/log/1.log 2>&1

Заменить:

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 говорит вам)