Como eu posso “armazenar em cache” uma variável no Bash?

3

Eu tenho um script bash que é executado a cada 10m por cron . O script executa um cálculo caro para algum valor (digamos, variável x = valor). Eu preciso "cache" este valor por 2-3 horas. Quais são as possíveis soluções para este problema?

Eu tentei memcached mas ele não parece funcionar bem com o bash.

    
por Eugene Yarmash 21.09.2011 / 16:03

2 respostas

9

Escreva um segundo script que faça o cálculo real e salve o resultado em um arquivo:

# calculate $curval
echo $curval > /var/foo/value.txt

Agende com cron para ser executado a cada 2-3 horas.

No script "a cada 10 minutos", basta ler o valor atual do arquivo:

curval='cat /var/foo/value.txt'

Um ótimo refinamento é chamar o script de cálculo do script "a cada 10 minutos" se o arquivo value.txt ainda não existir. Você pode até adicionar a entrada crontab se estiver faltando.

    
por 21.09.2011 / 16:08
1

Eu concordaria em escrever o resultado em um arquivo, definir a variável no arquivo

curval=the_value

Em seguida, no shell (ou outro script)

source current_variable_value_result_file
    
por 23.09.2011 / 06:05