|
В экстазе
|
|
Планировщики в Linux/Unix30.10.2017, 16:22. Показов 1588. Ответов 17
Метки нет (Все метки)
Доброго времени суток уважаемые!
Думаю, что все в курсе, про такие вещи как cron и at... По этому, перейду сразу к вопросу, без вступительной части. Когда нам нужно запланировать разовое задание, не нарушая работоспособность других заданий - в at для этой цели есть всё необходимое: at, at -l, at -d и так далее. С ним вопросов нет и всё отлично. Но, в некоторых случаях, нам нужно запланировать задание на постоянной основе (т.е. не разово), и тут нам нужен cron... С которым возникает ряд непонятных для меня моментов: у cron'а нет чего-то вроде cron --add params... есть вариант записывать задачи в /var/spool/cron, но с этого момента возникает ряд других непонятных пока для меня вещей, например, если сейчас 16:30.00 и в файле записана задача на 16:30, а мы в этот самый момент перезаписываем файл... задача успеет запуститься или нет? А если сейчас 16:30 и мы добавим задачу на 16:30 - она запустится или нет? и так далее, таких неясных моментов довольно много и оттестировать их все, за какой-то разумный срок к сожалению, для меня не представляется возможным. Собственно, вопрос заключается в одном из двух: а) Можно ли где-то найти подробности по всем тонкостям работы CRON'а или "как правильно записывать файл(ы) с задачами" или что-то в таком духе, что бы полностью понимать и контроллировать поведение CRON'а? б) Возможно есть какой-нибудь пул, который решает эти задачи? Т.е. некоторая обёртка над CRON'ом или какой-то другой планировщик, который работает по такому же принципу как CRON, но имеет готовый механизм очередей (как at)?
0
|
|
| 30.10.2017, 16:22 | |
|
Ответы с готовыми решениями:
17
Хорошая литература по Unix/Linux Посоветуйте linux или unix Вожможно ли юзать базу Access под Unix или Linux |
|
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
|
|||
| 30.10.2017, 19:16 | |||
|
0
|
|||
|
В экстазе
|
|||
| 30.10.2017, 19:26 [ТС] | |||
|
anacron - полезная штука, но это нужно будет "потом". Первоочердная задача - настроить запуск задач по расписанию, т.е. с точным указанием времени, с точностью хотя бы до минуты (хотя в идеале было бы - до секунды). Ну и задача "нулевого уровня" - обеспечить программную корректировку очереди заданий. Как пример, подобным функционалом обладают некоторые панели управления для серверов, хотя я не уверен, что их разработчики сильно заботились о вопросах, которые волную меня...
0
|
|||
|
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
|
||
| 30.10.2017, 19:54 | ||
|
0
|
||
|
В экстазе
|
||||
| 30.10.2017, 21:31 [ТС] | ||||
|
В какой-то момент времени (в результате наступления какого-то события) список задач может изменится, т.е. какая-то задача может добавиться или удалиться. И, соответственно, добавление/удаление задачи должно происходить программно, например, с помощью python-скрипта, при этом, удаление/добавление одной задачи - никак не должно влиять на другие (ранее добавленные задачи). Для реализации такого механизма, я вижу единственное решение: редактирование файла /var/spool/cron/файл_заданий. P.S. Да, я видел, что например на этой странице (она одна из первых при поиске по слову "cron" в Google), написано:
Добавлено через 17 минут
Наверняка, ответы на многие из этих вопросов, можно было бы получить детально изучив исходники CRON'а, но боюсь, что на такие "подвиги" у меня не хватит ни текущих знаний, ни времени на их восполнение. По этому, хотелось бы найти какой-то более простой способ, ведь наверняка, кто-то уже неоднократно задавался подобными вопросами или сталкивался с подобными "проблемами".
0
|
||||
|
13440 / 7534 / 830
Регистрация: 09.09.2009
Сообщений: 29,554
|
||||||||||||
| 30.10.2017, 21:58 | ||||||||||||
|
вообще, это вопрос не к крону, а к файловой системе и ее механизму перезаписи файла и кстати, его можно редактировать
1
|
||||||||||||
|
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
|
||||||||||||||
| 30.10.2017, 22:10 | ||||||||||||||
|
Покажу на примере:
1
|
||||||||||||||
|
В экстазе
|
|||
| 30.10.2017, 22:13 [ТС] | |||
|
Dmitry, спасибо! По некоторым вопросам Вы меня посвятили!
Иными словами, я хочу добиться некоей "транзакционной целостности" файла с cron-задачами. Точнее, я хочу добиться хотя бы этого. Под "транзакционной целостью" я подразумеваю то, что пока файл не будет полностью перезаписан и закрыт (программой которая открыла его на запись) - список задач, записанный в этот файл ранее - изменяться не должен. То есть, нужно на 100% избежать случаев чтения недописанного (не закрытого) файла и прочих ситуаций, при которых список задач может измениться частично. Даже в тех случаях, если файл с задачами будет записываться 10 минут (гипотетическая ситуация).
0
|
|||
|
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
|
||
| 30.10.2017, 22:20 | ||
|
Все что запустилось — отработает. Изменение файла это ещё не все, программа должна его «перечитать», что выполняется примерно раз в минуту.
0
|
||
|
В экстазе
|
|||||||||||||||||||
| 30.10.2017, 22:26 [ТС] | |||||||||||||||||||
0
|
|||||||||||||||||||
|
13440 / 7534 / 830
Регистрация: 09.09.2009
Сообщений: 29,554
|
||
| 30.10.2017, 22:33 | ||
|
0
|
||
|
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
|
|
| 30.10.2017, 22:35 | |
|
0
|
|
|
В экстазе
|
|||||||
| 30.10.2017, 22:46 [ТС] | |||||||
0
|
|||||||
|
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
|
||
| 30.10.2017, 22:56 | ||
|
Все задания выполняются по очереди. Настал срок, запустились задания. Пока полностью не перечитался файл, действует старый. Если происходит чтение (длительное), то естественно другие задания не запускаются. Если в это время настал у какого-то задания срок — оно не запустится. Все по очереди.
Только извините за прямоту, спрашиваете Вы не о том. Вы у себя в голове сложили какой-то план и упрямо «втискиваетесь» в него. А судя по вопросам ведет он совсем не туда.
0
|
||
|
В экстазе
|
|||||||
| 30.10.2017, 23:33 [ТС] | |||||||
|
Основная задача, которую я пытаюсь решить в первую очередь, выглядит примерно так: У нас есть некий набор задач, загруженный в CRON, условно он загружен командой
Условно говоря, загрузка новых задач не должна нарушать работоспособность старых, не зависимо от того, на какой момент времени пришлась загрузка и как долго она длиться. Если загрузка файла (задач/очереди) началась в 10:10 и закончилась в 10:20, при этом в списке новых задач, была задача N запланированная на 10:15 и она не выполнится сегодня - это не проблема. Проблема в том, что если в старом файле задач (который был загружен в 10:00, например) была задача на 10:15 - её выполнение не должны быть прервано, т.е. она должна быть выполнена не зависимо от прочих факторов. Именно это я пытаюсь решить в первую очередь, любым "правильным" способом. То есть, я не пытаюсь это решить каким-то "исключительно своим" способом. Я пытаюсь понять, как это решать правильно?
0
|
|||||||
|
13440 / 7534 / 830
Регистрация: 09.09.2009
Сообщений: 29,554
|
|||
| 30.10.2017, 23:57 | |||
|
все остальные ваши вопросы - они уже к файловой системе, как она выполняет перезапись файла. например про ext4 попалась такая инфа:
1
|
|||
|
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
|
||
| 31.10.2017, 11:01 | ||
|
2. Почему не запланировать обновление списка на время, когда не запланировано задач? 3. … Вопросов будет миллион, Вы будете на них отвечать и придумывать новые ограничения и так без конца, пока Вы наконец не объявите что именно Вы «сооружаете» и сразу появится абсолютно иной способ решения без cron`а и т.д.
0
|
||
|
В экстазе
|
||||
| 31.10.2017, 12:19 [ТС] | ||||
|
1. Выполнять задачи циклически, с определенным интервалом времени. Например, "каждые 5 минут", или "в полночь каждого воскресенья" или "в 17:00 15 числа каждого месяца". То есть, так же, как это делает CRON. 2. Мог бы обрабатывать очень большие (для примера, пусть это будет 1Гб файл) наборы заданий, не "ломаясь" при этом 3. В идеале было бы, если бы этот планировщик имел нумерацию заданий, примерно такую же как имеет at и возможность удалять/добавлять одну задачу по её номеру. Для чего это нужно - есть возможность поставить под эту задачу достаточно мощный сервер (конфигурация обсуждается, но это к вопросу напрямую не относится). И необходимость - сделать из этого сервера глобальный планировщик задач, который бы мог обрабатывать тысячи и десятки тысяч запланированных заданий. Пример задачи (абстрактный): Если сервер N упал - отправлять сис. админу SMS'ки каждые 5 минут, пока сервер снова не заработает. Добавлено через 41 минуту Не знаю, насколько пример актуальный... но, ничего лучше в качестве примера мне в голову не приходит. Если кто-то работал с БД PostgreSQL - в ней есть такой механизм как MVCC. Который позволяет иметь одни и те же данные в нескольких версиях одновременно. Если очень кратко и упрощённо - его смысл в том, что можно и читать и изменять данные одновременно и на уровне одной транзакции ни при каких условиях не будет данных в промежуточном состоянии, даже если одна транзакция читает какие-то данные, а другая их в это время удаляет. При этом - мы можем добавлять новые записи и получать уникальный идентификатор каждой из них. Именно такого поведения я хочу добиться от планировщика задач, способного выполнять задачи циклически, по расписанию, так же как это делает CRON. При этом, не зависимо от размера новой очереди (которую мы будем загружать, т.к. нумерованных заданий в CRON'е я не нашел) - до её полной загрузки, эта операция никак не должна "ломать" старую очередь. В частности, если у нас 100.000 заданий, мы изменили одно и перезагружаем всю очередь - из-за этого не должны поломаться предыдущие 99.999 которые совпадают в старой и новой очереди заданий. Если бы этот планировщик ещё имел и возможности логически близкие к планировщику at или базам данных, позволяя добавлять/удалять одну задачу, не перезагружая всю очередь и не "ломая" её - это было бы вообще отлично. При этом, CRON меня интересует в виду своих особенностей, которые позволяют выполнять задачи по расписанию, циклически, именно так, как мне нужно. Но, сами очереди работают не совсем так, как мне нужно, и именно с ними я и пытаюсь решить вопрос, в первую очередь. Если есть какой-то более подходящий для этого способ решения, например какой-то другой планировщик... - я с радостью рассмотрю любой вариант.
0
|
||||
| 31.10.2017, 12:19 | |
|
Помогаю со студенческими работами здесь
18
Посоветуйте книгу для изучения различий Linux, Unix и Ubuntu Разметка в Linux жесткого диска для дуалбут MS-DOS и Linux Что лучше для сервера сайта Arch Linux или Linux Debian ?
Клиент-серверное приложение linux-linux Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во
всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
|