Executa um script com interação do usuário no logout / shutdown?

4

Gostaria de executar um script no encerramento, o que interrompe o processo de logout e abre uma janela com zenity . Minha meta é obter o autofsck trabalhando com o lightdm. Parece funcionar com o 12.04 depois de instalar o antigo arquivo * .deb, se alguém executar o script de verificação manualmente. Para usá-lo, ele deve ser executado automaticamente ao sair e perguntar ao usuário se ele deseja verificar o disco no desligamento.

Existe a opção session-cleanup-script no arquivo /etc/lightdm/lightdm.conf que parece funcionar, se um arquivo bash com caminho completo for usado (não consigo colocar o comando diretamente lá). Mas se eu pressionar o desligamento, não há tempo para uma escolha do usuário.

Existe alguma outra opção para resolver este problema?

Editar: Parece que também há outros problemas específicos com o AutoFsck. O script de limpeza da sessão é executado, mas o comando de verificação para o AutoFsck não é executado.

    
por lumbric 17.06.2012 / 16:21

1 resposta

1

Acredito que sua pergunta de desligamento / desligamento seja (mais ou menos) respondida aqui:

Ao olhar para a (s) resposta (s) fornecida (s), gostaria de ajustar / resumir / resumir você provavelmente precisará de ambos, para usar o script de limpeza de sessão de tal forma que X não morrerá antes que você possa responder e executar o trabalho e um novo script /etc/init.d/ pequeno em um nível de execução suficientemente alto para "bloquear" ser desligado até que o script de limpeza de sessão chamado script do AutoFsck seja concluído.

Assim:

  1. Adicione ao script session-cleanup definindo um sinalizador através de ' touch /etc/noreboot ' (ou similar) que é limpo pelo seu script de chamada AutoFsck (ou seja, remover o arquivo / etc / noreboot quando respondido não ou , se sim, removido apenas após a conclusão do AutoFsck) .

  2. Seu novo script /etc/init.d deve verificar a existência de / etc / noreboot e, se existir, verifique novamente a cada segundo ou dois em um loop while até que o arquivo seja removido. Uma vez que /etc/noreboot não exista, o script pode ser concluído e permitir que o restante do processo de desligamento continue. Novamente, a chave aqui é certificar-se de que o script init.d seja executado antes que o desligamento do lightdm ou qualquer outro desligamento do X seja executado.

Como o X ainda deve estar em execução enquanto o script /etc/noreboot check no init.d está em execução, você também pode enviar uma mensagem X para a tela informando que o desligamento está bloqueado aguardando a remoção do arquivo. Essa pequena mensagem inconveniente pode ser útil se o arquivo /etc/noreboot não for limpo por algum motivo, impedindo o seu sistema de um desligamento normal.

    
por Andrew 23.09.2014 / 23:06