* [sisyphus] Быстрая замена кронтабов на таймеры @ 2017-10-24 10:23 В.А. Илларионов 2017-10-28 2:11 ` [sisyphus] " Вадим Илларионов 0 siblings, 1 reply; 6+ messages in thread From: В.А. Илларионов @ 2017-10-24 10:23 UTC (permalink / raw) To: ALT Linux Sisyphus discussions Реализовал следующим образом. 1. Создал два шаблона - для периодических таймеров и их "целей", назвал их doit@ - мол, "делать это еже..." minutely ...минутно, hourly ...часно, daily ...дневно, weekly ...недельно, monhly ...месячно, yearly ...годно. Само собой, doit что в именах, что в шаблоне таймера и периодически запускаемых сервисах можно заменить на do, cron, timers или что угодно. Итак. # cat /lib/systemd/system/doit@.target [Unit] Description=%i timer target StopWhenUnneeded=yes # cat /lib/systemd/system/doit@.timer [Unit] Description=%i timer [Timer] OnCalendar=%i Persistent=true # Рандомизацию пока отключил - не знаю, как оно сочетается с запуском ежеминутных скриптов: #RandomizedDelaySec=10min Unit=doit@%i.target [Install] WantedBy=timers.target 2. Включил и запустил периодические таймеры: for time in minute hour dai week month year; do for act in enable start; do systemctl $act doit@${time}ly.timer done done 3. Создал сервисы, требующие периодического исполнения, нужную периодичность указав через секцию [Install]. Вот пример: # cat /lib/systemd/system/logrotate.service [Unit] Description=Rotate system logs [Service] Nice=19 Type=simple IOSchedulingClass=2 IOSchedulingPriority=7 ExecStart=/usr/sbin/logrotate /etc/logrotate.conf [Install] WantedBy=doit@daily.target 4. И, наконец, включил их: systemctl enable <список таких сервисов> Собственно, готово - работает. Вот: # systemctl list-timers NEXT LEFT LAST PASSED UNIT ACTIVATES Tue 2017-10-24 18:18:00 IRKT 32s left Tue 2017-10-24 18:17:02 IRKT 25s ago doit@minutely.timer doit@minutely.target Tue 2017-10-24 19:00:00 IRKT 42min left Tue 2017-10-24 18:00:12 IRKT 17min ago doit@hourly.timer doit@hourly.target Wed 2017-10-25 00:00:00 IRKT 5h 42min left n/a n/a doit@daily.timer doit@daily.target Wed 2017-10-25 15:46:49 IRKT 21h left Tue 2017-10-24 15:46:49 IRKT 2h 30min ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service Mon 2017-10-30 00:00:00 IRKT 5 days left n/a n/a doit@weekly.timer doit@weekly.target Wed 2017-11-01 00:00:00 IRKT 1 weeks 0 days left n/a n/a doit@monthly.timer doit@monthly.target Mon 2018-01-01 00:00:00 IRKT 2 months 7 days left n/a n/a doit@yearly.timer doit@yearly.target 7 timers listed. Pass --all to see loaded but inactive timers, too. # ls /etc/systemd/system/doit@daily.target.wants /etc/systemd/system/doit@minutely.target.wants /etc/systemd/system/doit@monthly.target.wants /etc/systemd/system/doit@daily.target.wants: logrotate.service /etc/systemd/system/doit@minutely.target.wants: unbound-stats.service /etc/systemd/system/doit@monthly.target.wants: unbound-anchor.service -- Мимо крокодил. WBR, rednex CIO. Viber = +7(964)103-65-67 JID = <mailto:> Skype = $local_part@<mailto:> ^ permalink raw reply [flat|nested] 6+ messages in thread
* [sisyphus] Re: Быстрая замена кронтабов на таймеры 2017-10-24 10:23 [sisyphus] Быстрая замена кронтабов на таймеры В.А. Илларионов @ 2017-10-28 2:11 ` Вадим Илларионов 2017-10-28 5:11 ` [sisyphus] " Anton Farygin 0 siblings, 1 reply; 6+ messages in thread From: Вадим Илларионов @ 2017-10-28 2:11 UTC (permalink / raw) To: ALT Linux Sisyphus discussions Оформил бы в вики, но, полагаю, имеет смысл как-то унифицировать для последующего применения. Может, и впрямь doit поменять на cron или timers? Во всяком случае, подобного решения не встречал ни в родном, ни в иноязычных руководствах. Хотя, вроде бы, само напрашивается. Всё же Леннарт гений - почти как Ленин :) -- Мимо крокодил. WBR, rednex CIO. JID = <mailto:> Skype = $local_part@<mailto:> Viber = +7(964)103-65-67 Опции rsync -aHAX --delete мозг автоматом переводит как "удалить к чёртовой матери!" ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [sisyphus] Быстрая замена кронтабов на таймеры 2017-10-28 2:11 ` [sisyphus] " Вадим Илларионов @ 2017-10-28 5:11 ` Anton Farygin 2017-11-03 8:25 ` В.А. Илларионов 0 siblings, 1 reply; 6+ messages in thread From: Anton Farygin @ 2017-10-28 5:11 UTC (permalink / raw) To: ALT Linux Sisyphus discussions, Вадим Илларионов 28.10.2017 05:11, Вадим Илларионов пишет: > Оформил бы в вики, но, полагаю, имеет смысл как-то унифицировать для > последующего применения. Может, и впрямь doit поменять на cron или timers? > Во всяком случае, подобного решения не встречал ни в родном, ни в > иноязычных руководствах. Хотя, вроде бы, само напрашивается. Всё же > Леннарт гений - почти как Ленин :) > Интересное решение. Надо упакечивать ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [sisyphus] Быстрая замена кронтабов на таймеры 2017-10-28 5:11 ` [sisyphus] " Anton Farygin @ 2017-11-03 8:25 ` В.А. Илларионов 2017-11-03 12:14 ` Alexey Shabalin 0 siblings, 1 reply; 6+ messages in thread From: В.А. Илларионов @ 2017-11-03 8:25 UTC (permalink / raw) To: ALT Linux Sisyphus discussions 28.10.2017 13:11, Anton Farygin пишет: > 28.10.2017 05:11, Вадим Илларионов пишет: >> Оформил бы в вики, но, полагаю, имеет смысл как-то унифицировать для >> последующего применения. Может, и впрямь doit поменять на cron или >> timers? >> Во всяком случае, подобного решения не встречал ни в родном, ни в >> иноязычных руководствах. Хотя, вроде бы, само напрашивается. Всё же >> Леннарт гений - почти как Ленин :) >> > Интересное решение. Надо упакечивать Со спеками я работал, но тут поскриптовать при установке надо, и что-то опасаюсь я. В праздники попробую разобраться с этим. > 2. Включил и запустил периодические таймеры: > > for time in minute hour dai week month year; do > > for act in enable start; do > > systemctl $act doit@${time}ly.timer > > done > > done Даже проще: for do in enable start; do systemctl $do doit@${minute,hour,dai,week,month,quarter,semi-annual,year}ly.timer done -- Мимо крокодил. WBR, rednex CIO. Viber = +7(964)103-65-67 JID = <mailto:> Skype = $local_part@<mailto:> ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [sisyphus] Быстрая замена кронтабов на таймеры 2017-11-03 8:25 ` В.А. Илларионов @ 2017-11-03 12:14 ` Alexey Shabalin 2017-11-06 3:58 ` Вадим Илларионов 0 siblings, 1 reply; 6+ messages in thread From: Alexey Shabalin @ 2017-11-03 12:14 UTC (permalink / raw) To: ALT Linux Sisyphus discussions 3 ноября 2017 г., 11:25 пользователь В.А. Илларионов <gbimobou@gmail.com> написал: > 28.10.2017 13:11, Anton Farygin пишет: >> >> 28.10.2017 05:11, Вадим Илларионов пишет: >>> >>> Оформил бы в вики, но, полагаю, имеет смысл как-то унифицировать для >>> последующего применения. Может, и впрямь doit поменять на cron или >>> timers? >>> Во всяком случае, подобного решения не встречал ни в родном, ни в >>> иноязычных руководствах. Хотя, вроде бы, само напрашивается. Всё же >>> Леннарт гений - почти как Ленин :) >>> >> Интересное решение. Надо упакечивать > > > Со спеками я работал, но тут поскриптовать при установке надо, и что-то > опасаюсь я. > В праздники попробую разобраться с этим. > >> 2. Включил и запустил периодические таймеры: >> >> for time in minute hour dai week month year; do >> >> for act in enable start; do >> >> systemctl $act doit@${time}ly.timer >> >> done >> >> done > > > Даже проще: > > for do in enable start; do > systemctl $do > doit@${minute,hour,dai,week,month,quarter,semi-annual,year}ly.timer > done А вы видели вот эти проекты: https://github.com/systemd-cron тут собраны разные реализации генератора таймеров на основе crontab. Так же там описаны таймеры: boot, hourly, daily, weekly, monthly, yearly, minutely, quarterly, semi-annually В планах есть упаковать, как замену cron. Но руки все не доходят. Нарисовал таймер для logrotate, и отключил crond у себя. Больше никаких заданий в кроне нет, поэтому и успокоился :) -- Alexey Shabalin ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [sisyphus] Быстрая замена кронтабов на таймеры 2017-11-03 12:14 ` Alexey Shabalin @ 2017-11-06 3:58 ` Вадим Илларионов 0 siblings, 0 replies; 6+ messages in thread From: Вадим Илларионов @ 2017-11-06 3:58 UTC (permalink / raw) To: sisyphus 03.11.2017 20:14, Alexey Shabalin пишет: > 3 ноября 2017 г., 11:25 пользователь В.А. Илларионов > <gbimobou@gmail.com> написал: >> 28.10.2017 13:11, Anton Farygin пишет: >>>> Во всяком случае, подобного решения не встречал ни в родном, ни в >>>> иноязычных руководствах. Хотя, вроде бы, само напрашивается. Всё же >>>> Леннарт гений - почти как Ленин :) >>>> >>> Интересное решение. Надо упакечивать >> >> Со спеками я работал, но тут поскриптовать при установке надо, и что-то опасаюсь я. >> В праздники попробую разобраться с этим. >> for do in enable start; do >> systemctl $do doit@${minute,hour,dai,week,month,quarter,semi-annual,year}ly.timer >> done > А вы видели вот эти проекты: > https://github.com/systemd-cron > тут собраны разные реализации генератора таймеров на основе crontab. Как-то всё несколько выморочно, излишне наворочено. Ведь всё необходимое уже наличествует в systemd, достаточно всего-то: а) пары шаблонов - один для таймеров, другой для таргетов к этим таймерам; б) включить/запустить надобные таймеры по оным шаблонам; в) создать service-файлы с указанием таргета требуемой периодичности в секции [Install] - а без этого никак при любой реализации (автогенератору таковых на основе кронтаб-скриптов сам Леннарт, вон, дал отлуп: https://lists.freedesktop.org/archives/systemd-devel/2013-September/013120.html). > Так же там описаны таймеры: > boot, > hourly, > daily, > weekly, > monthly, > yearly, > minutely, > quarterly, > semi-annually Ну, они много где описаны. Суть одна - исполнять еже<...>но, без указания сложных конструкций из даты:времени/периодичности (собственно, именно то, чем занимается /etc/cron.<...>ly/, плюс не охваченные этим способом ежеминутные, ежеквартальные и ежесеместровые запуски). А для сложных конструкций в замену /etc/cron.d приходится, конечно, создавать отдельные таймеры. Причём, в некоторых ситуациях таймер, похоже, справится там, где крон надо костылём подпирать - например: # By default, run at 00:57 on every Sunday, but do nothing unless the day of the month is less than or equal to 7. Thus, only run on the first Sunday of each month. # crontab(5) sucks, unfortunately, in this regard; therefore this hack (see #380425). 57 0 * * 0 root [ -x /usr/share/mdadm/checkarray ] && [ $(date +\%d) -le 7 ] && /usr/share/mdadm/checkarray --cron --all --idle --quiet Не уверен, но нюхом чую - можно такое условие таймером обрисовать. :) > В планах есть упаковать, как замену cron. Но руки все не доходят. > Нарисовал таймер для logrotate, и отключил crond у себя. > Больше никаких заданий в кроне нет, поэтому и успокоился :) Я же пока плохо представляю, как состряпать спек для пары шаблонов и скрипта установки/удаления такого, с позволения сказать, "пакета". А после некоторым мейнтейнерам потребуется включать в свои пакеты помимо кронтабов ещё и сервисы к периодичным задачам (logrotate тот же) с учётом оного новшества - то есть, сперва этот мой предполагаемый "пакет" железно должен быть принят в альтовские дистрибутивы. -- Мимо крокодил. WBR, rednex CIO. JID = <mailto:> Skype = $local_part@<mailto:> Viber = +7(964)103-65-67 Опции rsync -aHAX --delete мозг автоматом переводит как "удалить к чёртовой матери!" ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2017-11-06 3:58 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2017-10-24 10:23 [sisyphus] Быстрая замена кронтабов на таймеры В.А. Илларионов 2017-10-28 2:11 ` [sisyphus] " Вадим Илларионов 2017-10-28 5:11 ` [sisyphus] " Anton Farygin 2017-11-03 8:25 ` В.А. Илларионов 2017-11-03 12:14 ` Alexey Shabalin 2017-11-06 3:58 ` Вадим Илларионов
ALT Linux Sisyphus discussions This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/sisyphus/0 sisyphus/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 sisyphus sisyphus/ http://lore.altlinux.org/sisyphus \ sisyphus@altlinux.ru sisyphus@altlinux.org sisyphus@lists.altlinux.org sisyphus@lists.altlinux.ru sisyphus@lists.altlinux.com sisyphus@linuxteam.iplabs.ru sisyphus@list.linux-os.ru public-inbox-index sisyphus Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.sisyphus AGPL code for this site: git clone https://public-inbox.org/public-inbox.git