Conheça o Linux: o diretório /etc/init.d

Se você usa Linux, provavelmente já ouviu falar do diretório init.d. Mas o que exatamente esse diretório faz? No fim das contas, ele faz uma coisa, mas faz isso para todo o sistema, portanto o init.d é muito importante. O diretório init.d contém vários scripts de início / parada para vários serviços em seu sistema. Tudo, desde acpid até x11-common, é controlado a partir deste diretório. Claro que não é exatamente assim tão simples.

Se você olhar para o diretório / etc, encontrará diretórios no formato rc # .d (Onde # é um número reflete um nível de inicialização específico - de 0 a 6). Dentro de cada um desses diretórios há vários outros scripts que controlam processos. Esses scripts começarão com um "K" ou um "S". Todos os scripts "K" são executados antes dos scripts "S". E, dependendo de onde os scripts estão localizados, determinará quando os scripts serão iniciados. Entre os diretórios, os serviços do sistema funcionam juntos como uma máquina bem lubrificada. Mas há momentos em que você precisa iniciar ou parar um processo de forma limpa e sem usar os comandos kill ou killall. É aí que o diretório /etc/init.d é útil.

Agora, se você estiver usando uma distribuição como o Fedora, poderá encontrar este diretório em /etc/rc.d/init.d . Independentemente da localização, ele serve ao mesmo objetivo.

Para controlar qualquer um dos scripts no init.d manualmente, você precisa ter acesso root (ou sudo). Cada script será executado como um comando e a estrutura do comando será semelhante a:

/etc/init.d/command OPTION

Onde comando é o comando real a ser executado e OPTION pode ser um dos seguintes:

  • começar
  • Pare
  • recarregar
  • reiniciar
  • forçar a recarga

Na maioria das vezes, você usará iniciar, parar ou reiniciar. Portanto, se você deseja parar sua rede, pode emitir o comando:

/etc/init.d/networking stop

Ou, se você fizer uma alteração na sua rede e precisar reiniciá-la, poderá fazê-lo com o seguinte comando:

/etc/init.d/networking restart

Alguns dos scripts init mais comuns neste diretório são:

  • trabalho em rede
  • samba
  • apache2
  • ftpd
  • sshd
  • dovecot
  • mysql

É claro que pode haver scripts mais usados ​​em seu diretório - isso depende do que você instalou. A lista acima foi tirada de uma instalação do Ubuntu Server 8.10 para que uma instalação padrão da área de trabalho tenha menos scripts do tipo rede.

Mas e quanto ao /etc/rc.local

Existe uma terceira opção que eu costumava usar bastante. Esta opção é o script /etc/rc.local . Esse arquivo é executado após a execução de todos os outros scripts de nível init, portanto, é seguro colocar vários comandos que você deseja emitir na inicialização. Muitas vezes, colocarei instruções de montagem para coisas como nfs neste script. Este também é um bom lugar para inserir scripts de "solução de problemas". Por exemplo, quando eu tinha uma máquina que, por algum motivo, o samba parecia não querer iniciar. Mesmo depois da verificação, verifique se o daemon do Samba foi configurado para inicializar na inicialização. Então, em vez de gastar todo o meu tempo adiantado com isso, simplesmente coloquei a linha:

/etc/init.d/samba start

no script /etc/rc.local e o Samba funcionou como um encanto. Eventualmente, eu voltaria e resolveria esse problema.

Pensamentos finais

Linux é flexível. O Linux é tão flexível que existem quase, inevitavelmente, várias maneiras de resolver um único problema. Iniciar um serviço do sistema é um desses problemas. Com a ajuda do sistema /etc/init.d (assim como o /etc/rc.local ), você pode ter certeza de que o serviço será iniciado.