RHCSA Series Process Management no RHEL 7 Boot, desligamento e tudo mais - Parte 5

RHCSA Series Process Management no RHEL 7 Boot, desligamento e tudo mais - Parte 5

Iniciaremos este artigo com uma revisão geral e breve do que acontece desde o momento em que você pressiona o Poder botão para ligar o seu RHEL 7 Servidor até você receber a tela de login em uma interface de linha de comando.

Processo de inicialização do Linux

Observe que:

1. Os mesmos princípios básicos se aplicam, com talvez pequenas modificações, a outras distribuições Linux, e
2. A descrição a seguir não se destina a representar uma explicação exaustiva do processo de inicialização, mas apenas os fundamentos.

Processo de inicialização do Linux

1. O PUBLICAR (Energia no auto -teste) Inicializa e executa verificações de hardware.

2. Quando o PUBLICAR Acabamentos, o controle do sistema é passado para o carregador de inicialização do primeiro estágio, que é armazenado no setor de inicialização de um dos discos rígidos (para sistemas mais antigos usando BIOS e MBR) ou uma partição dedicada (U) EFI.

3. O carregador de inicialização do primeiro estágio e então carrega o carregador de inicialização do segundo estágio, geralmente Grub (Grande carregador de inicialização unificada), que reside dentro /bota, que por sua vez carrega o kernel e o sistema de arquivos baseado em RAM inicial (também conhecido como initramfs, que contém programas e arquivos binários que executam as ações necessárias para finalmente montar o sistema de arquivos raiz real).

4. Somos apresentados a uma tela de respingo que nos permite escolher um sistema operacional e um kernel para inicializar:

Tela do menu de inicialização

5. O kernel configura o hardware anexado ao sistema e, uma vez que o sistema de arquivos raiz for montado, inicia o processo de PID 1, que por sua vez inicializará outros processos e nos apresentará um prompt de login.

Observação: Que, se desejarmos fazê -lo posteriormente, podemos examinar as especificidades desse processo usando o comando DMESG e filtrando sua saída usando as ferramentas que explicamos em artigos anteriores desta série.

Tela de login e processo de processo

No exemplo acima, usamos o conhecido comando ps Para exibir uma lista de processos atuais cujo processo pai (ou, em outras palavras, o processo que os iniciou) é Systemd (O sistema e gerente de serviços para os quais a maioria das distribuições modernas de Linux mudou) durante a inicialização do sistema:

# ps -o ppid, pid, uname, comm --ppid = 1 

Lembre -se de que o -o Bandeira (abreviação de -formatar) permite que você apresente a saída de ps em um formato personalizado para atender às suas necessidades usando as palavras -chave especificadas no Especificadores de formato padrão seção em Homem ps.

Outro caso em que você deseja definir a saída de ps Em vez de seguir o padrão, é quando você precisa encontrar processos que estão causando uma CPU e / ou carga de memória significativos e classificá -los de acordo:

# ps aux--sort =+pcpu # classificar por %cpu (ascendente) # ps aux--sort = -pcpu # classificar por %cpu (descendente) # ps aux--sort =+pmem # classificar por %mem (ascendente (ascendente ) # ps aux--sort = -pmem # classificar por %mem (descendente) # ps aux--sort =+pcpu, -pmem # combinar classificar por %cpu (ascendente) e %mem (descendente) 
Personalize a saída do comando ps

Uma introdução ao Systemd

Poucas decisões no mundo do Linux causaram mais controvérsias do que a adoção de Systemd pelas principais distribuições Linux. Os defensores do SystemD nomeiam como suas principais vantagens os seguintes fatos:

Leia também: A história por trás de 'init' e 'Systemd'

1. O Systemd permite que mais processamento seja feito em paralelo durante a inicialização do sistema (em oposição ao mais antigo Sysvinit, o que sempre tende a ser mais lento porque inicia o processo um a um, verifica se um depende de outro e aguarda os daemons para lançar para que mais serviços possam começar) e

2. Funciona como um gerenciamento dinâmico de recursos em um sistema em execução. Assim, os serviços são iniciados quando necessário (para evitar consumir recursos do sistema, se não estiverem sendo usados) em vez de serem lançados sem um motivo válido durante a inicialização.

3. Compatibilidade com versões anteriores com Sysvinit scripts.

Systemd é controlado pelo SystemCtl Utilitário. Se você vier de um Sysvinit Antecedentes, é provável que você esteja familiarizado:

  1. o serviço ferramenta, que - naqueles sistemas mais antigos - foi usado para gerenciar scripts de sysvinit e
  2. O utilitário chkconfig, que serviu ao objetivo de atualizar e consultar informações de nível de execução para serviços de sistema.
  3. desligar, que você deve ter usado várias vezes para reiniciar ou interromper um sistema em execução.

A tabela a seguir mostra as semelhanças entre o uso dessas ferramentas herdadas e SystemCtl:

Ferramenta herdada SystemCTL equivalente Descrição
Nome do serviço Iniciar Nome do SystemCTL Iniciar Iniciar o nome (onde o nome é um serviço)
Nome do serviço Stop Nome do SystemCtl Stop Nome da parada
Nome do serviço Condrestart Nome do SystemCtl Try-Restart Reinicia o nome (se já estiver em execução)
Nome do serviço Reiniciar Nome de reinicialização do SystemCTL Reinicia o nome
Nome do serviço Reload Nome do SystemCTL Recarregar Recarregue a configuração para o nome
status do nome do serviço Nome do status SystemCTL Exibe o status atual do nome
Serviço -status -all SystemCtl Exibe o status de todos os serviços atuais
nome de chkconfig em SystemCTL Habilitar nome Ativar nome a ser executado na inicialização, conforme especificado no arquivo da unidade (o arquivo para o qual os pontos simplificadores). O processo de ativação ou desativação de um serviço para iniciar automaticamente na inicialização consiste em adicionar ou remover links simbólicos dentro do diretório/etc/Systemd/System.
Nome do Chkconfig OFF SystemCTL Desativar o nome Desative o nome para executar na inicialização, conforme especificado no arquivo da unidade (o arquivo ao qual os pontos simplificadores)
Nome de Chkconfig -list Nome habilitado para SystemCTL IS Verifique se o nome (um serviço específico) está atualmente ativado
chkconfig -List SystemCtl -Type = Serviço Exibe todos os serviços e diz se eles estão ativados ou desativados
desligamento -h agora Systemctl PowerOff Ligue a máquina (parada)
Desligamento -R agora reinicialização do SystemCTL Reinicie o sistema

Systemd Também introduziu os conceitos de unidades (que podem ser um serviço, um ponto de montagem, um dispositivo ou um soquete de rede) e alvos (que é assim que o Systemd consegue iniciar vários processos relacionados ao mesmo tempo e pode ser considerado -embora não é igual ao equivalente a níveis em Baseado em sysvinit sistemas.

Resumindo

Outras tarefas relacionadas ao gerenciamento de processos incluem, mas podem não se limitar a, a capacidade de:

1. Ajuste a prioridade da execução no que diz respeito ao uso dos recursos do sistema, está preocupado com um processo:

Isso é realizado através do Renice utilidade, que altera a prioridade de agendamento de um ou mais processos de execução. Em termos simples, a prioridade de agendamento é um recurso que permite o kernel (presente nas versões => 2.6) para alocar recursos do sistema conforme a prioridade de execução atribuída (também conhecida como gentileza, em uma faixa de -20 através 19) de um determinado processo.

A sintaxe básica de Renice é o seguinte:

# Renice [-n] Prioridade [-gpu] Identificador 

No comando genérico acima, o primeiro argumento é o valor da prioridade a ser usado, enquanto o outro argumento pode ser interpretado como processo Ids (que é a configuração padrão), IDs de grupo de processo, IDs de usuário ou nomes de usuário. Um usuário normal (exceto root) pode modificar apenas a prioridade de agendamento de um processo que ele possui e apenas aumentar o nível de gentileza (o que significa assumir menos recursos do sistema).

Prioridade de agendamento de processos
2. Mate (ou interrompa a execução normal) de um processo conforme necessário:

Em termos mais precisos, matar um processo autoriza o envio de um sinal para terminar sua execução graciosamente (Sigterm = 15) ou imediatamente (Sigkill = 9) através dos comandos de matar ou pkill.

A diferença entre essas duas ferramentas é que o primeiro é usado para encerrar um processo específico ou um grupo de processos, enquanto o último permite que você faça o mesmo com base no nome e em outros atributos.

Além disso, pkill vem com o pacote PGREP, que mostra os PIDs que serão afetados, caso seja usado. Por exemplo, antes de correr:

# pkill -u gacanepa 

Pode ser útil ver de relance que são os Pids de propriedade de Gacanepa:

# pgrep -l -u gacanepa 
Encontre PIDs de usuário

Por padrão, ambos matar e pkill Envie o Sigterm sinalizar para o processo. Como mencionamos acima, esse sinal pode ser ignorado (enquanto o processo termina sua execução ou para o bem); portanto, quando você precisar interromper um processo em execução com um motivo válido, precisará especificar o Sigkill sinal na linha de comando:

# Kill -9 Identificador # Mate um processo ou um grupo de processos # Kill -s Signal Identifier # idem # pkill -s Identificador de sinal # Mate um processo por nome ou outros atributos 

Conclusão

Neste artigo, explicamos o básico do processo de inicialização em um RHEL 7 sistema e analisou algumas das ferramentas disponíveis para ajudá-lo no gerenciamento de processos usando utilitários comuns e comandos específicos do Systemd.

Observe que esta lista não se destina a cobrir todos os sinos e assobios deste tópico; portanto, fique à vontade para adicionar suas próprias ferramentas e comandos preferidos a este artigo usando o formulário de comentário abaixo. Perguntas e outros comentários também são bem -vindos.