ALT Linux Sisyphus discussions
 help / color / mirror / Atom feed
From: "В.А. Илларионов" <gbimobou@gmail.com>
To: ALT Linux Sisyphus discussions <sisyphus@lists.altlinux.org>
Subject: [sisyphus] Быстрая замена кронтабов на таймеры
Date: Tue, 24 Oct 2017 18:23:44 +0800
Message-ID: <605e3602-c33e-68c8-bf1b-89edfdde2fc9@gmail.com> (raw)

Реализовал следующим образом.


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:>



             reply	other threads:[~2017-10-24 10:23 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-10-24 10:23 В.А. Илларионов [this message]
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         ` Вадим Илларионов

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=605e3602-c33e-68c8-bf1b-89edfdde2fc9@gmail.com \
    --to=gbimobou@gmail.com \
    --cc=sisyphus@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

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