Estou aprendendo a linha de comando de um livro chamado " Linux Command Line and Shell Scripting Bible, Second Edition ". O livro afirma isso:
Algumas implementações do Linux contêm uma tabela de processos para iniciar automaticamente na inicialização. Nos sistemas Linux, essa tabela geralmente está localizada no arquivo especial / etc / inittabs.
Outros sistemas (como a popular distribuição Ubuntu Linux) utilizam a pasta /etc/init.d, que contém scripts para iniciar e parar aplicativos individuais no momento da inicialização. Os scripts são iniciados através de entradas nas pastas /etc/rcX.d, onde X é um nível de execução.
Provavelmente porque sou novo no linux, não entendi o que o segundo parágrafo citado significava. Alguém pode explicar o mesmo em uma linguagem muito mais clara?
fonte
Respostas:
Vamos esquecer
init.d
ourcx.d
manter as coisas muito simples. Imagine que você estava programando um programa cuja única responsabilidade é executar ou matar outros scripts, um por um.No entanto, seu próximo problema é garantir que eles funcionem em ordem. Como você faria isso?
E vamos imaginar que este programa olhou dentro de uma
scripts
pasta para executar os scripts. Para ordenar a prioridade dos scripts em que você os nomeará, digamos ordem numérica. Essa ordem é o que determina a relação entreinit.d
erc
Em outras palavras,
init.d
contém os scripts a serem executados ercX.d
contém sua ordem de execução.O
X
valor emrcX.d
é o nível de execução. Isso pode ser traduzido livremente para o estado atual do SO.Se você cavar dentro dos
rcX.d
scripts, encontrará esta formatação:X
é substituído porK
ouS
, que significa se o script deve estarkilled
oustarted
no nível de execução atualxx
é o número do pedidoabcd
é o nome do script (o nome é irrelevante, no entanto, onde aponta é o script que será executado)fonte
Existem vários sistemas init diferentes para Linux. Os principais são SysVinit (o tradicional), Upstart (substituto do Ubuntu) e SystemD (empurrado pelo Fedora e Gnome). Os diretórios
/etc/init.d
e/etc/rc?.d
são usados pelo SysVinit. O livro pode mencioná-los em relação ao Ubuntu porque as informações são um pouco antigas (o Ubuntu costumava usar o SysVinit como todos os outros) ou porque esses diretórios ainda existem para compatibilidade./etc/init.d
contém vários scripts, cada um contendo instruções para iniciar e parar um serviço. Alguns desses serviços precisam ser iniciados no momento da inicialização; outros precisam ser iniciados no modo multiusuário, mas não no modo de manutenção de usuário único; e é possível definir modos diferentes com diferentes conjuntos de serviços desejados. O SysVinit gerencia isso por níveis de execução . O diretório/etc/rc$N.d
contém os scripts a serem executados ao inserir o nível de execução N (/etc/rc$N.d/S*
) e os scripts a serem executados ao sair do nível de execução N (/etc/rc$N.d/K*
). Como muitos níveis de execução têm scripts em comum, em vez de armazenar uma cópia dos scripts para cada nível de execução, todos os scripts são armazenados em um único local/etc/init.d
e os diretórios específicos do nível de execução./etc/rc?.d
contém links simbólicos. Além disso, os nomes dos links simbólicos indicam se o serviço deve ser iniciado (S*
) ou parado (eliminadoK*
) nesse nível de execução, e um prefixo numérico é usado para controlar a ordem em que os scripts são executados.O script responsável pela travessia
/etc/rc$N.d
é/etc/init.d/rc
(no Ubuntu pré-inicializado e no Debian; os locais podem variar em outras distribuições Linux).fonte
/etc/init.d
e/etc/rc?.d
mais, e tem Upstart em vez disso?/etc/init.d
( em vez dos.conf
arquivos do Upstart/etc/init
), portanto, o Upstart ainda suporta/etc/init.d
e oferece/etc/rc?.d
compatibilidade./etc/init.d
é o diretório ao qual os scripts init pertencem.O
etc/rcX.d
é onde as ligações que controlam quais os serviços que são mortas ou iniciado ao entrar nível de execuçãoX
. Arquivos emrcX.d
começando com K são executados com o parâmetrostop
, e os arquivos começando comS
são executados com o parâmetrostart
. É comum sequenciar a inicialização e interromper a ordem usando um número de dois dígitos após oK
ouS
. Para garantir a ordem correta de iniciar e parar, é comum que as duas sequências totalizem até 100.Os programas podem ser desativados em um nível de execução removendo os links ou alterando o caso de
K
ouS
parak
ous
.EDIT: Os administradores normalmente executam os scripts a partir dos
/etc/init.d
quais pode ser um link simbólico para outro diretório, dependendo da distribuição. (Distribuições diferentes têm padrões diferentes.)o
rcX.d
são usados pelo código de inicialização para alterar os níveis de execução.fonte
/etc/init.d
é um link simbólico para o diretório sob/etc/rc.d/init.d
/etc/init.d
é inútil sem/etc/rcX.d
? E como/etc/rcX.d
é o controlador dos programas iniciados na inicialização, sua função é semelhante à de/etc/init.d
, correto?Embora o @BillThor tenha respondido muito bem, aqui está o meu entendimento
/etc/rcX.d
e/etc/init.d
:/etc/init.d
contém scripts para iniciar e parar aplicativos individuais no momento da inicialização./etc/rc?.d
Os diretórios representam vários níveis de execução e os scripts contidos em nada mais são do que links simbólicos para os scripts reais em/etc/init.d
diretório. A alteração dos níveis de execução altera o modo do sistema, como o modo Usuário único, muito básico, para o modo somente console, para a interface gráfica avançada.Portanto, não há uso de
/etc/rc?.d
diretórios sem o/etc/init.d
próprio (e, é claro, vice-versa).fonte