Como usar o comando 'init' no Linux

Iniciar é o pai de todos Processos Linux. É o primeiro processo a ser iniciado quando um computador é inicializado e é executado até que o sistema seja encerrado. É o ancestral de todos os outros processos.

Sua função principal é criar processos a partir de um script armazenado no arquivo /etc/inittab. Este arquivo geralmente armazena entradas que causam Iniciar Aparecer Gettys em cada linha, na qual os usuários do sistema podem fazer login. Ele também controla os processos autônomos exigidos por qualquer sistema específico.

O pinguim Tux é o mascote oficial do Linux.
Getty Images / John Coulter

Runlevels

UMA nível de execução é uma configuração de software do sistema que permite que apenas um grupo selecionado de processos seja executado. Os processos gerados por Iniciar para cada um desses níveis de execução são definidos no arquivo / etc / inittab. Iniciar suporta oito níveis de execução: 0 Através dos 6 e S ou s. O nível de execução muda quando um usuário privilegiado executa Telinit, que envia sinais apropriados para Iniciar, informando para qual nível de execução deve ser alterado.

Os níveis de execução 0, 1 e 6 são reservados. O nível de execução 0 para o sistema, nível de execução 6 reinicia o sistema e o nível de execução 1 força o sistema no modo de usuário único. O nível de execução S não deve ser usado diretamente, mas pelos scripts que são executados quando o nível de execução 1 é iniciado.

Os níveis de execução 7 a 9 são válidos, mas não estão bem documentados porque Unix convencional variantes não os usam. Os níveis de execução S e s são iguais.

Inicializando

Depois de Iniciar executa como a última etapa do núcleo seqüência de inicialização, ele procura o arquivo / etc / inittab para ver se há uma entrada do tipo initdefault. A entrada initdefault determina o nível de execução inicial do sistema. Se não houver tal entrada (ou nenhum / etc / inittab), um nível de execução deve ser inserido no console do sistema.

O nível de execução S ou s leva o sistema para o modo de usuário único e não requer um arquivo / etc / inittab. No modo de usuário único, um shell de root é aberto em / dev / console.

Ao entrar no modo de usuário único, iniciar lê o console ioctl estados de /etc/ioctl.save. Se este arquivo não existir, iniciar inicializa a linha em 9600 baud e com configurações CLOCAL. Quando iniciar sai do modo de usuário único, ele armazena as configurações ioctl do console neste arquivo para que possa reutilizá-las na próxima sessão de usuário único.

Ao entrar em um modo multiusuário pela primeira vez, Iniciar executa as entradas boot e bootwait para permitir que os sistemas de arquivos sejam montados antes que os usuários façam login. Em seguida, todas as entradas correspondem ao processo de nível de execução.

Ao iniciar um novo processo, Iniciar primeiro verifica se o arquivo / etc / initscript existe. Em caso afirmativo, ele usa este script para iniciar o processo.

Cada vez que uma criança termina, Iniciar registra o fato e o motivo pelo qual morreu em / var / run / utmp e / var / log / wtmp, desde que esses arquivos existam.

Alterar níveis de execução

Tela de ajuda Telinit

Depois de gerar todos os processos especificados, Iniciar espera que um de seus processos descendentes morra, um sinal de falha de energia, ou até que seja sinalizado pelo Telinit para alterar o nível de execução do sistema. Quando uma dessas três condições ocorre, ele examina novamente o arquivo / etc / inittab. Novas entradas podem ser adicionadas a este arquivo a qualquer momento. Contudo, iniciar ainda espera que uma das três condições acima ocorra. Para fornecer uma resposta instantânea, o Telinit Q comando acorda Iniciar para reexaminar o arquivo / etc / inittab.

Se Iniciar não está no modo de usuário único e recebe um powerfail sinal, ele lê o arquivo / etc / powerstatus. Em seguida, começa um comando com base no conteúdo deste arquivo:

  • F(AIL): Há falta de energia, o UPS está fornecendo energia. Execute o poder esperar falta de energia entradas.
  • O(K): A energia foi restaurada, execute o powerokwait entradas.
  • eu(OW): Há falta de energia e a bateria do no-break está fraca. Execute o powerfailnow entradas.

Se / etc / powerstatus não existe ou contém qualquer coisa diferente das letras F, O ou L, Iniciar se comporta como se lesse a letra F.

O uso de SIGPWR e / etc / powerstatus agora é desencorajado. Use o canal de controle / dev / initctl no moderno Distribuições Linux.

Quando Iniciar é solicitado a alterar o nível de execução, ele envia o sinal de aviso SIGTERM para todos os processos que estão indefinidos no novo nível de execução. Em seguida, espera cinco segundos antes de encerrar à força esses processos usando o sinal SIGKILL. Iniciar assume que todos esses processos e seus descendentes permanecem no mesmo grupo de processos que Iniciar originalmente criado para eles. Se algum processo alterar sua afiliação ao grupo de processos, ele não receberá esses sinais. Esses processos devem ser encerrados separadamente.

Telinit

Telinit está vinculado a / sbin / init. Leva um argumento de um caractere e sinais Iniciar para executar a ação apropriada. Os seguintes argumentos servem como diretivas para Telinit:

  • 0, 1, 2, 3, 4, 5 ou 6: Mudar para o nível de execução especificado.
  • a, b, c: Processe apenas as entradas do arquivo / etc / inittab com nível de execução a, b ou c.
  • ou q: Reexamine o arquivo / etc / inittab.
  • ou s: Mude para o modo de usuário único. Às vezes, o modo de usuário único é chamado modo de recuperação porque é freqüentemente usado para realizar reparos de emergência no sistema.
  • você ou você: Reexecute-se (preservando o estado). Não ocorre nenhum reexame do arquivo / etc / inittab. O nível de execução deve ser S, s, 1, 2, 3, 4 ou 5; caso contrário, a solicitação será ignorada silenciosamente.

Telinit também pode dizer Iniciar quanto tempo deve esperar entre os processos de envio a Sinais SIGTERM e SIGKILL. O padrão é cinco segundos, mas este valor pode ser alterado com o -t seg opção.

Telinit pode ser invocado apenas por usuários com privilégios apropriados.

Iniciar binário verifica se é Iniciar ou Telinit olhando seu ID de processo. O Real Iniciaro ID do processo de é sempre 1. Disto, segue-se que, em vez de chamar Telinit, uma pessoa pode usar Iniciar como um atalho.