Que diferenças fará se eu usar o comando “telinit 6” em vez de “reboot” para reiniciar meu computador? [duplicado]

1

Eu estou tentando entender Run Levels no Unix, eu encontrei Runlevel 6 é o estado de reinicialização. Então eu tentei mudar para o nível 6 usando o comando telinit 6 e funcionou como reboot no meu computador. Eu estou usando o Kali Linux, então o sudo não é necessário.

Está mudando / trocando runelevels apenas comandos para invocar algum processo? Quando estamos inicializando ou reiniciando ou desligando, estamos apenas mudando os níveis de execução?

    
por CodeChari 30.03.2018 / 21:21

2 respostas

1

Existe um sistema init no Linux chamado SysVinit que é modelado após o sistema init do UNIX System V. Algumas versões do Linux, na verdade, ainda usam este sistema, mantêm compatibilidade com ele, como SysVcompat do Systemd, ou o substituíram em parte (sem sysvcompat mas ainda usam scripts sysv como o Debian) ou o substituíram como sistemas Systemd "puros". / p>

É o SysV que essencialmente implementa o conceito de níveis de execução. Scripts são colocados em /etc/rc{runlevel}.d/ onde runlevel é o runlevel. O SysV também define o comportamento de ordenação padrão dos níveis de execução, incluindo qual deles usar como padrão. Cada script em cada nível de execução é executado com suas funções de inicialização ou desligamento, dependendo se esse nível de execução está subindo ou descendo. Assim, em um sistema sysvinit, sim quando você inicializa sua primeira execução / sbin / init e esse programa executará subseqüentemente as funções de inicialização de cada script em cada nível de execução. Eu também devo salientar que você pode ter mais scripts instalados do que aqueles ligados em / etc / rc * e é assim que você ativa e desativa os scripts e, portanto, os serviços que eles controlam.

Sistemas que não usam sysv não precisam fazer isso como systemd. Para colocá-lo simplesmente, o systemd possui unidades que definem suas dependências, como outros serviços, pontos de montagem, temporizadores ou destinos, como "network.target". Em vez de entrar em mais detalhes sobre o systemd, direi apenas que o systemd mantém a compatibilidade completa com scripts sysv, mas não necessariamente com seus níveis de execução. Além disso, o init pode ser executado primeiro ou o systemd pode ser executado e, em seguida, executar todos os scripts do sysv. Ou sua distro poderia ter substituído todos os seus scripts sysv por unidades systemd. A maioria das distros terá scripts de compatibilidade instalados para que coisas como reboot ou telinit funcionem através do systemd.

    
por 30.03.2018 / 22:44
1

Em init , o SO /sbin/telinit está vinculado a /sbin/init e, em systemed , está vinculado a /sbin/systemed . Então, é uma maneira de se comunicar com init ou systemed ou software similar.

O resultado de telinit 6 e reboot é o mesmo, mas eles percebem um pensamento diferente.

Citações do link

A runlevel is a software configuration of the system which allows only a selected group of processes to exist.

Portanto, alterar runlevel não é equivalente a rebooting ou power off .

Em init , o SO runlevel é permanentemente considerado por /etc/inittab . Ao iniciar o sistema init lê o arquivo para decidir quais grupos de processos devem ser iniciados. Um runlevel 6 diz não inicie nenhum processo e reinicie.

Uma alteração no /etc/inittab é permanente. Se o arquivo for modificado, init alterará o nível de execução na reinicialização e ficará com ele até uma modificação posterior do arquivo.

O efeito de telinit é uma vez e sem reinicialização. Após a reinicialização, init lerá novamente a partir de /etc/inittab e iniciará o nível de execução de acordo.

Agora, o nível de execução 6 diz init para eliminar todos os processos filhos e reinicializar. Com telinit 6 init , elimine todo o processo filho e reinicie. Em, emitindo o comando reboot , o init faz o mesmo. Mas isso não significa que a mudança de nível de execução seja equivalente à reinicialização. Porque se você alterar o nível de execução do seu sistema para 6 permanentemente usando /etc/inittab , ele continuará sendo reinicializado.

Se você usar telinit 6 para reinicializar seu sistema, em vez do comando reboot , isso não fará diferença.

    
por 30.03.2018 / 22:52