Я хочу загрузить архивы резервных копий с одного сервера на другой. На сервере есть сценарий, доставляющий последний архив резервных копий, файл имеет определенное имя для каждой даты. Я хочу, чтобы 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 для дальнейшей проверки?