Como evitar que o sono fique confuso?

0

Eu corri dois scripts. Ambos são essencialmente o mesmo código, mas precisam executar 5 minutos de intervalo para evitar a colisão. Primeiro script:     #! / bin / sh

# First run
line="Bonus check"
        stamp=$(date +%Y%m%d-%H%M)
      # sleep 90s
        echo "$stamp\t $line" >> /home/rdanner3/Desktop/CardParty.log
        {
export DISPLAY=:0.0
google-chrome [URL masked]
        }
sleep 45s
# google-chrome
pkill -f chrome

# Second run to seventh run identical to above; stripped for brevity.

Segundo roteiro (note que é essencialmente o mesmo código; ambos precisam ser voltados para sanidade!)

#!/bin/sh

# 1st run
line="Bonus checked."
stamp=$(date +%Y%m%d-%H%M)
# sleep 90s
echo "$stamp\t $line" >> /home/rdanner3/Desktop/Slots.log
{
export DISPLAY=:0.0
google-chrome [URL masked]
}
sleep 45s
# google-chrome
pkill -f chrome

# 2nd run to 7th run identical to above code...stripped for brevity

O que acontece quando os scripts atingem a segunda execução? Eles correm em segundos um do outro, apesar dos trabalhos do cron que inicialmente lançam eles com 5 minutos de intervalo. É bastante óbvio (a partir dos arquivos de log que os dois scripts escrevem) que eles estão sendo lançados em intervalos de segundos, não na ordem correta. Mudar o segundo script para (digamos) ash ou bash faria algum bem para evitar que os comandos sleep dos dois scripts se confundissem? Ou estou cometendo algum outro erro (por exemplo, precisar descomentar a segunda execução do google-chrome para permitir que o pkill limpe o ar)

Notei o problema ontem, decidi que precisava de uma ajudinha. Então eu vim aqui para isso.

    
por Raymond Danner 13.02.2018 / 16:15

1 resposta

2

O erro é provavelmente depender do sono para um tempo absoluto, em vez de um tempo relativo. As coisas antes do sono podem levar uma quantidade variável de tempo.

Depois de remover as repetições de código, talvez eu use at em um loop ou, mais provavelmente, use mais sofisticadamente o uso de cron .

Se tempos de início exatos não fossem importantes, eu chamaria duas funções seqüencialmente em um loop simples. Combinando os dois scripts.

    
por 13.02.2018 / 17:06