Por que os scripts init.d estão no etc?

16

Continuo lendo / ouvindo /etcos arquivos de configuração do sistema. Alguém pode explicar / me dar alguma intuição para por que esses scripts que iniciar / parar / reiniciar vários programas são geralmente em /etcvez de /varou /usrou algo semelhante?

Adam Thompson
fonte
Embora a pergunta possa ser levemente orientada para a opinião, acho que ela pode ser respondida com fatos reais.
Julie Pelletier
As perguntas sobre razões históricas são "baseadas em opiniões"? Olhando para trás, é provável que exista alguma razão factual para a ocorrência de algo. Mesmo que seja "porque o Sr. Grandhacker fez isso", não depende das opiniões de ninguém que responde à pergunta agora.
Ilkkachu
Só que a pergunta dizia "por que deveriam ser", o que é um gatilho para as "discussões coloridas" baseadas em opiniões. Editado um pouco para torná-lo menos. @ Adam, reverta se achar que isso é contra a sua intenção.
Ilkkachu
11
Porque quando e como os serviços iniciam é a configuração do sistema.
precisa saber é o seguinte
11
Para passas histéricas.
TMN

Respostas:

22

Desde o início (historicamente, e no processo de inicialização ...), /etcfaz parte do /(o primeiro sistema de arquivos montado), enquanto /usrnão era (até que os discos ficassem grandes). /varmantém dados temporários , enquanto esses scripts não são temporários.

Não é tão simples, mas começou assim e há poucas razões para refazer todo o layout do diretório.

Thomas Dickey
fonte
11
Como você diz, não é assim tão simples. Vários sistemas comerciais UNIX tinham executáveis ​​binários reais em /etcalgum momento ou outro. Pelo menos init.dé principalmente scripts em sistemas modernos. Mas ainda não é possível ter /etcmontado somente leitura.
Satō Katsura
2
@SatoKatsura: Com o advento de linguagens compiladas que parecem linguagens de script, comecei a perceber que alguns scripts / etc (até mesmo scripts init) foram substituídos por go programs - executáveis ​​binários.
Slebetman
Também é interessante notar que as substituições modernas do sysVinit realmente usam arquivos de configuração simples em vez de scripts completos, portanto, /etcpodem acabar com a limpeza de coisas que não são de configuração.
GnP
/tmp mantém dados temporários. /varmantém dados variáveis
Neil McGuigan
14

Os scripts de inicialização são na verdade uma parte importante da configuração do sistema.

Embora o processo de inicialização seja muito menos personalizado do que há 15 a 30 anos, e a maior parte da configuração da inicialização tenha sido automatizada, todas as opções administrativas que determinam a sequência de inicialização ainda estão presentes /etc.

Isso representa uma maneira muito centralizada de manter e fazer backup da configuração do sistema. Na maioria dos sistemas, o backup /etcé suficiente para permitir a reinstalação de todo o sistema com facilidade. Você simplesmente faz uma reinstalação completa com os programas necessários e restaura seu /etcbackup.

Julie Pelletier
fonte
3

M. Dickey e M. Pelletier compraram as instalações da questão. Mas as premissas estão erradas.

Se você leu " /etcé para arquivos de configuração do sistema", leu algo que não mostra a imagem completa para você. Olhe o nome. É "et cetera". As pessoas colocaram tudo na pia da cozinha uma vez ou outra.

  • /etc/rc costumava ser (e em alguns sistemas ainda é) o programa executado para iniciar tudo.
  • O arquivo de imagem do programa para o primeiro processo do usuário estava /etc/initem um ponto (no XENIX, por exemplo, muito antes de iniciar uma idéia).
  • /etc/profile,, /etc/zprofilee todo o resto são definitivamente scripts.
  • O OpenBSD's /etc/netstarté um programa; como é o FreeBSD /etc/ipfw.rules.
  • O mesmo acontece com o FreeBSD /etc/rc.suspende /etc/rc.resume; e, de fato /etc/rc.sendmail, /etc/rc.bsdextendede /etc/rc.firewall.

Da mesma forma, se você leu que "os scripts que iniciam / param / reiniciam vários programas geralmente estão em /etcvez de /varou /usrou algo semelhante", você já leu outra coisa que não mostra a imagem completa para você.

  • A convenção do FreeBSD / PC-BSD é ter um /usr/local/etc/rc.d/diretório para rcscripts do sistema não operacional . rcscripts para todos os tipos de coisas vivem lá e não abaixo /etc.
  • Você vai encontrar pessoas daemontools-Família que pôr algumas coisas de gerenciamento de serviços em /var/sv, /var/servicee locais semelhantes. (Meu conjunto de ferramentas nosh, por exemplo, fornece quase mil pacotes de serviços /var/sv. Os únicos pacotes de serviços que entram /etc/service-bundlessão entre 60 e 70 necessários antes da /usrmontagem, incluindo os serviços que montam e verificam, /usrse necessário.)
  • convenções do sistema operacional Systemd tenho algumas coisas que vivem em /etc/systemd, algumas coisas no /run/systemd, algumas coisas no /usr/lib/systemd, e ( mesmo que seja em situação irregular por razões inaplicáveis ) algumas coisas no /usr/local/lib/systemd. Mais uma vez, a maioria das "coisas para iniciar / serviços parar" devem ser encontrado em /usrvez de sob /etc.
JdeBP
fonte
2

Você faria bem em revisar o padrão de hierarquia do sistema de arquivos . Ele explicará (em detalhes) exatamente por que isso ocorre, mas também contém essas informações em muitos outros caminhos que podem lhe interessar.

O padrão do sistema de arquivos foi projetado para ser usado por desenvolvedores de distribuição Unix, desenvolvedores de pacotes e implementadores de sistema. No entanto, o objetivo principal é ser uma referência e não é um tutorial sobre como gerenciar um sistema de arquivos Unix ou hierarquia de diretórios.

draeath
fonte
Não explica o contexto histórico.
Thorbjørn Ravn Andersen