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

Experimente Nosso Instrumento Para Eliminar Problemas

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

Se você olhar para o / etc diretório você encontrará diretórios que estão no formato rc # .d (Onde # é um número que reflete um nível de inicialização específico - de 0 a 6). Em cada um desses diretórios há vários outros scripts que controlam os 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 /etc/init.d diretório vem a calhar.

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

Para controlar qualquer um dos scripts em 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 OPÇÃO

Onde comando é o comando real para executar e OPÇÃO pode ser um dos seguintes:

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

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

/etc/init.d/networking stop

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

/etc/init.d/networking restart

Alguns dos scripts de inicialização mais comuns neste diretório são:

  • networking
  • samba
  • apache2
  • ftpd
  • sshd
  • pombal
  • mysql

É claro que pode haver scripts usados ​​com mais frequência em seu diretório - isso depende do que você instalou. A lista acima foi tirada de uma instalação do Ubuntu Server 8.10, portanto, uma instalação desktop padrão teria menos scripts de rede.

Mas e quanto a /etc/rc.local

Existe uma terceira opção que eu costumava usar um pouco. Esta opção é a /etc/rc.local roteiro. Este arquivo é executado após todos os outros scripts de nível init terem sido executados, portanto, é seguro colocar vários comandos que você deseja executar na inicialização. Muitas vezes, colocarei instruções de montagem para coisas como nfs neste script. Este também é um bom lugar para colocar scripts de 'solução de problemas'. Por exemplo, uma vez eu tive uma máquina que, por algum motivo, o samba parecia não querer iniciar. Mesmo depois de verificar 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 /etc/rc.local script e Samba funcionaram perfeitamente. Eventualmente, eu voltaria e resolveria esse problema.

Pensamentos finais

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