[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: periodiekejob met parameter en systemd



On Sat, May 16, 2020 at 01:41:00PM +0200, Luuk wrote:
> On 15-5-2020 22:42, Geert Stappers wrote:
> > Hoi,
> > 
> > Mijn websearch schiet niet op. Ik vond wel
> >   How do you configure multiple systemd services to use one timer?
> > 
> > Wat ik zoek is er meer
> >   how configure multiple systemd timers to use same systemd service
> > 
> > 
> > Met cron zou het iets zijn als
> > 
> > #m h d m day
> > *  7 * * Mon-Sat  periodiekejob dagelijks
> > *  5 * * Sun      periodiekejob wekelijks
> > 0  * * * *        periodiekejob elkuur
> > 
> > 
> > Met systemd heb ik dan drie timers  en drie service files nodig.
> > 
> > De drie service files verschillen alleen in de paramater.
> > En dat is wat ik graag zou willen voorkomen, beheer van vrijwel
> > gelijke bestanden, die vrijwel gelijk gehouden moeten worden.
> > 
> > 
> > Wat ik dan doen,
> > is periodejob naar een environment variable laten kijken.
> > (in service file kun je Environment zetten)
> > 
> > Van https://stackoverflow.com/questions/40083540/how-can-i-use-environment-variable-in-systemd-timer-unit
> > heb ik: "there's no mention of environment variables for systemd timers"
> > 
> > 
> > Wat hebben jullie aan ideeen?
> > (Ja, dat mogen ook gekke ideeen zijn om zo  nieuwe mogelijkheden te zien)
> > 
>
> Kan je niet die afhankelijkheden die je nu on `cron` wilt stoppen in het
> scriptje `periodiekejob` zetten?
> 
> Zodat het scriptje op Zondagen tussen 05:00 en 05:59:59 de "wekelijkse"
> activiteit doet, en op werkdagen tussen 07:00 en 07:59:59 de "dagelijkse"
> activiteiten, en verder op de hele uren de "elkuur" activiteit".
> 

Met bij-effect dat laten starten op een ander moment
ook het script aangepast moet worden.


Deze richting ben ik nu aan het denken.
( in de tarball staat hetzelfde )

==> README.md <==

Proof of concept of several systemd timers
starting the same systemd service


sudo make install


journalctl -fu rapporteer


sudo make deinstall


# l l

==> Makefile <==
#
all:
	@echo nothing to build ...

install:
	cp rapporteer /usr/local/bin/
	cp rapporteerA.timer /etc/systemd/system/
	cp rapporteerB.timer /etc/systemd/system/
	cp rapporteer.service /etc/systemd/system/
	systemctl daemon-reload
	systemctl start rapporteerA.timer
	systemctl start rapporteerB.timer

deinstall:
	systemctl stop rapporteerA.timer
	systemctl stop rapporteerB.timer
	rm -f /usr/local/bin/rapporteer
	rm -f /etc/systemd/system/rapporteerA.timer
	rm -f /etc/systemd/system/rapporteerB.timer
	rm -f /etc/systemd/system/rapporteer.service
	systemctl daemon-reload

tarball:
	mkdir rapporteerpoc
	-cp * rapporteerpoc/
	rm -f rapporteerpoc/*.tgz
	tar czf rapporteerpoc.tgz rapporteerpoc/
	rm -rf rapporteerpoc

clean:
	rm -f rapporteerpoc.tgz

# l l

==> rapporteer.service <==
[Unit]
Description=rapporteer POC, several timers will start us

[Service]
Type=oneshot
Environment=RAPPORTEER
ExecStart=/usr/local/bin/rapporteer

[Install]
WantedBy=multi-user.target

# l l

==> rapporteer <==
#!/usr/bin/python3
'''
 rapporteer
    Proof Of Concept for handing over parameter
    through environment variables

'''

import os

if os.getenv('RAPPORTEER'):
    parameter = os.getenv('RAPPORTEER')
else:
    parameter = "not_present"

print("parameter value is {}".format(parameter))

# l l

==> rapporteerA.timer <==
[Unit]
Description=Rapporteer Proof of concept
Environment=RAPPORTEER=tien

[Timer]
Unit=rapporteer.service
OnCalendar=*-*-* *:*:10,30,50

[Install]
WantedBy=timers.target

# l l

==> rapporteerB.timer <==
[Unit]
Description=Rapporteer Proof of concept
Environment=RAPPORTEER=twaalf

[Timer]
Unit=rapporteer.service
OnCalendar=*-*-* *:*:12,32,52

[Install]
WantedBy=timers.target

# l l



Groeten
Geert Stappers
-- 
Silence is hard to parse

Attachment: rapporteerpoc.tgz
Description: application/gtar-compressed


Reply to: