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

Почему в моем crontab работает только одна команда wget?

Я хочу получать контент из PHP-скрипта на моем сервере два раза в день, изменяя переменную запроса lang чтобы установить, какой язык мы хотим, и сохранить это содержимое в двух языковых файлах. Это мой crontab:

*/15 * * * * ~root/apache.sh > /var/log/checkapache.log
10 0 * * * wget -O /path/to/file-sv.sql "http://mydomain.com/path/?lang=sv"
11 0 * * * wget -O /path/to/file-en.sql "http://mydomain.com/path/?lang=en"

Проблема в том, что выполняется только первая командная строка wget (или, если быть точным: единственный записываемый файл - это /path/to/file-sv.sql). Если я переключу вторую и третью строки, /path/to/file-en.sql вместо этого пишется. Первая строка всегда работает должным образом, независимо от того, где она находится.

Затем я попытался использовать lynx -dump "http://mydomain.com/path/?lang=xx" > /path/to/file-xx.sql но безрезультатно; по-прежнему успешно выполнена только первая строка lynx. Даже смешивание wget и lynx не изменило этого!

В отчаянии! Я что-то упускаю? Есть тысячи статей о crontab (в сочетании с) wget или lynx, но все они, кажется, охватывают базовые настройки и синтаксис. Кто-нибудь понимает, что я делаю не так?

Спасибо,
Александр

Попробуйте добавить новую строку в конец вашего crontab.

Что-то не так с текстом. Отредактируйте ваш crontab в vim, затем покажите невидимые символы.

:set invlist

Вы должны увидеть, а затем исправить это.

Я просто потратил некоторое время, пробуя приведенные выше ответы (добавление новой строки, удаление новой строки и т. Д.) В системе, работающей приятель. Наконец-то обнаружена ошибка в cronie 1.5.3 который выполняет только первое задание cron для каждого пользователя. Это исправлено в 1.5.4

https://github.com/cronie-crond/cronie/issues/30

Надеюсь, это кому-то сэкономит время ...

Попробуйте добавить перенаправление, чтобы отладить crontab (или прочитать корневую почту):

11 0 * * * wget -O /path/to/file-en.sql "http://mydomain.com/path/?lang=en" > /tmp/crontab_ouptput 2> /tmp/crontab_error

Также запустите 'wget -O /path/to/file-en.sql "http://mydomain.com/path/?lang=en"'из консоли.

Также используйте crontab -e для проверки нового crontab.

Также попробуйте удалить неработающую строку и повторно набрать ее с клавиатуры.

Сделайте резервную копию corntab и запустите команду:

crontab -l | crontab -