Чому в моєму кронтабі працює лише одна команда wget?


15

Я хочу отримати вміст із 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безрезультатно; досі успішно виконана лише перша лінія рисі. Навіть змішування wget та lynx цього не змінило!

Дещо відчайдушно! Я щось пропускаю? Є тисячі статей про crontab (у поєднанні з) wget або lynx, але всі, здається, охоплюють основні настройки та синтаксис. Хтось зрозумів, що я роблю неправильно?

Спасибі,
Олександре


Ви впевнені, що щоразу, коли ви отримуєте доступ до mydomain.com/path/?lang=en, щось повертається? Ви спробували це з командного рядка, щоб побачити, що відбувається (wget -O - mydomain.com/path/?lang=en )?
Торіан

1
Я б спробував стерти та відтворити повернення вагона між 2 та 3.
Блох Антоніус

Найкраща практика полягає в тому, щоб вказати повний шлях до виконуваних файлів у crontab. Як: "/ usr / bin / wget". Я не думаю, що це допоможе у вашому випадку, оскільки одна з корон працює.
Антоній Блох

Що відображається в журналі хронів, коли це відбувається?
квасоля

@Torian: працює як шарм.
Олександр Уоллін

Відповіді:



2

У тексті є щось, що неправильно. Відредагуйте свій crontab in vim, а потім покажіть невидимі символи.

:set invlist

Ви повинні мати можливість побачити, а потім виправити.


Неправильно як? Як редагувати його у Vim? Я спробував переписати весь файл у тому випадку, якщо вставлення копій спричинить проблеми.
Олександр Уоллін

@afEkenholm: як редагувати це зараз?
bahamat

1
@bahamat:# crontab -e
Олександр

@afEkenholm: зроби так:EDITOR=vim crontab -e
bahamat

@bahamat: Все виглядає просто добре. Чи є фіолетовий $в кінці кожного рядка?
Олександр Уоллін

1

Спробуйте додати переспрямування, щоб налагодити 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.

Також спробуйте видалити не працюючий рядок і введіть його знову з клавіатури.

Резервне копіювання заголовок і запуск команди:

crontab -l | crontab -

Додавання /tmp/crontab_ouptput 2> /tmp/crontab_errorпрацює лише для першого рядка. Запуск команди з консолі працює чудово. Переписав цілий файл голими руками, але нічого не змінилося.
Олександр Уоллін

Створіть резервну копію кронта та спробуйте: crontab -l | crontab -
alvosu

Дякую за зусилля, @alvosu, але простий новий рядок зробив трюк!
Олександр Уоллін

1

Я просто витратив деякий час на те, щоб перелічити вищезазначені відповіді (додавання нових рядків, видалення нових рядків і т. Д.) У системі, що працює з кроном . Нарешті виявлено, що у кроні 1.5.3 є помилка, яка виконує лише перше завдання cron для кожного користувача . Це зафіксовано в 1.5.4

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

Сподіваюся, це економить когось деякий час ...

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.