Sei que essa pergunta foi feita várias vezes, mas simplesmente não consigo fazê-la funcionar.
Aqui estão as etapas que eu tomei para fazê-lo funcionar:
- escreveu o script salvo como
collection.sh
- mudou
collection.sh
- se para/etc/init.d
- executado
$ sudo chmod 711 /etc/init.d/collection.sh
para definir permissões para executar o script - executado
$ ln -s /etc/init.d/collection.sh /etc/rc0.d/
para criar um link simbólico no/etc/rc0.d
- reiniciou a máquina com
$ sudo reboot
Essas etapas não tiveram êxito na execução collection.sh
na inicialização. Então, alguém pode apontar o que fiz de errado?
Pensei que talvez rc?.d
estivesse criando um link simbólico na pasta errada, pois há rc
pastas 0-6 e S. Em caso afirmativo, em que pasta deve ser feita?
collection.sh
deveria estar fazendo ou o que você espera que esteja falhando, é quase impossível responder como está.Respostas:
Você está fazendo 3 coisas erradas que eu vejo.
Primeiro: você deseja colocar seu link
/etc/rcS.d/
virtual para que ele seja executado quando a máquina entrar no modo "usuário único" (sem rede disponível) e/etc/rc[2-5].d/
para que ele seja executado quando a máquina entrar no modo "multiusuário" (níveis de execução 2 a 5) . O nível de execução 0/etc/rc0.d/
é inserido apenas quando a máquina é instruída a desligar. O nível de execução 6 é usado para "Reinicializar". Consulte a página da Wikipedia para níveis de execução UNIXSegundo: o nome do link não pode ser
collection.sh
. Ele precisa estar no formato emS09collection
que "S" significa Iniciar e "09" significa Iniciar após todos os 08 scripts terem sido iniciados . Veja aqui para mais detalhes.Terceiro: init é usado para iniciar os serviços daemon e não deve ser usado para executar o collection.sh diretamente. Você precisa criar um script init real que lide com o início e a parada do daemon collection.sh. Estude os scripts init pré-existentes
/etc/init.d/
para ter uma ideia de como eles funcionam. Como alternativa, consulte os links a seguir para obter mais documentação sobre como escrever scripts init.Além disso, você não precisa criar os links simbólicos diretamente nas
/etc/rc?.d
pastas. Todas as principais distribuições possuem ferramentas automatizadas para isso. Veja este artigo para mais detalhes.fonte
É difícil saber por que isso não está funcionando sem a visualização do script, mas as etapas que você tomou parecem razoáveis.
Algumas possibilidades que explicam a falha podem ser
Outro método de executar um script na inicialização (para a maioria das distribuições) é simplesmente adicioná-lo ao /etc/rc.local - isso tem a vantagem de ser executado por último, para que os pré-requisitos sejam atendidos.
fonte
Os links simbólicos precisam ser prefixados com uma chave de três caracteres que consiste em 'S' para iniciar ou 'K' para matar / parar, seguido por uma ordem de dois dígitos.
A maioria das distribuições inclui um programa como
update-rc.d
esse que criará e removerá os links simbólicos conforme desejado. Experimente o comandoman -k rc.d
para encontrar a documentação.Você pode ter um modelo em seu
/etc/init.d
diretório. Pode incluir comentários especialmente formatados com o objetivo de fornecer os parâmetros para o programa de atualização do rd.d. Se você não possui um modelo, provavelmente possui um script simples que pode ser usado como modelo.Algumas distribuições estão mudando para métodos alternativos de executar a inicialização. Verifique a documentação da sua distribuição.
fonte