Eu tenho um único comando no meu /etc/rc.local
script que deve iniciar o daemon de atualização do Tiny Tiny RSS durante a inicialização, mas o script não é executado durante a inicialização. Por quê?
O arquivo /etc/rc.local inteiro:
#!/bin/sh -e
#
# rc.local
#
# 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.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
/sbin/start-stop-daemon -b -c www-data:www-data -S -x /usr/bin/php /var/www/ttrss/update_daemon2.php -- -quiet
exit 0
/etc/rc.local
é executável:
# ls -l /etc/rc.local
-rwxr-xr-x 1 root root 342 May 25 16:14 /etc/rc.local
/etc/init.d/rc.local
existe e é executável:
# ls -l /etc/init.d/rc.local
-rwxr-xr-x 1 root root 801 Jul 27 2012 /etc/init.d/rc.local
/etc/init.d/rc.local
deve ser executado na inicialização deste nível de execução:
# runlevel
N 2
# ls -l /etc/rc2.d/S99rc.local
lrwxrwxrwx 1 root root 18 Sep 22 2012 /etc/rc2.d/S99rc.local -> ../init.d/rc.local
Se eu ligar manualmente para /etc/rc.local na linha de comando, o update_daemon carregará ...
# /etc/rc.local
# ps ax | grep update_daemon2.php
2233 ? S 0:00 /usr/bin/php /media/sda5/www/news/update_daemon2.php -quiet
2234 ? S 0:00 /usr/bin/php /media/sda5/www/news/update_daemon2.php -quiet
... o que devo lembrar de fazer sempre que meu servidor reiniciar até que esse problema seja corrigido.
Perguntas semelhantes já existem, mas até agora não consegui aplicar as informações no meu problema específico.
Por que o comando no rc.local não é executado durante a inicialização?
requiretty
configuração. Quando você está conectado, está executando o script em TTY, mas durante a inicialização do sistema, ele não está em TTY. Este link pode ajudá-lo a shell-tips.com/2014/09/08/… Obrigado.Respostas:
rc.local
O script é encerrado se ocorrer algum erro ao executar qualquer um de seus comandos (mencione o-e
sinalizador em#!/bin/sh -e
).É possível que alguns pré-requisitos não sejam atendidos quando você tenta executar seus comandos quando a
rc.local
execução ocorre, portanto, sua execução falha.Encontrei a mesma coisa ao configurar manualmente o governador da CPU e não o fiz
rc.local
. Aqui está minha solução alternativa personalizada, usadaupdate-rc.d
para executar seus comandos na inicialização:myscript.sh
no diretório/etc/init.d
com um cabeçalho:#!/bin/sh
sudo chmod +x /etc/init.d/myscript.sh
sudo update-rc.d myscript.sh defaults
Além disso, você pode verificar os
/etc/network/if-up.d
scripts e verificar se é possível acionar seus comandos quando a rede iniciar.fonte
update-rc.d
Eu tive algum problema semelhante no rc.local não executando na inicialização
sshades me forneceu a seguinte resposta:
Embora eu não testei sua solução, acho que parece lógico e funcionará. Contudo :
Eu também encontrei uma solução que adicionar um script a ./.config/autostart-scripts/ fará o truque
fonte
rc.local
estiver desligado, qual é a alternativa?tente
sudo sysv-rc-conf
verificar serc.local
está ativadofonte
sudo apt install sysv-rc-conf
rc.local
nem está na minha lista de serviços!Verifique se o script rc.local é executável:
Em seguida, habilite-o:
Reinicie o sistema ou inicie o script manualmente executando:
O status do serviço pode ser exibido executando:
fonte
rc-local
serviço.Tivemos esse problema em alguns servidores hospedados carregando regras de FW.
Nestas caixas, eles são reiniciados MUITO rapidamente e descobrimos que basta colocar um "sleep 1" em rc.local antes que as instruções de carregamento pareçam corrigir o problema. Eu acho que deu um pouco de tempo para as interfaces se estabelecerem antes de carregar as regras do FW.
fonte
sleep 1
resolveu meu problema. Interessante eu tenho muitos servidores, mas apenas um tem esse problema.Uma vez editei
rc.local
com o Bloco de notas no Windows e ele começou a ter esse problema.Nesse caso, o uso de um editor de texto suporta a conversão de EOL, como o Notepad ++, para converter o estilo de EOL em 'Unix', pode resolvê-lo.
Você também pode fazer isso
:set ff=unix
no Vim.fonte
Eu encontrei nos contêineres Ubuntu lxc que, se o rc.local tiver um shebang perfeitamente correto, por exemplo
falha, mas se você remover o shebang, ele funcionará.
Não cheguei ao fundo do porquê ou qual shell ele usa, eu acho que ele também bombardeia primeiro diferente de zero. (Em outras instalações do Ubuntu, o shebang adequado não é um problema)
fonte
Você precisará verificar se
/etc/rc.local
é executado durante a inicialização do servidor com o comando:sudo systemctl enable rc-local.service
fonte