Como executar um script a cada 5 segundos somente quando conectado à internet

3

Eu tenho um script que atualiza meu Google Drive. Fiz uma unidade de sistema para executar este script e um temporizador que executa a unidade a cada 10 segundos, ambos funcionando. No entanto, quando eu me desconectar da internet, o script falha e o systemd para de executá-lo, mesmo se a Internet voltar. Existe alguma maneira que eu possa fazer o systemd continuar a executar o script, ou existe uma maneira de ter systemd executar o script somente se houver uma conexão com a internet?

Aqui estão os arquivos

/etc/systemd/system/grive.service:

[Unit]
Description=Syncronize google drive folder

[Service]
User=my_name
ExecStart=/home/my_name/bin/update-grive

/etc/systemd/system/grive.timer:

[Unit]
Description=Timer for how often to syncronize google drive folder

[Timer]
OnUnitActiveSec=10s
OnBootSec=10s

[Install]
WantedBy=timers.target

/ home / my_name / bin / update-grive:

#!/usr/bin/env bash
cd /home/my_name/gdrive
grive
    
por Vityou 30.03.2017 / 04:42

3 respostas

1

Adicione Restart=always à unidade de serviço, assim o systemd continuará atualizando o serviço se ele falhar.

Em uma nota lateral, você deve usar OnUnitInactiveSec em vez de OnUnitActiveSec .

OnUnitInactiveSec=10s (ou 20s) iniciará o serviço 10 segundos após a interrupção. Desta forma, você garante que ele não seja chamado duas vezes e, possivelmente, evite o banimento do DOS no Google

    
por 30.03.2017 / 07:21
0

Em [Service] , adicione:

Restart=always
RestartSec=10
    
por 30.03.2017 / 07:21
0

Certifique-se de definir a precisão para segundos, assim:

AccuracySec=1min

De acordo com os documentos:

AccuracySec= Specify the accuracy the timer shall elapse with. Defaults to 1min. Source: https://www.freedesktop.org/software/systemd/man/systemd.timer.html#Description

Faça isso no seu arquivo .timer.

Eu lutei com isso por um bom tempo.

    
por 03.03.2018 / 13:26