Я хочу получать контент из 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 -