scripts no sistema de inicialização de bloco rc.local

0

Encontrou um problema estranho, hoje eu apenas atualizei o Ubuntu de 17.04 para 17.10, e reiniciei o sistema. No entanto, meu computador não pode entrar na área de trabalho, parece que foi bloqueado pelo meu script em /etc/rc.local . Os scripts assim:

sslocal -c /home/kinka/azure.conf

E comentando o script, posso entrar no meu Ubuntu normalmente. Além disso, a execução do script em segundo plano também funciona também.

sslocal -c /home/kinka/azure.conf &

Eu não sei o que leva a essa mudança?

    
por Kinka 21.10.2017 / 16:32

1 resposta

1

A razão principal é porque, por sua natureza, é sequencial.

O que você precisa entender é que /etc/rc.local existe para compatibilidade com o antigo sistema init SysV para a criação de serviços, e o SysV começou originalmente como um sistema sequencial nos bons tempos do AT & T Unix. Como o caos explica em sua resposta :

% bl0ck_qu0te%

O segundo motivo é que rc.local em si é um script (notou a #!/bin/sh -e line?). Os scripts por natureza também são sequenciais, portanto, se um comando não tiver sido finalizado ou não tiver sido colocado em segundo plano - o script terá que esperar que o programa A execute seu mumbo jumbo ou falhe completamente antes que qualquer outra coisa possa acontecer. Além disso, observe os comentários no topo do arquivo:

# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.

Portanto, seu sslocal -c /home/kinka/azure.conf simplesmente mantém o refém do sistema e não permite que o script saia e conclua a inicialização do sistema. Isso é tudo.

    
por Sergiy Kolodyazhnyy 21.10.2017 / 18:41