Como o sistema operacional sabe qual parâmetro passar para /etc/init.d/?

4

Eu tenho trabalhado com o linux por um tempo, mas de uma maneira bastante simples.

Eu entendo que os scripts no init.d são executados quando o sistema operacional é iniciado, mas como exatamente ele funciona?

Como o os sabe qual parador deve passar para um script?

Para iniciar o apache, eu faria o sudo /etc/init.d/apache2 start. Se eu rodar o sudo /etc/init.d/apache2, ele não funciona sem o começo. Como o sistema operacional passa para o script?

    
por iDev247 28.06.2012 / 03:56

2 respostas

6

Dependendo da distro e da versão do Linux, os scripts sysvinit (esses scripts em /etc/init.d/ ) geralmente são executados a partir dos links simbólicos existentes em /etc/rc[0-6S].d , por /etc/init.d/rc .

No Ubuntu, você está usando o estilo antigo sysvinit ou, mais recentemente, upstart . Sob o diretório de gerenciamento iniciante ( /etc/events.d/ ), você encontrará um modo herdado que retorna à chamada /etc/init.d/rc . Caso contrário, /etc/init.d/rc é invocado para cada nível de execução via /etc/inittab .

Se você examinar a lógica de /etc/init.d/rc , verá que ela define ações dependendo do nível de execução ( 0 & S são incondicionalmente interrompidas) ou prefixo de script ( S[0-9][0-9]* scripts start, K[0-9][0-9]* ( matar) scripts parem). A numeração de scripts em um diretório de nível de execução (por exemplo, /etc/rc1.d/ ) determina a ordem em que os scripts são interrompidos ou iniciados. Os scripts de eliminação são executados primeiro e iniciam os scripts.

Para mais sobre isso, pesquise sysvinit e upstart.

    
por 28.06.2012 / 04:41
3

Eu sugiro que você leia um tutorial sobre como os runlevels e scripts de inicialização funcionam - link parece bastante compreensível.

Em suma, os scripts não são chamados diretamente, mas sim através de links simbólicos nos diretórios /etc/rc.d, onde n = runlevel. Os nomes dos links simbólicos são formatados assim:

[K | S] + nn + [string] 

onde nn é um número que marca a ordem em que os scripts são executados (números menores primeiro) e K ou S determinam se o script deve ser executado com o parâmetro "stop" ou "start".

    
por 28.06.2012 / 04:53