LINUX.ORG.RU

Почему нельзя редактировать crontab напрямую?

 , , , ,


0

2

Друзья, тут вот какая ситуация. Разработчики дистрибутива Calculate Linux обновили дистрибутив и включили в него фичу автосинхронизации оверлеев. Запуск обновляльной тулзени cl-update производится посредством cron, причём их скрипты запихивают задание путём прямого редактирования /etc/crontab.

Я считаю, что это неправильно, что для этого есть либо утилита crontab, через которую надо добавлять задания, либо группа директорий /etc/cron.d, /etc/cron.hourly, /etc/cron.daily и прочее, в которые нужно класть скрипты.

Проблема вот в чём. Я знаю что это неправильный метод добавления задачи, но у меня не хватает аргументов объяснить разработчикам «почему неправильный»? В связи с этим прошу, приведите мне аргументы, почему нельзя редактировать crontab напрямую?

Или выскажитесь сами в http://www.calculate-linux.ru/boards/33/topics/26598

★★★★★

Я знаю что это неправильный метод добавления задачи

но у меня не хватает аргументов объяснить разработчикам «почему неправильный»

Откуда же ты знаешь? Дядя Вася из соседней квартиры по секрету сказал?

daemonpnz ★★★★★
()

Ну, аргумент может быть только один. Общесистемный (/etc/crontab) не должен меняться по каждому чиху. Его может редактировать админ, и срать в него свои высеры никакой софт не должен, для этого есть /etc/cron.d. А утилита crontab редактирует пользовательский crontab, куда никакой софт тоже срать не должен. Это из разряда хранения бинарей в /usr/share.

Black_Shadow ★★★★★
()
Последнее исправление: Black_Shadow (всего исправлений: 1)
Ответ на: комментарий от daemonpnz

Откуда же ты знаешь? Дядя Вася из соседней квартиры по секрету сказал?

Книжки разные по юниксам читал, давно правда, в прошлом веке. Там писали «используйте утилиту crontab». Ну и вот ещё чутьё какое то, что не зря она есть...

Jameson ★★★★★
() автор топика
Ответ на: комментарий от Black_Shadow

Ну, аргумент может быть только один. Общесистемный (/etc/crontab) не должен меняться по каждому чиху. Его может редактировать админ, и срать в него свои высеры никакой софт не должен, для этого есть /etc/cron.d.

Ну это очевидное утверждение, однако слишком общее. Что конкретно неприятного может произойти, если редактировать /etc/crontab напрямую, путь даже не скриптами. Какие бока могут вылезти в практическом плане? Не зря ведь для этого спецтулзень есть?

А утилита crontab редактирует пользовательский crontab, куда никакой софт тоже срать не должен.

Ну root тоже пользователь. И его crontab она тоже редактирует.

Jameson ★★★★★
() автор топика
Ответ на: комментарий от Jameson

А ты пост внимательно прочитал?

Нет :)

xorik ★★★★★
()
Ответ на: комментарий от Eddy_Em

Это кто так сказал? Что за бред?

В книжках пишут... Используйте мол спецтулзу crontab... Вот я и пытаюсь понять, таки можно или нет, и если нельзя, то почему? Я типа конформист такой, мне сказали в прошлом веке умные люди: «нельзя», я и соблюдаю.

Но тебе, Эдди, можно! Ты с бедной гентой такое вытворяешь, я массу удовольствия получаю читая твои посты. Так что тебе можно всё!

Jameson ★★★★★
() автор топика
Ответ на: комментарий от Jameson

В книжках пишут...

на заборах тоже пишут. и?

мне сказали в прошлом веке умные люди: «нельзя», я и соблюдаю.

Научи дурака богу молиться...

daemonpnz ★★★★★
()

А еще sudoers надо править только через visudo, ага-ага.

entefeed ☆☆☆
()
Ответ на: комментарий от Jameson

О, переходим на личности, как замечательно. Ты себя с разрабами калькулятора так же ведёшь? Детский сад «Ромашка» на прогулке, ей богу.

Ну вот можешь же когда хочешь, правда тут же скатился до игнора. Надеюсь игноришь силой воли, как взрослый человек, а не кнопкой в профиле, как нытик детсадовский.

daemonpnz ★★★★★
()
Последнее исправление: daemonpnz (всего исправлений: 1)
Ответ на: комментарий от entefeed

Проблема подробно описана парой постов позже. Человек хотел сделать etc-update, и хорошо, что не сделал, т.к. crontab в который утилита хотела понаписать был бы затерт, вместе с тем, что утилита туда записала.

takino ★★★★★
()
Ответ на: комментарий от Jameson

crontab -e, visudo и проч отличаются от просто vim /path/to/file проверкой валидности того, что ты пишешь внутрь собственно файла.

takino ★★★★★
()
Ответ на: комментарий от Jameson

Используйте мол спецтулзу crontab...

это всего-лишь защита от дурака, который забудет и не сделает перенос строки в конце файла

imul ★★★★★
()
Ответ на: комментарий от entefeed

Ты развел тараканов в своей голове, и разработчиков дергаешь попусту.

Возможно. Просто мне всё равно это кажется почему то интуитивно неправильным. Если что то пойдет криво в процессе правки crontab есть риск потерять подсистему, а кривой скрипт в /etc/cron.blabla это просто кривой скрипт... Крон глобально он мне не сломает никогда. Если пользоваться утилитой, то она проверяет корректность...

Jameson ★★★★★
() автор топика
Ответ на: комментарий от daemonpnz

Ну вот можешь же когда хочешь, правда тут же скатился до игнора. Надеюсь игноришь силой воли, как взрослый человек, а не кнопкой в профиле, как нытик детсадовский.

Хамить с налёту не надо. Проехали.

Jameson ★★★★★
() автор топика
Ответ на: комментарий от Jameson

С налёту никто не хамил, кроме тебя. А так конечно же, проехали. «Это же ЛОР, детка.»

daemonpnz ★★★★★
()
Ответ на: комментарий от imul

Например, наличие необходимого числа полей или ключевых слов (вроде @reboot и т.п.)


«/tmp/crontab.NsESXV/crontab»:25: bad minute
errors in crontab file, can't install.
Do you want to retry the same edit? (y/n) n

YAR ★★★★★
()
Последнее исправление: YAR (всего исправлений: 1)
Ответ на: комментарий от Jameson

Не знаю. Если не проверяет, зачем она нужна тогда?

Как минимум crontab -e проверяет перевод строки в конце файла и формат задания времени. Камрад YAR вон не поленился минуты попортить. :)
Но, в том варианте, какой ты рассматриваешь, задания не являются рукописными.

imul ★★★★★
()

Если не ошибаюсь в тех же книжках прошлого века говорилось что при редактировании кронтаба в ручную нужно перезапускать демон крона чтобы он перечитал файл, но на сколько это актуально сейчас... К тому же кроны бывают разные, это не одна определенная программа...

TDrive ★★★★★
()
Ответ на: комментарий от YAR

Это всего-лишь элементарная защита от дурака. А с @reboot я за 17 лет вообще столкулся один раз. Напортить можно что-то от сильного непонимания, или по пьяни. Скрипт же трезв и предсказуем. Единственный недостаток — необходимость cron-у перечитывать задания после ручной модификации файла. Да и потом, на куче однотипных машин проще массово разбросать сам файл и дёрнуть cron, чем городить конструкции с автоматизацией для crontab -e.

imul ★★★★★
()

никогда кронтаб не разрастался до сотен тысяч записей, из-за неверной автоматизации добавления в него записи? у меня такое было.
а на самом деле такие вещи надо делать отдельным демоном.

bl ★★★
()

Банально: редактируешь crontab руками ≣ нарываешься на гонки. crontab -e умеет в локи, поэтому проблемы нет. 2 разных процесса, редактирующих /etc/crontab напрямую (один из них может быть crontab -e) — путь к граблям, при одновременном редактировании запишутся правки только одного из них.

ИМХО: пакетный менеджер не должен лезть в /etc/ вообще и оставить его юзеру. К сожалению, в линуксах ещё не всё готово к этому, но Поттеринг вполне себе движется сюда.

x3al ★★★★★
()
Последнее исправление: x3al (всего исправлений: 2)
Ответ на: комментарий от x3al

а то, что там

[[ $(stat -c%y /proc/1| sed -e 's/\..*$//' -nre 's/.*:.*:([0-9]+)/\1/p') == $(date '+%M') ]] || exit 0

[ $(cut -d. -f1 < /proc/uptime) -gt 300 ] || exit 0
первая строчка эквивалентна
[ $(cut -d. -f1 < /proc/uptime) -le 60 ] || exit 0
тебя не смутило?

anonymous
()
Ответ на: комментарий от anonymous

хотя там вообще уита — секунды с минутами сравниваются

anonymous
()

Я знаю что это неправильный метод добавления задачи

Абсолютно верно. Не слушай дятлов типа Эдика.

Конфиги должны быть организованы по модулям, если позволяет синтаксис. Никто не держит все виртуалхосты в одном файле nginx.conf или httpd.conf, хотя такая возможность есть.

Это первое. Второе: если поделие требует записи в crontab, логично эту запись уничтожать при удалении поделия. В случае с отдельным файлом мы просто удаляем этот файл.

anonymous
()
Ответ на: комментарий от bl

а на самом деле такие вещи надо делать отдельным демоном

++

anonymous
()
Ответ на: комментарий от x3al

ИМХО: пакетный менеджер не должен лезть в /etc/ вообще и оставить его юзеру

В FreeBSD разумно принятно разделять /etc и /usr/local/etc. Ты об этом?

anonymous
()

Они неправы, но если ты не можешь их убедить то просто смотри на это сквозь пальцы. Они делают дистрибутив, который тебе нужен, и они просто живые люди со своими тараканами. Если дистрибутив устраивает то считай это меньшим злом.

sin_a ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.