Метки
amd bittorrent bug centos debian enlightenment fedora fedora 8 fedora 9 fedora 10 fedora 11 fedora 12 fedora 13 fedora 15 fedora 16 FedoraMD fglrx firefox flash player gnome google intel interview java kde kernel linux livecd migrate moldova nvidia openoffice OpenStreetMap opera Orange ovirt radeon red hat rpmfusion Sandel skype video virtualisation vmware wine
сrontab в Ubuntu и Fedora
2010-02-22 13:08 | Автор: Vasile Chelban | Filed under: Vasile
Стучится убунтовод мне в скайп с задачкой - в пользовательском crontab'e из двух задач выполняется только первая. Ответ мой был прост - "зри в лог!". Оказалось там ничего интресного. Точнее интересно то что по второй задаче ничего нет - ни ошибок, ни чего. Тут на меня находит прозрение - "ты каким редактором пользуешься?". В ответ - mcedit. Сразу совет - добавь "\n" в конец файла. Догадка оказалась верна - cron распознал только строки завершающиеся на символ перевода строки.
Так как оба мы не боимся глядеть в корень - нахожу страницу описания пакета для его версии Ubuntu, качаю исходники cron-3.0pl1-106ubuntu3 и убеждаюсь что он не использует стандартные функции вроде fgets(), но по символьный ввод с явной проверкой на "\n". Не самый красивый и эффективный код.
Теперь вспоминаю что у меня Fedora, и в Fedora за последние выпуски не раз менялся cron демон. Сейчас - cronie (наследник классического vixie-cron), но доступен и fcron. Уже не гляжу в исходники, а просто создаю crontab пользователя (crontab -e). В vim'e ввожу 2 строки, проверяю - работают обе. Анализирую и понимаю что vim корректно вставил перенос строк в конец файла. Имитирую use case с Ubuntu: EDITOR=mcedit crontab -e и удаляю все после конца второй строки.... Момент истины..
$ EDITOR='mcedit' crontab -e
crontab: installing new crontab
"/tmp/crontab.XXXXEvdcxV":2: premature EOF
errors in crontab file, can't install.Do you want to retry the same edit? n
crontab: edits left in /tmp/crontab.XXXXEvdcxV
Всё правильно - соответствует общепринятому поведению и подчищает явно за пользователем. Ну разве не дружественный к пользователю интерфейс?
Метки:
22, 2010 13:36
а убунтоводы чешут репу 🙂
22, 2010 14:05
проверил — да, под debian никакой ошибки не выводится при отсутствии последнего переноса. К чему-бы это?
То есть я запустил
EDITOR=mcedit crontab -e
удалил последний перенос, и оно удачно перезагрузило новый crontab 🙂
22, 2010 14:06
@jekader
ты проверь — последнее задание выполняется?
22, 2010 21:32
неа 🙂