executa o script no encerramento

1

Eu tenho o seguinte script, como posso executá-lo no desligamento do Debian Linux? (não quer usar GUI)

#!/bin/bash
vms=$(vmrun list | grep '/');
for vm in ${vms}
do
        echo 'suspending ' $vm
        vmrun suspend $vm soft
done

Eu tentei adicioná-lo a / usr / local / bin com permissões chmod + x. Então eu criei links simbólicos para rc0.d (shutdown) e rc6.d (reboot).

Eu fiz update-rc.d shutdown_vms 0 6.

Quando faço o shutdown -r agora, ele alterna para o modo de console para reiniciar .... nesse ponto, vejo uma mensagem de erro informando que o shutdown_vms falhou.

Eu esta é a maneira correta de instalar o script de desligamento e por que ele está falhando (onde eu olho nos registros?)

Editar: Eu usei o comando update-rc.d -f shutdown_vms start 0 0 6.

Quando eu olho para a lista de inicialização para rc0.d (shutdown), vejo que ambos shutdown_vms, vmware e gdm são todos de 0. Eu acho que se o gdm for disparado antes de shutdown_vms, ele matará o vms. Eu acho que isso é o que está acontecendo porque quando eu registro o número de vms em execução quando o script é executado, ele registra 0.

Posso alterar a ordem do gdm / vmware para 1 para que o shutdown_vms seja executado primeiro?

    
por firebird 30.12.2011 / 23:10

4 respostas

3

Isto parece que você deve colocá-lo em um script adequado como o método "stop". Seu script atual provavelmente falha, por causa de um código de saída que não é igual a zero.

Além disso, você deve incluir "$ ()" porque sua lista de vms provavelmente contém espaço em branco.

Teste seu script em sh -x YOURSCRIPT stop .

    
por 30.12.2011 / 23:22
2

tente adicionar: exit 0 sob concluído.

, então parece que o gdm faz isso durante o processo de desligamento. Talvez a melhor maneira é que você deixe seu script de teste de vms se realmente é necessário passar pelo procedimento de desligamento. Nesse caso, não faz nada para encerrar um processo inexistente. Este processo inexistente provavelmente causou sua mensagem de erro.

    
por 30.12.2011 / 23:36
1

Você nomeou o arquivo começando com um 'K' nos diretórios /etc/rc[06].d? Se você não fizer isso, eles não serão executados no desligamento.

    
por 31.12.2011 / 00:07
0

Hmmmm ... Seria legal se a saída da falha pudesse ser mostrada. Isso provavelmente limparia facilmente algumas coisas.

Um outro pensamento, tente colocar em uma instrução PATH logo após #! / bin / sh.

 #! /bin/sh
 PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:.....<anything else you need>
 export PATH
 .
 .   (rest of script)
 .
 exit 0

Eu não estou familiarizado com o vmlist.

    
por 03.01.2012 / 06:46