Chtěl bych spustit skript každých 30 minut po nabootování do systému. Vím, že můžete používat cron, ale neplánuji tuto funkci používat často, proto bych to rád zkusil se systemd.
Zatím jsem našel pouze monotónní časovače, které umožňují provést něco jednou (alespoň si to myslím). Jak by fungoval foo.timer
a [email protected]
vypadat jako v případě, že bych chtěl každých 30 minut od spuštění/spuštění systému něco provést?
[e-mail chráněn]
[Unit]
Description=run foo
Wants=foo.timer
[Service]
User=%I
Type=simple
ExecStart=/bin/bash /home/user/script.sh
foo.timer
[Unit]
Description=run foo
[Timer]
where I am stuck... ???
Přijatá odpověď:
Musíte vytvořit dva soubory:jeden pro službu, druhý pro časovač se stejným názvem.
příklad:
/etc/systemd/system/test.service
[Unit]
Description=test job
[Service]
Type=oneshot
ExecStart=/bin/bash /tmp/1.sh
/etc/systemd/system/test.timer
[Unit]
Description=test
[Timer]
OnUnitActiveSec=10s
OnBootSec=10s
[Install]
WantedBy=timers.target
poté znovu načtěte systemd pomocí příkazu systemctl daemon-reload
a spusťte časovač pomocí systemctl start test.timer
, nebo jej povolte ve výchozím nastavení (systemctl enable test.timer
).
otestujte obsah 1.sh
#!/bin/bash
echo `date` >> /tmp/2
A příkaz pro kontrolu všech dostupných časovačů:systemctl list-timers --all
Podrobnější informace na stránce projektu a příklady na stránce ArchLinux