Tutorial de Introdução ao Systemd: Parte de Comandos

Tutorial de Introdução ao Systemd: Parte Prática

Tutorial de Introdução ao Systemd: Parte de Comandos

Autor: Ruan Yifeng

Data: 7 de março de 2016

Systemd é uma ferramenta do sistema Linux usada para iniciar. daemon tornou-se a configuração padrão na maioria das distribuições.

Este artigo apresenta seu uso básico, dividido em duas partes. Hoje, vamos apresentar seus principais comandos. Próximo artigo. Introduza como usar em situações reais. img

1. Origem

Na história, Inicialização do Linux sempre adotado init Processo.

O comando abaixo é usado para iniciar o serviço.

Esse método tem duas desvantagens.

Primeiro, o tempo de inicialização é longo. init Os processos são iniciados em série, e apenas quando o processo anterior é concluído, o próximo processo será iniciado.

Em segundo lugar, o script de inicialização é complexo. init O processo apenas executa o script de inicialização, sem se preocupar com outras coisas. O script precisa lidar com várias situações por conta própria, o que muitas vezes faz com que o script se torne muito longo.

II. Visão Geral do Systemd

O Systemd foi criado para resolver esses problemas. Seu objetivo de design é fornecer uma solução completa para a inicialização e gerenciamento do sistema.

De acordo com a convenção do Linux, as letras d É a abreviação de "daemon". O significado do nome Systemd é que ele deve proteger todo o sistema.

img

(A imagem acima é do autor do Systemd) Lennart Poettering

Usando o Systemd, não é mais necessário usar. init O systemd substituiu initd tornando-se o primeiro processo do sistema (PID igual a 1), outros processos são seus processos.

O comando acima verifica a versão do Systemd.

Systemd 的优点是功能强大,使用方便,缺点是体系庞大,非常复杂。事实上,现在还有很多人反对使用 Systemd,理由就是它过于复杂,与操作系统的其他部分强耦合,违反"keep simple, keep stupid"的 Filosofia Unix img

(A imagem acima é um diagrama da arquitetura do Systemd)

Três, Gestão do Sistema

Systemd não é um comando, mas sim um conjunto de comandos que envolve todos os aspectos da gestão do sistema.

3.1 systemctl

systemctl É o comando principal do Systemd, utilizado para gerenciar o sistema.

3.2 systemd-analyze

systemd-analyze O comando é usado para verificar o tempo de inicialização.

3.3 hostnamectl

hostnamectl O comando é usado para visualizar as informações do host atual.

3.4 localectl

localectl O comando é usado para verificar as configurações de localização.

3.5 timedatectl

timedatectl O comando é usado para verificar a configuração do fuso horário atual.

3.6 loginctl

loginctl O comando é usado para ver os usuários atualmente logados.

quatro, unidade

4.1 Significado

O Systemd pode gerenciar todos os recursos do sistema. Diferentes recursos são coletivamente chamados de Unidades.

A unidade é dividida em 12 tipos.

  • Unidade de serviço: Serviço do sistema
  • Unidade alvo: um grupo composto por várias unidades.
  • Unidade do Dispositivo: Hardware
  • Mount Unit: ponto de montagem do sistema de arquivos
  • Unidade de Automontagem: ponto de montagem automático
  • Unidade de Caminho: arquivo ou caminho
  • Escopo da Unidade: Processo externo não iniciado pelo Systemd.
  • Slice Unit: Grupo de Processos
  • Snapshot Unit: Snapshot do Systemd, que permite reverter para um determinado snapshot.
  • Socket Unit: socket de comunicação entre processos
  • Unidade de troca: arquivo de troca
  • Unidade de Temporizador: Timer

systemctl list-units O comando pode ver todas as Unidades do sistema atual.

Estado da Unidade 4.2

systemctl status O comando é usado para verificar o estado do sistema e o estado de uma única unidade.

exceto status ordem, systemctl Também foram fornecidos três métodos simples para consultar o estado, principalmente para uso em instruções de verificação internas do script.

4.3 Gestão de Unidade

Para os usuários, os comandos mais utilizados para iniciar e parar Unidades (principalmente serviços) são os seguintes.

4.4 Dependências

Há uma relação de dependência entre as unidades: A depende de B, o que significa que o Systemd, ao iniciar A, também iniciará B.

systemctl list-dependencies Comando para listar todas as dependências de uma Unidade.

Na saída do comando acima, algumas dependências são do tipo Target (conforme descrito abaixo) e, por padrão, não serão exibidas. Para expandir o Target, é necessário usar --all Parâmetro.

Cinco, o arquivo de configuração da Unidade.

5.1 Visão Geral

Cada Unit tem um arquivo de configuração que informa ao Systemd como iniciar essa Unit.

O diretório padrão do systemd /etc/systemd/system/ Ler o arquivo de configuração. No entanto, a maioria dos arquivos armazenados nele são links simbólicos que apontam para diretórios. /usr/lib/systemd/system/ O verdadeiro arquivo de configuração está armazenado naquele diretório.

systemctl enable O comando é usado para estabelecer uma relação de link simbólico entre os dois diretórios acima.

Se o arquivo de configuração estiver configurado para iniciar automaticamente na inicialização, systemctl enable O comando equivale a ativar a inicialização automática.

correspondentemente, systemctl disable O comando é usado para revogar a relação de link simbólico entre dois diretórios, o que equivale a desativar a inicialização automática.

A extensão do arquivo de configuração é o tipo dessa Unidade, como por exemplo. sshd.socket Se omitido, o sufixo padrão do Systemd é .service então sshd pode ser entendido como sshd.service

5.2 Estado do arquivo de configuração

systemctl list-unit-files O comando é usado para listar todos os arquivos de configuração.

Este comando irá gerar uma lista.

Esta lista mostra o status de cada perfil, totalizando quatro tipos.

  • habilitado: link de inicialização estabelecido
  • desativado: nenhum link de inicialização foi criado
  • static: Este arquivo de configuração não existe. [Install] Parte (não executável), apenas pode ser utilizada como dependência de outros arquivos de configuração.
  • masked: Este arquivo de configuração está proibido de criar links de inicialização.

Atenção, não é possível determinar a partir do estado do arquivo de configuração se a Unidade está em execução. Isso deve ser realizado conforme mencionado anteriormente. systemctl status Comando.

Uma vez que o arquivo de configuração é modificado, é necessário fazer com que o SystemD recarregue o arquivo de configuração e, em seguida, reiniciar, caso contrário, a modificação não terá efeito.

5.3 Formato do arquivo de configuração

O arquivo de configuração é um arquivo de texto comum que pode ser aberto com um editor de texto.

systemctl cat O comando pode visualizar o conteúdo do arquivo de configuração.

A partir da saída acima, podemos ver que o arquivo de configuração é dividido em vários blocos. A primeira linha de cada bloco é identificada por um nome entre colchetes, como [Unit] Atenção, os nomes dos blocos e os nomes dos campos no arquivo de configuração são sensíveis a maiúsculas e minúsculas.

Dentro de cada bloco, existem pares de chave-valor conectados por sinais de igual.

5.4 Blocos de configuração do arquivo

[Unit] O bloco de configuração geralmente é o primeiro bloco do arquivo de configuração, usado para definir os metadados da Unidade e as relações com outras Unidades. Seus principais campos são os seguintes.

  • Dsecription Descrição breve
  • Documentation Endereço do documento
  • Requires O Unit atual depende de outros Units; se eles não estiverem em execução, o Unit atual falhará ao iniciar.
  • Wants : Outras Unidades que trabalham em conjunto com a Unidade atual, se não estiverem em execução, a Unidade atual não falhará ao iniciar.
  • BindsTo e Requires Semelhante, se a Unidade especificada sair, fará com que a Unidade atual pare de funcionar.
  • Before Se a Unidade especificada por esse campo também precisar ser iniciada, ela deve ser iniciada após a Unidade atual.
  • After Se a Unidade especificada por este campo também deve ser iniciada, ela deve ser iniciada antes da Unidade atual.
  • Conflicts A Unidade especificada aqui não pode ser executada ao mesmo tempo que a Unidade atual.
  • Condition... As condições que a Unidade deve atender para funcionar atualmente, caso contrário, não funcionará.
  • Assert... As condições que a Unidade deve atender para funcionar atualmente, caso contrário, ocorrerá uma falha na inicialização.

[Install] Normalmente é o último bloco do arquivo de configuração, usado para definir como iniciar e se deve iniciar na inicialização do sistema. Seus principais campos são os seguintes.

  • WantedBy O seu valor é um ou mais Targets, e o link simbólico será colocado quando a Unidade estiver ativada (enable). /etc/systemd/system Embaixo do diretório, com o nome do alvo + .wants em subdiretórios formados por sufixos
  • RequiredBy Seu valor é um ou mais Targets, e quando a Unidade atual está ativada, o link simbólico será colocado. /etc/systemd/system Embaixo do diretório, com o nome do alvo + .required em subdiretórios formados por sufixos
  • Alias : Alias disponível para iniciar a Unidade atual.
  • Also Quando a Unidade atual está ativada (habilitada), outras Unidades que serão ativadas simultaneamente.

[Service] O bloco de configuração usado para o Service é exclusivo para unidades do tipo Service. Seus principais campos são os seguintes.

  • Type Define o comportamento do processo na inicialização. Ele possui os seguintes valores.
  • Type=simple Valor padrão, executar ExecStart Comando especificado, iniciar o processo principal.
  • Type=forking : Criar um processo filho a partir do processo pai usando a forma fork, e após a criação, o processo pai sairá imediatamente.
  • Type=oneshot Processo de uma única vez, o Systemd aguardará a saída do serviço atual antes de continuar a execução.
  • Type=dbus O serviço atual é iniciado através do D-Bus.
  • Type=notify O serviço atual foi iniciado com sucesso e será notificado. Systemd Continue a executar.
  • Type=idle Se houver outras tarefas concluídas, o serviço atual só será executado então.
  • ExecStart Comando para iniciar o serviço atual.
  • ExecStartPre Comandos a serem executados antes de iniciar o serviço atual.
  • ExecStartPost Comando executado após iniciar o serviço atual.
  • ExecReload Comando executado ao reiniciar o serviço atual.
  • ExecStop Comando executado ao parar o serviço atual.
  • ExecStopPost : Comando a ser executado após a interrupção do serviço
  • RestartSec Número de segundos para reiniciar o serviço atual automaticamente.
  • Restart Definir em quais situações o Systemd reiniciará automaticamente o serviço atual, os valores possíveis incluem: always (Sempre reiniciando) on-success on-failure on-abnormal on-abort on-watchdog
  • TimeoutSec Definir o número de segundos que o Systemd espera antes de parar o serviço atual.
  • Environment Definir variáveis de ambiente

Para a lista completa de campos de configuração do arquivo Unit, consulte. Documentação oficial

Seis, Alvo

Ao iniciar o computador, é necessário ativar uma grande quantidade de unidades (Unit). Se a cada inicialização for necessário especificar quais unidades são necessárias, isso se torna claramente muito inconveniente. A solução do Systemd é o Target.

简单说,Target 就是一个 Unit 组,包含许多相关的 Unit 。启动某个 Target 的时候,Systemd 就会启动里面所有的 Unit。从这个意义上说,Target这个概念类似于"状态点",启动某个 Target 就好比启动到某种状态。

tradicional init No modo de inicialização, há o conceito de RunLevel, que tem uma função semelhante à de Target. A diferença é que RunLevel é mutuamente exclusivo, não é possível iniciar múltiplos RunLevels ao mesmo tempo, enquanto múltiplos Targets podem ser iniciados simultaneamente.

A relação de correspondência entre o Target e o RunLevel tradicional é a seguinte.

Ele com init As principais diferenças entre os processos são as seguintes.

(1) Nível de Execução padrão (Em /etc/inittab As configurações de arquivo) agora foram substituídas pelo Target padrão, a localização é /etc/systemd/system/default.target geralmente simboliza um link para graphical.target (interface gráfica) ou multi-user.target (Múltiplos usuários na linha de comando).

Localização do script de inicialização antes era /etc/init.d Diretório, links simbólicos para diferentes diretórios de RunLevel (por exemplo, /etc/rc3.d /etc/rc5.d agora está armazenado em /lib/systemd/system e /etc/systemd/system Índice.

(3) Localização do arquivo de configuração antes init O arquivo de configuração do processo é /etc/inittab os arquivos de configuração dos diversos serviços estão armazenados em /etc/sysconfig Índice. Os arquivos de configuração atuais estão principalmente armazenados em /lib/systemd Índice, em /etc/systemd As alterações no diretório podem substituir as configurações originais.

Sete, Gestão de Registros

O Systemd gerencia de forma unificada os logs de inicialização de todas as Unidades. A vantagem disso é que você pode usar apenas journalctl Um comando para visualizar todos os logs (logs do kernel e logs de aplicativos). O arquivo de configuração dos logs é /etc/systemd/journald.conf

journalctl Poderoso, com muitas aplicações.

(Fim)

Informações do documento

  • Declaração de direitos autorais: Reprodução livre - Não comercial - Não derivado - Manter atribuição Licença Creative Commons 3.0 )
  • Data de publicação: 7 de março de 2016

Você usou recentemente:

Coleção Menu QQ