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

Запуск wget как cron

Я хочу загрузить архивы резервных копий с одного сервера на другой. На сервере есть сценарий, доставляющий последний архив резервных копий, файл имеет определенное имя для каждой даты. Я хочу, чтобы wget сохранил это имя.

Когда я бегу:

wget -q --content-disposition 'http://server.example.com/get/latest'

он делает именно то, что я хочу. Я также могу скачать файл в браузере.

Однако, когда я помещаю это в сценарий оболочки и пытаюсь запустить его как задание cron, ничего не происходит. Я не вижу ошибок в /var/log/syslog.

Вот весь сценарий оболочки:

#!/bin/sh
wget -q --content-disposition 'http://bkp.www1.linux.local/get/latest'

Я тоже пробовал #!/bin/bash, результат тот же.

Что я делаю не так?

Скажите вашему сценарию, чтобы он записал журнал или провел собственную отладку. При следующем запуске вы получите все ответы. Если он не отлаживает должным образом, следующим шагом будет виноват cron.

Я вижу, вы не говорите своему сценарию, куда его скачать? Возможно тебе следует? cd /some/path перед wget?

Мой любимый

Если ваша система может отправлять электронную почту, попробуйте добавить MAILTO в ваш crontab, поэтому любой вывод (stdout / stderr) будет куда-то полезен. Я настраиваю каждый сервер таким образом.

Больше никаких секретов cron!

Вы не предоставили подробностей, как вы настроили задание cron (для пользователя, для всей системы, ...). Вы уверены, что запись cron правильно отформатирована (как забытое поле)? системная запись cron должна выглядеть так

0 1 * * 0 root /usr/bin/my-command

Я перефразирую man 5 crontab

field          allowed values
-----          --------------
minute         0-59
hour           0-23
day of month   1-31
month          1-12 (or names, see below)
day of week    0-7 (0 or 7 is Sunday, or use names)
user           user of the system
command        the command to run (should be executable)

Если вы создали запись cron пользователя, с crontab -e вам следует опустить user поле.

Убедитесь, что текущий рабочий каталог (в котором выполняется сценарий) доступен для записи сценарию. Взгляните на https://unix.stackexchange.com/questions/38951/what-is-the-working-directory-when-cron-executes-a-job

Пожалуйста, проверьте, является ли ваш скрипт исполняемым, добавив следующие разрешения:

# chmod +x <your_script_name>

Затем проверьте, может ли сценарий быть выполнен под вашим текущим системным пользователем:

# ./<your_script_name>

Если все работает нормально, не могли бы вы поделиться настройками задания cron для дальнейшей проверки?