Determina o tempo da última suspensão (-to-ram)

4

Eu tenho um script de backup que é executado a cada noite. Se meu host (Linux-) for suspenso, ele será ativado por outro host antes que o script seja executado.

Eu gostaria de poder suspender meu host novamente após o término do backup, mas somente se ele foi ativado para executar o script. Se estava correndo antes, quero deixá-lo funcionando.

Existe alguma maneira que eu possa obter as informações quando o host foi acordado pela última vez de suspensão para ram?

    
por Mika Fischer 06.10.2011 / 11:25

2 respostas

3

Acabei de verificar o arquivo de log do pm-utils porque isso funciona de imediato. No entanto, depende da formatação das mensagens de log do pm-utils, para que ele possa quebrar com as novas versões do pm-utils.

Atualmente ele está trabalhando no Arch Linux e no OpenSuSE 11.4 / Tumbleweed e provavelmente em todas as outras distribuições que não corrigiram muito o pm-utils.

O código a seguir define NEED_SUSPEND como 1 se a máquina foi despertada da suspensão nos últimos 10 minutos (600 segundos):

# Check if we need to suspend afterwards
if [[ -e /var/log/pm-suspend.log ]]; then
    RESUME_DATE="$(egrep 'Running hooks for (resume|thaw)' /var/log/pm-suspend.log | tail -n 1 | sed 's/^\(.*\):.*$//')"
    if [[ -n "$RESUME_DATE" ]]; then
        RESUME_SECS="$(date --date="$RESUME_DATE" +%s)"
        NOW_SECS="$(date +%s)"
        SECS_SINCE_RESUME=$(( $NOW_SECS - $RESUME_SECS ))
        if [[ $SECS_SINCE_RESUME -lt 600 ]]; then
            NEED_SUSPEND=1
        fi
    fi
fi
    
por 06.10.2011 / 16:01
3

Sua distribuição tem uma estrutura de gerenciamento de energia (isso está claro porque ela já está sendo suspensa) que executa alguns scripts quando está prestes a suspender / hibernar / desligar, bem como quando retoma / liga. Se você fizer uma pesquisa por "gerenciamento de energia", poderá encontrar uma boa documentação sobre isso.

A tarefa provavelmente envolve simplesmente colocar um script em um diretório apropriado. Esse script pode ser tão simples quanto date +%s > /var/last-wake-time . Então seu script existente simplesmente olharia para esse arquivo.

Em geral, nem todas as distribuições vêm com utilitários de gerenciamento de energia, e há várias ferramentas de ferramentas a serem observadas. Você pode conferir acpid , uPower , pm-utils e laptop-mode tools .

    
por 06.10.2011 / 14:33

Tags