Por que meu script .bashrc está executando fora de ordem / não está aguardando a conclusão das etapas?

3

Eu tenho a necessidade de professores para preencher registros eletrônicos em áreas remotas, e eles precisam ser capazes de fazê-lo rapidamente e com o mínimo necessário. Para conseguir isso eu configurei netbooks com uma instalação "vanilla" do Debian 6 sem nada além do rdesktop. O netbook efetua login automaticamente (via / etc / inittab) e depois eu uso o arquivo .profile nos arquivos .bashrc no diretório home do usuário para relançar a rede (para corrigir um bug dhcp), iniciar o startx para o servidor de janelas e iniciar o rdesktop um servidor de terminal para obter o registro. Isso funciona sem problemas, e o professor recebe seu registro em menos de 30 segundos.

O que eu gostaria de acontecer é que quando eles fecham o rdesktop (logout do servidor de terminal) o laptop é desligado, mas até agora falhou. Eu tinha originalmente tentado apenas adicionar o comando shutdown à próxima linha do script, mas por algum motivo inexplicável o script parece estar fora de ordem e a máquina está sendo desligada antes que o rdesktop seja executado. Eu acho que isso é porque o rdesktop é "forking". Existe uma maneira que eu possa esperar que o rdesktop seja encerrado antes que o resto do script seja executado?

Eu já tentei: dormir antes do desligamento espere antes do desligamento

Eu sei como eu poderia fazer isso no visual basic / vbscript / arquivo em lote, mas eu sou muito novo no Linux e estou começando a pensar que estou perdendo o óbvio ou sendo estúpido!

Meus arquivos são os seguintes:

/home/user/.profile:
sudo dhclient
startx -- :1

/home/user/.bashrc:
rdesktop -u "" -k en-gb -f servername

(A falta de nome de usuário é intencional, pois faz com que o servidor de terminal não preencha previamente o nome de usuário para login com o nome de usuário do netbook do linux)

    
por James Howell 12.05.2011 / 21:45

2 respostas

3

O que pode estar realmente acontecendo é que .bashrc está sendo executado mais do que você pensa.

Se ele for executado e não houver nenhuma tela X ou variável DISPLAY, o rdesktop falhará e, em seguida, o desligamento será executado. A correção do @ dimmer deve lidar com isso, embora haja uma maneira mais limpa.

Ele deve funcionar se você colocar o comando shutdown após o comando startx e colocar o comando rdesktop no usuário .xinitrc . Isso pode ser um pouco mais limpo e mais robusto. Experimente.

    
por 12.05.2011 / 22:33
0

Você já tentou isso:

/home/user/.bashrc

rdesktop -u "" -k en-gb -f servername && sudo shutdown -h now
    
por 12.05.2011 / 22:10