Спустя 15 лет с момента выпуска 1.0 состоялся (https://www.mail-archive.com/info-gnu@gnu.org/msg02427....) релиз проекта GNU Mcron 1.1 (https://www.gnu.org/software/mcron/), в рамках которого развивается реализации системы cron, написанная на языке Guile. Mcron на 100% совместим с Vixie cron и может выступать в роли его прозрачной замены. При этом кроме формата конфигурации Vixie cron в Mcron предоставляется возможность определения сценариев периодического запуска заданий, написанных на языке Scheme. Реализация Mcron включает в три раза меньше строк кода, чем Vixie cron.
Ключевой особенностью проекта является иной подход в организации планирования выполнения работ - вместо постоянного мониторинга времени в Mcron применяется выстраивание заданий в линейную очередь c определением задержек между вызовом каждого элемента очереди. В периоды между активацией заданий mcron полностью неактивен. Подобный подход существенно снижает накладные расходы при работе cron и увеличивает точность срабатывания заданий. Mcron может запускаться без привилегий root для обработки заданий текущего пользователя (пользователь может запустить свой демон mcron).
В новом выпуске в процедуру 'job' добавлен аргумент '#:user', позволяющий запускать задания под разными пользователями. Добавлена поддержка GNU Guile 2.2. Некоторые процедуры переписаны с использованием стиля функционального программирования. Переработана система сборки. Внутреннее представление очереди работ переведено на использование записей SRFI-9 вместо векторов. Для сборки однопользовательского варианта представлена опция "--disable-multi-user", которая заменила собой опцию "--enable-no-vixie-clobber". Модуль "mcron core" объявлен устаревшим и его место занял "mcron base".URL: https://www.mail-archive.com/info-gnu@gnu.org/msg02427....
Новость: https://www.opennet.dev/opennews/art.shtml?num=48296
> c определением задержек между вызовом каждого элемента очереди.
> подход существенно снижает накладные расходы при работе cron и увеличивает точность срабатыванияпаузы и stalled vm он как ловит в этом случае?
А также "отъезды" системного времени из-за подвижек с ntp, etcetera.
Перевод "настенных" часов можно отлавливать через API таймеров (TIMER_CANCEL_ON_SET)
> Перевод "настенных" часов можно отлавливать через API таймеров (TIMER_CANCEL_ON_SET)Это новая приблуда, интегрированная Поттерингом в systemd?
Нет, это ты невежественный болтун.man timerfd_create
> Нет, это ты невежественный болтун.
> man timerfd_createПральна! Зачем использовать clock_nanosleep,timer_set* или setitimer, когда можно взять и прибить гвоздями к пингвину!
> Пральна! Зачем использовать clock_nanosleep,timer_set* или setitimer, когда можно взять
> и прибить гвоздями к пингвину!Аноним спросил, что делать с переводами часов из-за NTP. Очевидно, что если clock_nanosleep не получает NTP-поправок, то рано или поздно, его показания начнут сильно расходиться с реальным временем.
> Очевидно, что если clock_nanosleep не получает NTP-поправок, то рано или поздно, его показания начнут сильно расходиться с реальным временем.Может и не совсем очевидно, но clock_nanosleep "умеет по разному" ;)
#include <stdio.h>
#include <time.h>
#include <stdlib.h>int main(void) {
struct timespec tv;if(clock_gettime(CLOCK_REALTIME, &tv)) {
perror("clock_gettime()");
return EXIT_FAILURE;
}
tv.tv_sec += 30;
tv.tv_nsec = 0;
puts("Sleeping until:");
puts(ctime(&tv.tv_sec));
if(clock_nanosleep(CLOCK_REALTIME, TIMER_ABSTIME, &tv,NULL)) {
perror("clock_nanosleep");
return EXIT_FAILURE;
}
puts("Hello World\n");
return EXIT_SUCCESS;
}
Вот тут оно будет спать именно до now + 30c, c учетом прыжков и поправок.А так - комбинируем CLOCK_REALTIME/MONOTONIC и 0/TIMER_ABSTIME, в зависимости от того, что нам нужно.
> Нет, это ты невежественный болтун.
> man timerfd_createУх ты, классная штука. Не знал о ней, спасибо! :)
https://stackoverflow.com/questions/3523442/difference-betwe...
Вещь! Забрал к себе. :)
Положи на место!
> Реализация Mcron включает в три раза меньше строк кода, чем Vixie cron.Какой смысл сравнивать, если они на разных языках?
>> Реализация Mcron включает в три раза меньше строк кода, чем Vixie cron.
> Какой смысл сравнивать, если они на разных языках?Строчка-детектор неосиляторов в CS, анализ програм и тп последние 50 лет развития .... Науки Об язЫках.
Нет, никакого смысла нет, не сравнивайте.
Я правильно понимаю, что одна и та же программа, исходный текст которой переформатирован на получение в трое большего количества строк - будет работать в три раза хуже?то есть вот это:
----
if ($a eq 'a') {print $a;}
----будет работать лучше этого:
if (
$a eq 'a'
)
{
print $a;
}
?
> Я правильно понимаю, чтоЯ сказал совсем не это.
За фантазии читателей администрация гардероба ответственности не несёт.
угу
Правильный подсчёт SLOC не должен зависеть от форматирования.
Они делают это потому что они могут это сделать. Не потому что это разумно или потому что имеет смысл и приносит пользу. Просто они могут сделать такое сравнение а для других вариантов - у них нет ни понимания ни методики.
браво. Собственно, и само написание неведомой хрени на неведомой хрени - ровно из той же серии. "потому что могут". А вариант вместо этого "мы взялись всерьез поддерживать vixie cron, а не пересоздавать мир начиная с черепахи" - "инвесторы не поймут-с".
>> Реализация Mcron включает в три раза меньше строк кода, чем Vixie cron.
> Какой смысл сравнивать, если они на разных языках?Мысль в том, что чем больше кода -- тем хуже алгоритм укладывается в голове у разработчика, что косвенным образом кореллирует с бажностью продукта в целом. Поэтому сравнивать продукты на разных языках на предмет sloc имеет смысл.
Это не мысль, а глупость. Прямой связи между количеством строк и сложностью алгоритма нет и никогда не было.
Это ты глупость. Мысль правильная. Связь есть.
Никак не могу запретить Вам спорить со скрытым смыслом, который Вы отыскали где-то между строк в моём сообщении.
> Это не мысль, а глупость. Прямой связи между количеством строк и сложностью
> алгоритма нет и никогда не было.Это не глупость, а неточность формулировки.
Однако использование менее подходящих, но более простых в реализации алгоритмов, в зависимости от "многословности/уровня" ЯП – вполне себе наблюдалось/наблюдается.
Зато между количеством строк и сложностью восприятия алгоритма связь очень даже есть.
15 лет вилка, опупеть можно!
Кто понял жизнь — тот не торопится.
Я один не понял о чём вы?Parent Directory -
mcron-1.0.1.tar.gz 22-May-2004 02:10 264K
mcron-1.0.1.tar.gz.sig 22-May-2004 02:10 65
mcron-1.0.2.tar.gz 02-Jan-2006 07:20 288K
mcron-1.0.2.tar.gz.sig 02-Jan-2006 07:20 65
mcron-1.0.3.tar.gz 16-Apr-2006 15:33 226K
mcron-1.0.3.tar.gz.sig 16-Apr-2006 15:33 65
mcron-1.0.4.tar.gz 21-Feb-2008 13:42 238K
mcron-1.0.4.tar.gz.sig 21-Feb-2008 13:42 65
mcron-1.0.5.tar.gz 13-Jun-2010 10:26 259K
mcron-1.0.5.tar.gz.sig 13-Jun-2010 10:26 72
mcron-1.0.6.tar.gz 19-Jun-2010 13:48 259K
mcron-1.0.6.tar.gz.sig 19-Jun-2010 13:48 72
mcron-1.0.7.tar.gz 28-Apr-2014 04:59 272K
mcron-1.0.7.tar.gz.sig 28-Apr-2014 04:59 72
mcron-1.0.8.tar.gz 25-May-2014 07:16 277K
mcron-1.0.8.tar.gz.sig 25-May-2014 07:16 72
mcron-1.1.tar.gz 18-Mar-2018 16:44 351K
mcron-1.1.tar.gz.sig 18-Mar-2018 16:44 833
А кто решил поработать на GNU/HURD - тот и вообще лёг в анабиоз.
> А кто решил поработать на GNU/HURD - тот и вообще лёг в
> анабиоз.Бойтесь, мозилла-д***т-релизеры и s-d-фанобои.
Стабильность 80-го уровня в радиусе поражения.
Так они че, round robin внутрях организовали? По их описанию алгоритма - похоже на то.
Но зачем?man systemd.timer systemd.time
> Но зачем?
>man systemd.timer systemd.timeЗатем, что это прибито гвоздями к systemd и linux.
mcron/NEWS
>> * Noteworthy changes in release 1.0 (2003-12-12) [stable]
>> 1.0 (2003-12-12)
> Но зачем?
>man systemd.timer systemd.timeВидимо, машина времени сломалась.
Mcron используется в GuixSD, где нет systemd, а вся конфигурация системы (включая службы и периодические задачи) описывается на Scheme (это же прекрасно!).
[systemd срaч]
Потому что systemd не только лишь всем нужен.
[/systemd срaч]
Есть смысл этим пользоваться, если всю жизнь пользовался cron?
> Есть смысл этим пользоваться, если всю жизнь пользовался cron?Если есть желание использовать для администрирования системы гибкий высокоуровневый функциональный язык, поддерживающий предметно-ориентированное программирование и декларативное воспроизводимое описание всей конфигурации, лучше сразу смотреть в сторону GuixSD (но он еще beta, пока не для продакшн) — mcron естественно вписывается в концепцию этого дистрибутива.
Не знаю, имеет ли смысл использовать mcron в других дистрибутивах отдельно, если только он не поставляется по умолчанию.
Если есть желание чтобы крон просто работал, то нет, не надо.
Зачем когда есть таймеры systemd?
системдэ - это скучно, корпоративно, сухо и предсказуемо. Души в ней нет, понимаешь? Нельзя будет сказать, что "вот эту систему я создал сам своими руками". Сисадмин - профессия творческая, а потому нужен собственный нескучный крон с собственными нескучными баш-портянками. А кто не согласен - тот хипстер, смузи и гироскутер.
src/cron.c
>> /* Copyright 1988,1990,1993,1994 by Paul Vixiesrc/mcron.c
>> Copyright © 2003, 2014 Dale Mellor <dale_mellor@users.sourceforge.net>https://github.com/systemd/systemd/blob/master/src/core/timer.c
>> Copyright 2010 Lennart Poettering-
> системдэ - это скучно, корпоративно, сухо и предсказуемо.
> а потому нужен собственный нескучный крон/0
в общем, как обычно у системдатнутых.
> > > Спустя 15 лет с момента выпуска 1.0 состоялся релиз проекта GNU Mcron 1.1
> > Зачем [продолжать развивать mcron,] когда есть таймеры systemd[, написанные еще в 2010 году, то есть 8 лет назад]?
> системдатнутые!11111/0
в общем, как обычно у любителей писать баш-портянки.
>>> Зачем [вставить после ответа что-то подходящее и делать вид, что так самого начала и было задуманно] когда есть таймеры systemd[, написанные еще в 2010 году, то есть 8 лет назад, правда, доведенные до ума только года четыре спустя https://github.com/systemd/systemd/commit/06642d1795382a4849... но это для Истинно Верующего совсем не важно!]?
>>написаннаяна языке Guile/Cи
> в общем, как обычно у любителей писать баш-портянки./0
в общем, как обычно у фанатов Рыжего.
А даже с твоей сомнительной ссылочкой получается не вполне приглядно, ибо --> доведенные до ума
"зачем продолжать развитие mcron, когда уже аж 4 года назад __довели_до_ума__ таймеры системды?"
в общем, как обычно у юношеско-максималистских творческих мамкиных борцунов с систем(д)ой.
> Зачем когда есть таймеры systemd?
>> Guile
> баш-портянки
> то есть 8 лет назад
> уже аж 4 года назадТо у них "было всегда, ибо вечно", то 8 лет, то уже 4 года.
То минорное изменение версии - стремительный прогресс и развитие.
То Scheme c cишкой у них равен башу.
> в общем, как обычно у юношеско-максималистских творческих мамкиных борцунов с систем(д)ой.В общем, обычный юлеж топящих вовсю за системду папкиных ыкспертов, опять попавшихся на незнании матчасти своего фетиша.
ну а какая альтернатива системде? Будешь инициализацию на схеме писать? Традиционно, ДИДЫ (антихипстеры) ее писали на баш-портянках. Может быть нескучный крон и написали на нескучной схеме, но все остальное-то на душевных баш-портянках.
> ну а какая альтернатива системде?Да есть пара штук, только в мэйнстримных дистрах (включая gentoo) они не используются.
В том же GuixSD используется Shepherd. Без привязки к дистрибутивам развивается nosh.
> ну а какая альтернатива системде? Будешь инициализацию на схеме писать? Традиционно, ДИДЫ
> (антихипстеры) ее писали на баш-портянках. Может быть нескучный крон и написали на нескучной схеме, но все остальное-то на душевных баш-портянках.Начали с обсуждения крона и скатились к восхвалению системды.
Почему-то оказалось, что крон должен быть написан на том же ЯП, что и инит и вообще, прибит к нему намертво. А так как есть системд, а ему нет альтернатив, то и альтернатива крону не нужена.
В чем-то даже логично.
> Начали с обсуждения крона и скатились к восхвалению системды.А теперь перечитываем первые комменты этой ветки:
> > Зачем когда есть таймеры systemd?
> системдэ - это скучно, корпоративно [...]То есть начали именно с системды. Вообще, правильное питание наряду со специальными упражнениями способно улучшить долгосрочную память. Рекомендую заняться изучением этой темы, чтобы не было больше таких посадок в лужу.
> А теперь перечитываем первые комменты этой ветки:
А тепереть перечитываем нормально, не пятой точкой, начиная с новости, которую и откомментировал очередноф восхвалитель:
>>>> "Выпуск Mcron 1.1, реализации cron от проекта GNU"
>>> Зачем когда есть таймеры systemd?
>> системдэ - это скучно, корпоративно [...]
> То есть начали именно с системды. Вообще, правильное питание наряду со специальными
> упражнениями способно улучшить долгосрочную память. Рекомендую заняться изучением этой
> темы, чтобы не было больше таких посадок в лужу.Решили поделиться опытом?
> любителей писать баш-портянки.Ага, возмём любой файл systemd:
https://github.com/systemd/systemd/blob/master/src/run/run.c
1235 sloc
1235 строк чистого кода, карл! На С, карл! Читать это невозможно.
> На С, карл!А на чем надо было? Не на яваскрипте случайно?
> 1235 строк чистого кода, карл!
А сколько будет кода на баш-портянках, если их переписать на си? А количество строк на баш-портянках нужно рассчитывать в сумме с количеством строк исходников самого баша или нет?
> Читать это невозможно.
Да нет, вполне себе можно. Разве что только если ты ни на чем другом, кроме яваскрипта не писал.
> А на чем надо было? Не на яваскрипте случайно?На С++, он генерирует код меньше в результате. Было на хабре.
> А сколько будет кода на баш-портянках, если их переписать на си? А
> количество строк на баш-портянках нужно рассчитывать в сумме с количеством строк
> исходников самого баша или нет?Я не знаю, в runit демон пишется в 2 строки. Сколько строк надо вашему uselessd? Вообще, чтобы ты знал - демон должен всем управлять а не система инициализации. Если демон этого не делает - можешь смело его выкидывать, он не соотвествует POSIX.
> Да нет, вполне себе можно. Разве что только если ты ни на
> чем другом, кроме яваскрипта не писал.Я пишу на C\С++, тут сплошные #define со своими какими-то недомакросами, которые не распарсишь не зная изначально для чего вообще это писалось. То есть мне понадобится убить несколько дней, чтобы разобраться. Это объясняет почему так мало контрибьюторов в ЭТО поделее.
А может тут ты нам баш-портянки продемонстрируешь? Уже много времени бегаешь по опеннету и про портянки что-то вещаешь, но ни разу не продемонстрировал. У тебя что-то личное - травма десткая с портянками связана?
cd /etc/init.d
cat *наслаждайтесь.
> cd /etc/init.d
> cat *
> наслаждайтесь.Какая бездарная попытка сохранить лицо. Зато теперь понятно почему ты под анонимом пишешь - треплом боишься прослыть под определенным ником. И глядя на твой ник посетители сайта, усмехаясь, будут пролистывать твои портянки русского текста.
> cd /etc/init.d
> cat *
> наслаждайтесь.
$ cd /etc/init.d
cd: no such file or directory: /etc/init.d
$ cd /etc/init
$ cat *
$ ls /etc/systemd
ls: /etc/systemd: No such file or directory
# cat /proc/1/cmdline
/sbin/init--
Я не согласен. Systemd - это довольно непредсказуемое пoдeлиe. Никогда не знаешь, что вбредёт в голову ЛП завтра и что ещё будет безвозвратно изуродовано. Поэтому для меня лучше, - не пользоваться совсем. Я и пульсу у себя выпилил (да реально это пыпыщ уже достало своим непредсказуемым поведением). Сейчас собираюсь выпиливать udisks. Да, - оба два.P.S. Не разу не хипстер, до сих пор не знаю, что такое смузи и у меня нет гироскутера.
> P.S. Не разу не хипстер, до сих пор не знаю, что такое
> смузи и у меня нет гироскутера.Да ты не беспокойся, те кто тут за ненужноd кричат, сидят на маках, носят лосины, пьют смузи и пытаются тролить. А гироскутер они себе не могут позволить, потому что уже купили новый тыблокофон и теперь питаются дошиками.
> Зачем когда есть таймеры systemd?Угу, а ведь еще есть systemd-resolved, но вот недавнюю новость о unbound кто-то взял и прокрасношляпил, даже не отметившись там!
Да и новость о nginx тоже пропустил.
Нехорошо как-то вышло, ведь народ и далее будет заблуждаться по поводу нужности этих устаревших пережитков древних эпох …
Systemd-resolved является не полноценным DNS-сервером, а средством обработки DNS-запросов для локальных приложений — об этом прямо написано в первых строках man-страницы.В отличие от, systemd предоставляет не только весь функционал cron, но и позволяет большее — например, можно включить пробуждение системы для выполнения заданий по таймеру и выполнение пропущенных из-за downtime заданий при загрузке, кучей способов привязывать таймеры к другим unit'ам, настроить случайную задержку активации в указанных пределах.
> Systemd-resolved является не полноценным DNS-сервером, а средством обработки DNS-запросов
> для локальных приложений — об этом прямо написано в первых строках man-страницы.man systemd-resolved
> systemd-resolved is a system service that provides network name resolution to local applications.
> It implements a caching and validating DNS/DNSSEC stub resolver, as well as an LLMNR resolver and responder.man unbound
> Unbound DNS validating resolver
> Unbound is a caching DNS resolver.дублируют функциональность СистемД. Еретики!
> В отличие от, systemd предоставляет не только весь функционал cron, но и позволяет большее
И правда, кто бы мог подумать, что жалкий крон умеет только в фунциональность крона, а Божественный Комбайн, в который разве что еще ядро не ассимилировали, может все и сразу?
> Systemd-resolved является не полноценным DNS-сервером, а средством обработки DNS-запросов для локальных приложений — об этом прямо написано в первых строках man-страницы.Ааааа, то есть тот самый мудизм что иногда приходилось делать в лице:
ipconfig /flushdns
ipconfig /registerdns
и всё начинало волшебно работать теперь и к нам приходит?
Прелестно, просто прелестно. До вещей в стиле regsvr32 *, mofcomp * ещё не додумались?
C dcron кто-нибудь уже сравнивал? ;-)
> ;-)Что это означает?
То, что dcron всяко разно быстрее.
> То, что dcron всяко разно быстрее.А оно на практике хоть заметно будет?
>> То, что dcron всяко разно быстрее.
> А оно на практике хоть заметно будет?Конечно! Он будет _быстрее_ спать между запусками кронджобов.
50 лет истории CS включают и байку про оптимизацию idle loop.
---
"Быстрее - пока не началось"-программирование - новое модное развитие идей ктремального, агильного, и пртп метОдов.
Да я вообще не об этом. Я dcron стопицот лет уже использую, Патрик dcron стопицот лет уже использует. В качестве одного единственного шедулера. Написан ещё в 1994 году на православном Си, может распространятся под любой GPL, живёт и развивается до сих пор. Работает везде (нет привязок ни к ОС ни к системе инициализации). dcron - это такой crond, который только crond. Ничего лишнего.Потому и задал вопрос с подмигивающим смайлом, - как mcron в сравнении с dcron?
К чему вообще это суета с guile? Может есть какой-то скрытый смысл, который я не понимаю? Ну кроме, чётко прописанной в mcron GPL3+?Да я, блин, даже когда на Debian сидел, dcron с собой притаскивал! Объясните, наконец, - в чём плюсы mcron. Может я тоже захочу его использовать... :-)
> К чему вообще это суета с guile? Может есть какой-то скрытый смысл,
> который я не понимаю? Ну кроме, чётко прописанной в mcron GPL3+?Ибо сказал дедушка Ричард, что это хорошо.
https://www.gnu.org/gnu/rms-lisp.html
https://www.gnu.org/software/guile/manual/html_node/The-Emac...
https://wingolog.org/archives/2011/08/30/the-gnu-extension-l...> Да я, блин, даже когда на Debian сидел, dcron с собой притаскивал!
> Объясните, наконец, - в чём плюсы mcron. Может я тоже захочу
> его использовать... :-)Во-первых, несколько хакеров _проекта_ GNU послушали Столмана и стали писать некоторые приложения проекта GNU (shepherd, mcron, guix), свои програмы, биндинги к библиотекам и пр. на guile либо с guile в качестве языка расширения (GNU make с недавней версии - опционально, например).
Во-вторых, guix подрос и стал GuixSD - дистрибутивом, дистрибутивом GNU - в первую очередь c ориентацией на идеологию и софт GNU. При этом, соответственно, хакеры guix/guixsd проявляют интерес и к guile, и к написанным на нём и используемым в GuixSD ... shepherd и mcron, которые, соответственно, "ожили" волшебно и стали релизиться последнее время.
>[оверквотинг удален]
>> его использовать... :-)
> Во-первых, несколько хакеров _проекта_ GNU послушали Столмана и стали писать некоторые
> приложения проекта GNU (shepherd, mcron, guix), свои програмы, биндинги к библиотекам
> и пр. на guile либо с guile в качестве языка расширения
> (GNU make с недавней версии - опционально, например).
> Во-вторых, guix подрос и стал GuixSD - дистрибутивом, дистрибутивом GNU - в
> первую очередь c ориентацией на идеологию и софт GNU. При
> этом, соответственно, хакеры guix/guixsd проявляют интерес и к guile, и к
> написанным на нём и используемым в GuixSD ... shepherd и mcron,
> которые, соответственно, "ожили" волшебно и стали релизиться последнее время.Да я не об этом, это как раз понятно. Мне никогда не нравилось стремление RMS пихать свой интерпретируемый Лисп во всё что можно, даже туда, где это не нужно. Это пожалуй единственное разногласие у меня с RMS. Я вообще не сторонник интерпретаторов, хотя мне часто приходится ими пользоваться, но с Лиспом в любой его реализации у меня вообще никак. Так что вопрос стоял в том, что насколько оправдано на самом деле использование Guile в конкретно взятой программе. :-\
Z kbim [jntk cghjcbnm
его на старушек, случаем, не тянет?
> его на старушек, случаем, не тянет?А тебя?