Como agendar uma tarefa em um script de shell que é executado assim que todos os ancestrais do shell atual morrem?

1

Estou fazendo um pacote opkg para uma atualização de software.

Este pacote requer uma reinicialização após a instalação e precisa de algum trabalho feito após a próxima reinicialização.

Eu adicionei um shutdown -h agora no script postinst mas parece desligar muito cedo e interrompe o comando opkg install.

Então o sistema opkg não terá as informações do pacote gravadas, como o opkg list-installed não listará o pacote como instalado.

Então, o problema que estou tentando resolver é: como programar com segurança um shutdown / reboot no script postinst do pacote OPKG?

Mas eu acho que a questão fundamental é, como agendar uma tarefa em um script de shell que é executado assim que todos os ancestrais do shell atual morrem, mas não antes disso?

Referência: O que é o script postinst e o sistema de gerenciamento de pacotes opkg

    
por user3528438 23.03.2016 / 00:14

1 resposta

1

O problema está mal definido. Se você seguir a cadeia de processos de filho para pai, você chegará ao processo 1 (init). Quando ele morre, significa que o sistema está reinicializando.

A reinicialização de uma máquina não é algo que normalmente é feito como parte de uma atualização, pois somente o administrador sabe quando é possível reinicializá-la. Reinicializar durante uma atualização definitivamente não é seguro. (Sim, o Windows faz isso, e é um exemplo brilhante do que não fazer - muitos usuários do Windows têm histórias de horror sobre o trabalho perdido por causa de atualizações forçadas que causam reinicializações).

Se a atualização for atendida, mostre ao administrador uma mensagem solicitando a reinicialização o mais rápido possível.

Se a atualização não for atendida, faça com que o sistema de atualização automática organize a reinicialização. Apenas o seu sistema de atualização conhece as circunstâncias específicas que tornam seguro reinicializar em um determinado momento - porque você ativou o failover em seu servidor ou porque a linha de produção que o dispositivo incorporado controla está interrompida. Seu sistema de atualização executa opkg e, em seguida, verifica se uma atualização é necessária; por exemplo, ele pode ser reinicializado (quando for seguro) se existir um arquivo /reboot_needed .

    
por 24.03.2016 / 01:18

Tags