Execute o script a cada 30 min com o systemd

14

Eu gostaria de executar um script a cada 30 minutos após a inicialização no sistema. Eu sei que você pode usar cron, mas eu não pretendo usar esse recurso, portanto, eu gostaria de tentar com o systemd.

Até agora eu só encontrei os temporizadores monótonos que permitem executar algo uma vez (pelo menos eu acho que sim). Como seria o foo.timer e [email protected] no caso de eu querer executar algo a cada 30 minutos a partir do início do boot / sistema?

[email protected]

[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... ???
    
por TomTom 24.04.2015 / 20:28

2 respostas

17

Você precisa criar dois arquivos: um para o serviço, outro para o timer com o mesmo nome.

exemplo:

/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

depois recarregue o systemd usando o comando systemctl daemon-reload e inicie seu temporizador em systemctl start test.timer , ou habilite-os por padrão.

teste o conteúdo de 1.sh

#!/bin/bash
echo 'date' >> /tmp/2

E o comando para verificar todos os temporizadores disponíveis:    systemctl list-timers --all

Informações mais detalhadas sobre o projeto página e exemplos em Página ArchLinux

    
por 24.04.2015 / 20:59
8

Aqui está outra opção sem usar seu temporizador. Se o tempo não for muito crítico e o script não durar muito, tudo ficará bem para coisas simples.

[Unit]
Description=Run foo

[Service]
User=%I
Restart=always
RestartSec=1800s
ExecStart=/bin/bash /home/user/script.sh
    
por 25.02.2016 / 02:43