A pasta rc contém arquivos que iniciam na inicialização?

A pasta rc contém arquivos que iniciam na inicialização?

Criei um arquivo em /etc/rc0.d, chamei-o de rc.local.

Neste arquivo eu adicionei uma linha que executa outro arquivo que eu havia colocado Desktop. Fiz tudo isso para que o comando possa ser executado na inicialização. eu seguias instruções neste artigo(o primeiro método), mas nada parece funcionar.

Por que isto não está funcionando?

Responder1

/etc/rc.d/mencionado nas instruções que você vinculou é um diretório principalmente histórico que já foi usado para agrupar todos os diretórios de script de inicialização: teria havido /etc/rc.d/init.d/, e /etc/rc.d/rc0.d/assim /etc/rc.d/rc1.dpor diante. A maioria das distribuições modernas há muito optou por omitir o rc.ddiretório e colocar os outros diretórios diretamente sob /etc/.

/etc/rc0.d/deve conter links simbólicos para scripts (a localização real dos scripts deve ser /etc/init.d/) que devem ser executados emdesligamento ou desligamento do sistema.

/etc/rc6.d/é para links para scripts que devem ser executados emreinício(ou seja, ao desligar o sistema com a intenção de reiniciá-lo imediatamente, como após instalar uma atualização do kernel).

O diretório mais apropriado para um link para o seu script seria ou /etc/rc3.d/, /etc/rc5.d/dependendo da configuração do seu sistema e do nível de execução padrão do seu sistema (se estiver usando o SysVinit). Distribuições Linux baseadas no Debian geralmente usam o nível de execução 3 para o estado multiusuário normal (assumindo o SysVinit clássico), enquanto aquelas baseadas no RedHat/Fedora usariam o nível de execução 5 para o estado multiusuário com login GUI habilitado e o nível de execução 3 para o estado multiusuário com o subsistema GUI X11 local desabilitado.

Os nomes dos links simbólicos em qualquer /etc/rc?.d/diretório devem começar com S maiúsculo ou K maiúsculo, seguido por um número (geralmente) de dois dígitos para identificar o posicionamento relativo do script na ordem de inicialização, entre outros links nesse diretório. O S maiúsculo faria o sistema executar o script vinculado com o parâmetro de linha de comando start, enquanto K faria com que o parâmetro stopfosse usado.

Portanto, seu script deveria ter sido colocado em /etc/init.d/rc.local, e então você deveria ter feito um ou ambos os links simbólicos como este:

ln -s /etc/init.d/rc.local /etc/rc3.d/S99rc.local
ln -s /etc/init.d/rc.local /etc/rc5.d/S99rc.local

Mas isso não é tudo!

As distribuições modernas do Linux, mesmo aquelas que usam o SysVinit clássico em vez do systemd, tendem a usar várias soluções para paralelizar a execução de várias tarefas de inicialização do sistema, em vez de executá-las estritamente uma por uma. Isso ocorre porque em CPUs multi-core modernas, a paralelização tornará o processo de inicialização muito mais rápido. Nesse caso, você deve adicionar um bloco de comentários formatado especificamente no início do seu script para definir de quais serviços do sistema seu script depende, caso contrário a lógica de paralelização poderá executar o scriptcedo demais, antes que os serviços do sistema necessários sejam iniciados primeiro.

Se a sua distribuição usa systemd, isso é especialmente importante, pois até mesmo o padrão "padrão de fábrica" ​​de algumas distribuições rc.localé executado bem no início do processo de inicialização, a menos que você adicione definições de dependência adequadas.

Verhttp://refspecs.linuxbase.org/LSB_3.1.1/LSB-Core-generic/LSB-Core-generic/initscrcomconv.htmlpara especificações atuais do bloco de comentários recomendado para scripts de inicialização/desligamento no estilo SysVinit.

Resumindo, você pode querer algo assim no início do seu rc.localscript:

### BEGIN INIT INFO
# Provides: rc.local
# Required-Start: $local_fs $network $remote_fs
# Required-Stop: $local_fs $network $remote_fs
# Default-Start:  2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: run locally-configured start-up commands
### END INIT INFO

Na minha opinião, o Método 1 emas instruções que você vinculoucontém conselhos incompletos e antigos. Os outros dois métodos podem ser mais fáceis para um novo usuário, mas não incluem instruções sobre como determinar se esses métodos são aplicáveis ​​ou não em qualquer distribuição.

informação relacionada