Um nível de execução é um estado operacional predefinido de um sistema UNIX ou Linux que determina quais serviços e processos estão disponíveis após a inicialização.

O que é nível de execução?
Um nível de execução (runlevel) é um conceito dos sistemas operacionais UNIX e Linux que define um estado específico da máquina, determinando quais processos, serviços e recursos do sistema estão ativos. Ele funciona como uma estrutura para controlar a inicialização e o desligamento do sistema, permitindo que os administradores gerenciem o ambiente de acordo com as necessidades operacionais. Cada nível de execução corresponde a um modo específico, como manutenção do sistema, operação multiusuário baseada em texto ou disponibilidade completa da interface gráfica.
Ao inicializar, o sistema entra em um nível de execução padrão definido em sua configuração, e o processo init garante que o conjunto correto de serviços seja iniciado ou interrompido com base nesse nível. Ao alterar o nível de execução, os administradores podem adaptar rapidamente o sistema a diferentes tarefas, como solucionar problemas no modo de usuário único, executar sem rede por motivos de segurança ou habilitar serviços gráficos e de rede completos para uso regular. Esse mecanismo fornece uma maneira padronizada e eficiente de gerenciar o comportamento do sistema sem a necessidade de intervenção manual para cada serviço individual.
Diferentes níveis de execução do Linux
Aqui está uma tabela estruturada dos níveis de execução tradicionais do Linux SysV e suas finalidades:
| Nível de execução | Descrição | Caso de uso típico |
| 0 | Parada (desligamento) | Desliga o sistema com segurança. |
| 1 | Modo de usuário único | Modo de manutenção ou emergência com Acesso à raiz somente, sem networking. |
| 2 | Modo multiusuário sem rede | Fornece vários logins de usuário, mas desabilita serviços de rede (varia de acordo com a distribuição). |
| 3 | Modo multiusuário completo com rede | Modo padrão baseado em texto, não gráfico, com todos os serviços e redes habilitados. |
| 4 | Indefinido / definível pelo usuário | Raramente usado; disponível para configuração personalizada. |
| 5 | Modo multiusuário com rede e GUI | Inicializa em ambiente de desktop gráfico com rede completa. |
| 6 | Reinicie | Reinicia o sistema com segurança. |
Para que serve o Runlevel?
Os níveis de execução (runlevels) são usados para controlar o estado operacional de um sistema Linux ou UNIX, definindo quais serviços, processos e recursos do sistema devem estar ativos em um determinado momento. Eles permitem que os administradores gerenciem o comportamento do sistema durante a inicialização, o desligamento ou as transições entre diferentes modos de operação.
Por exemplo, um sistema pode ser colocado no modo de usuário único para solução de problemas, alternado para o modo multiusuário para operação normal. server operações ou inicializados em uma interface gráfica para uso em desktop. Ao definir ou alterar o nível de execução, os administradores podem habilitar ou desabilitar rapidamente grupos de serviços, conservar recursos do sistema, realizar tarefas de manutenção ou garantir que a máquina seja executada na configuração mais adequada para a função pretendida. Essa abordagem estruturada ajuda a manter a consistência, a segurança e a eficiência em diferentes ambientes.
Como verificar o nível de execução?
Você pode verificar o nível de execução atual em um sistema Linux usando comandos que informam o estado operacional do sistema. Em sistemas SysVinit tradicionais , o comando `runlevel` exibe os níveis de execução anterior e atual, enquanto o comando `who -r` mostra o nível de execução atual com mais detalhes.
Em distribuições modernas baseadas em systemd , que substituem runlevels por targets , o comando equivalente é `systemctl get-default` para ver o target padrão e `systemctl isolate <target>` para alternar para outro. Além disso, `systemctl list-units --type=target` fornece informações sobre targets ativos, que correspondem a runlevels como `multi-user.target` ou `graphical.target`.
Como alterar o nível de execução no Linux?

A alteração do nível de execução no Linux depende de o sistema usar a estrutura SysVinit mais antiga ou o sistema init systemd mais moderno.
Sistemas baseados em SysVinit
O nível de execução pode ser alterado temporariamente com o comando `init` ou `telinit` seguido pelo número do nível de execução. Por exemplo, executar `init 3` alterna o sistema para o modo multiusuário sem interface gráfica, enquanto `init 5` inicia o ambiente gráfico. Para tornar a alteração permanente, o nível de execução padrão deve ser modificado no arquivo `/etc/inittab`, onde o sistema lê qual nível de execução deve ser inicializado por padrão.
Sistemas baseados em Systemd
Os níveis de execução são substituídos por destinos . Para alternar temporariamente para outro destino, você usa `systemctl isolate <destino>`, como `systemctl isolate multi-user.target` para entrar no modo texto ou `systemctl isolate graphical.target` para iniciar a interface gráfica. Para alterar o padrão para inicializações futuras, você executa `systemctl set-default <destino>`, que atualiza o link simbólico para o destino padrão do sistema.
Por que o nível de execução é importante?
Aqui está uma lista de razões pelas quais os níveis de execução são importantes em sistemas Linux e Unix:
- Controle de sistema. Os níveis de execução definem quais serviços e processos devem ser executados, dando aos administradores controle preciso sobre o estado operacional do sistema.
- Flexibilidade. Eles permitem a troca rápida entre diferentes modos, como o modo de usuário único para manutenção ou o modo gráfico para uso em desktop.
- guia de solução de problemas. Os administradores podem inicializar em ambientes mínimos (como nível de execução 1) para corrigir erros de configuração ou se recuperar de falhas.
- Gestão de recursos. Ao desabilitar serviços desnecessários em certos níveis de execução, o sistema pode conservar CPU, memóriae poder.
- Total. Níveis de execução mais baixos podem restringir o acesso a usuários e serviços, o que é útil ao isolar o sistema durante manutenção ou suspeita de comprometimento.
- Consistência. Eles fornecem uma estrutura padronizada para estados do sistema em diferentes sistemas do tipo Unix, simplificando a administração.
- Completa. Scripts e configurações vinculadas a níveis de execução simplificam a inicialização, o desligamento e as transições, reduzindo o trabalho manual.
Problemas de nível de execução
Aqui está uma visão geral dos problemas comuns de nível de execução e por que eles são importantes:
- Nível de execução padrão mal configurado. Se o nível de execução padrão do sistema (ou destino do systemd) estiver definido incorretamente, a máquina pode inicializar em um estado indesejado, como o modo gráfico em um server, ou um modo não conectado em rede em uma estação de trabalho, levando ao desperdício de recursos ou usabilidade limitada.
- Falha ao carregar serviços críticos. Em um determinado nível de execução, certos daemons Espera-se que sejam iniciados automaticamente. Se erros de configuração impedirem sua inicialização, o sistema poderá ficar sem rede, serviços de exibição ou até mesmo recursos essenciais de login, deixando-o parcial ou totalmente inutilizável.
- Incapacidade de alternar níveis de execução. Problemas com scripts de inicialização ou serviço dependências pode impedir que o sistema altere os modos dinamicamente. Por exemplo, alternar do nível de execução 3 (multiusuário baseado em texto) para o nível de execução 5 (gráfico) pode falhar se o gerenciador de exibição estiver configurado incorretamente ou ausente.
- Loops de inicialização ou travamentos. Uma configuração de nível de execução incorreta ou quebrada pode fazer com que o sistema tente carregar repetidamente serviços incompatíveis, resultando em reinicializações contínuas ou núcleo pânico. Isso geralmente acontece quando o nível de execução padrão aponta para um modo que requer indisponível Hardwares ou software.
- Comportamento inconsistente entre distribuições. De jeito nenhum Distribuições Linux trate os níveis de execução da mesma forma. Por exemplo, alguns usam o nível de execução 2 como o modo multiusuário padrão, enquanto outros usam o nível de execução 3 ou 5. Isso pode gerar confusão e configurações incorretas quando os administradores trabalham em vários sistemas.
- Transição para alvos do systemdOs sistemas Linux modernos substituíram amplamente os níveis de execução por alvos systemd. Embora tenham um propósito semelhante, as diferenças na terminologia e nos comandos podem causar problemas para administradores acostumados ao SysVinit, levando a erros no gerenciamento de serviços e na recuperação do sistema.
Qual é a diferença entre Target e Runlevel?
Aqui está uma tabela comparativa que explica a diferença entre níveis de execução e alvos no Linux:
| Aspecto | Nível de execução (SysVinit) | Alvo (systemd) |
| Definição | Um estado numérico predefinido (0–6) que determina quais serviços e processos iniciam. | Uma unidade nomeada no systemd que agrupa serviços e define o estado do sistema. |
| Formato | Identificado por números (por exemplo, nível de execução 3 = multiusuário sem GUI). | Identificado por nomes descritivos (por exemplo, multi-user.target, graphical.target). |
| Arquivo de configuração | Controlado via /etc/inittab. | Gerenciado com arquivos de unidade em /etc/systemd/system/ e /lib/systemd/system/. |
| Flexibilidade | Estados fixos com personalização limitada (principalmente 7 níveis de execução). | Altamente flexível, permitindo destinos e dependências personalizados. |
| Estado padrão | Definido em /etc/inittab. | Definir com systemctl set-default . |
| Comando de alteração | Alterado temporariamente com init ou telinit . | Alterado temporariamente com systemctl isolate . |
| Extensibilidade | Não é facilmente extensível; está vinculado ao SysVinit legado. | Totalmente extensível; os administradores podem criar novos alvos para necessidades específicas. |
| Verificação do status atual | Verificado com runlevel ou who -r. | Verificado com systemctl get-default ou systemctl list-units --type=target. |