[Tutorial] Conhecendo um pouco o systemd (26/08/2019) - texto consertado 30/08 - e adicionado informação

Oi pessoal,

Depois adiciono mais informação.

Informação
[en]systemd - ArchWiki
[en]systemd.index
[en]systemd

No systemd 197 foi adicionado suporte nativo para um número de diferentes políticas de nomeação adequada no systemd/udevd e tem um esquema similar ao nome de dispositivos bios por padrão (mas no geral mais poderoso, e mais perto dos esquenas internos do kernel de identificação de dispositivo). Os diferentes esquemas de nomeação para interfaces de rede que agora são suportados nativamente pelo udev:
* Names incorporating Firmware/BIOS provided index numbers for on-board devices (example: eno1)
* Names incorporating Firmware/BIOS provided PCI Express hotplug slot index numbers (example: ens1)
* Names incorporating physical/geographical location of the connector of the hardware (example: enp2s0)
* Names incorporating the interfaces’s MAC address(example: enx78e7d1ea46da)
* Classic, unpredictable kernel-native ethX naming (example: eth0)

Mostra o status do sistema em uso:
systemctl status

systemd/user
Aqui você pode ver o que é monitorado pelo sistema e pelo usuário. Para ver isso:
systemd-cgls /system.slice
systemd-cgls /user.slice
systemd-cgls

Comandos:
Irei adicionar algumas opções de comandos, mas recomendo ver a ajuda e o manual.

systemctl

Mostra as units carregadas e ativas
systemctl ou systemctl list-units

Mostra todas as units (masked,failed,dead,ative,inactive)
systemctl -a

A opção -t serve para filtrar o tipo de unit (socket,mount,service,automount…) e o estado da unit ao carregar(loaded,masked,not-found)
systemctl -t service
systemctl -a -t masked
systemctl -a -t not-found

Para verificar as units que falharam ao iniciar
systemctl --failed

Ver o nome completo da unit
systemctl --full

Sem legenda e sem indicador (paginar)
systemctl --no-legend
systemctl --no-pager
systemctl -a -t masked --no-legend --no-pager

Para iniciar, parar, mascarar, o ever se a unit está habilitada,…
systemctl [start,stop,reload,restart,try-restart,reload-or-restart, status] nome-da-unit
systemctl [enable,disable,mask,unmask,is-enaled] nome-da-unit

Verifica por unit novas e modificadas. atualiza o systemd.
systemctl daemon-reload

Para ver as unit enabled, disabled, stats
systemctl -t service list-unit-files --state=enabled
systemctl -t service list-unit-files

Uma maneira simples é criar uma função no ~/.bashrc
Por exemplo:

listar-arquivos-unit(){
[[ “$1” == “s” && “$#” -lt 2 ]] && systemctl list-unit-files;
[[ “$1” == “u” && “$#” -lt 2 ]] && systemctl list-unit-files --user;
[[ “$1” == “se” && “$#” -lt 2 ]] && systemctl list-unit-files --state=enabled;
[[ “$1” == “sd” && “$#” -lt 2 ]] && systemctl list-unit-files --state=disabled;
[[ “$1” == “ss” && “$#” -lt 2 ]] && systemctl list-unit-files --state=static;
[[ “$1” == “ue” && “$#” -lt 2 ]] && systemctl list-unit-files --user --state=enabled;
[[ “$1” == “ud” && “$#” -lt 2 ]] && systemctl list-unit-files --user --state=disabled;
[[ “$1” == “us” && “$#” -lt 2 ]] && systemctl list-unit-files --user --state=static;
if [[ “$#” -eq 0 || “$1” != “s” && “$1” != “u” && “$1” != “se” && “$1” != “sd” && “$1” != “ss” && “$1” != “u” && “$1” != “ue” && “$1” != “ud” && “$1” != “us” ]]; then
cat << USOAJUDA
$@ não é uma opção válida.

ajuda: listar-arquivos-unit [opções]
s : Mostra os arquivos unit do sistema
u : Mostra os arquivos unit do usuário
se : Mostra os arquivos unit do sistema habilitados
sd : Mostra os arquivos unit do sistema desativados
ss : Mostra os arquivos unit do sistema estáticos
ue : Mostra os arquivos unit do usuário habilitados
ud : Mostra os arquivos unit do usuário desativados
us : Mostra os arquivos unit do usuário estáticos
USOAJUDA
fi
}

A unit pode estar: enabled, disabled , masked e static
Static- são as units que já são carregadas automaticamente e não aceita o comando disable.
O systemd já carrega automaticamente várias units, muitas não são necessárias ou o programa não está instalado. Neste caso podemos utilizar o comando mask para mascarar ao iniciar, assim o systemd não irá mais carregá-las.
ex.
Procurar por units não encontradas
systemctl -a -t not-found
Mascarar units
systemctl mask plymouth-quit-wait.service plymouth-start.service rc-local.service systemd-readahead-collect.service systemd-readahead-replay.service e etc…

systemd-analyze
systemd-analyze blame - mostra o tempo das units
systemd-analyze time - informa o tempo de carregamento
systemd-analyze plot > ~/imagem.svg - gera uma imagem
systemd-analyze critical-chain -mostra uma árvore da cadeia de unidades crítica de tempo
sudo systemd-analyze verify smbd.service -Verifique os arquivos da unidade quanto à exatidão

systemd-cat
Este comando serve para enviar uma saída de um outro comando para journalctl.
Útil se você tem um script e que que ele envie o status para o journal.

echo “Testando o systemd-cat” | systemd-cat

$ journalctl -n1
– Logs begin at (null), end at Qua, 2012-12-19 02:19:00 BRST. –
Dez 19 02:19:00 casahost [2639]: Testando o systemd-cat

systemd-cgtop
É parecido com o comando top.

systemd-delta
Busca por informações sobrescritas nas units. Muito útil para saber quais as units foram modificadas e o que foi modificado. Utiliza o diff.

systemd-detect-virt
Detecta ambiente virtual.

loginctl
Para ver informações da sessão do usuário
loginctl show-session $XDG_SESSION_ID
loginctl list-sessions
SESSION UID USER SEAT TTY
c1 1000 teste seat0 tty1
1 sessions listed.
loginctl session-status $XDG_SESSION_ID
ou
loginctl session-status c1

journalctl
Dica: você não está vendo mensagens de outros usuários e do sistema. Os usuários no grupo ‘systemd-journal’ podem ver todas as mensagens.
Adicione o seu usuário ao grupo systemd-journal
gpasswd -a seu_usuário systemd-journal

journalctl -b - informação do boot
journalctl -u=NOMEDAUNIT - informação de uma unit(service,mout,etc…)
journalctl -b -u cronie - verifica no boot informações do serviço cronie
journalctl -n4 - vê as 4 linhas mais recentes
journalctl -n ou journalctl -n10 ou journalctl -f - verifica as últimas 10 entradas
journalctl --since “00:00:16” -u cronie.service - vê a partir de um determinado horário
journalctl --since “20 min ago” - vinte minutos atrás
journalctl --since “2012-12-18 00:00:16” -u cronie.service - vê a partir de um determinado dia e horário
jounumbers (example: ens1)
journalctl -n -o cat - uma saída interessante. A opção “-o” é o modo de saida que pode ser : short, short-monotonic, verbose, export, json, json-pretty, json-sse, cat
journalctl _PID NÚMERODOPID - vê informação da unit atravês do pid

Gerenciamento de energia
O polkit é necessário para o gerenciamento de energia como um usuário não privilegiado. Se você estiver em uma sessão local do usuário systemd-logind e nenhuma outra sessão estiver ativa, os seguintes comandos funcionarão sem privilégios de root. Caso contrário (por exemplo, porque outro usuário está logado em um tty), o systemd solicitará automaticamente a senha root.

Desligue e reinicie o sistema:
systemctl reboot

Desliga o sistema:
systemctl poweroff

Suspenda o sistema:
systemctl suspend

Coloque o sistema em hibernação:
systemctl hibernate

Coloque o sistema no estado de suspensão híbrida (ou suspenda para ambos):
systemctl hybrid-sleep

Edição de units
Arquivos unit de substituição

Para substituir o arquivo uint /usr/lib/systemd/system/unit, crie o arquivo /etc/systemd/system/unit e reative a unit para atualizar os links simbólicos:

systemctl reenable unit

Como alternativa, execute:

systemctl edit --full unit

Isso abre o arquivo /etc/systemd/system/unit no seu editor (copiando a versão instalada se ainda não existir) e a recarrega automaticamente quando você terminar a edição.
Nota: As units de substituição continuarão sendo usadas, mesmo que o Pacman atualize as units originais no futuro. Esse método dificulta a manutenção do sistema e, portanto, a próxima abordagem é preferida.

Arquivos drop-in

Para criar unit drop-in /usr/lib/systemd/ system/unit, crie o diretório /etc/systemd/system/unit.d/ e coloque os arquivos .conf lá para substituir ou adicionar novas opções. O systemd analisará e aplicará esses arquivos na parte superior da unidade original.

A maneira mais fácil de fazer isso é executar:

systemctl edit unit

Isso abre o arquivo /etc/systemd/system/unit.d/override.conf no seu editor de texto (criando-o se necessário) e recarrega automaticamente a unit quando você terminar de editar.
Nota: Nem todas as chaves podem ser substituídas pelos arquivos drop-in. Por exemplo, para alterar Conflicts= é necessário um arquivo de substituição.
Reverter para a versão do fornecedor

Para reverter as alterações feitas em uma unidade usando systemctl edit, faça:

systemctl revert unit

8 curtidas

Mapeamento entre níveis de execução do SysV e destinos do systemd

SysV Runlevel systemd Target Notes
0 runlevel0.target, poweroff.target Para o sistema.
1, s, single runlevel1.target, rescue.target Modo de usuário único.
2, 4 runlevel2.target, runlevel4.target, multi-user.target Níveis de execução definidos pelo usuário / específicos do site. Por padrão, idêntico a 3.
3 runlevel3.target, multi-user.target Multiusuário, não gráfico. Os usuários geralmente podem fazer login através de vários consoles ou através da rede.
5 runlevel5.target, graphical.target Multiusuário, gráfico. Geralmente possui todos os serviços do nível de execução 3 mais um login gráfico.
6 runlevel6.target, reboot.target Reiniciar
emergency emergency.target Shell de emergência

Caso queira alterar entre as targets
Exemplos:
systemctl isolate graphical.target
systemctl isolate multi-user.target

Dica
Partição local - automount

Arquivo: /etc/fstab
No caso de uma partição grande, pode ser mais eficiente permitir que serviços que não dependem dela sejam iniciados enquanto é verificado pelo fsck. Isso pode ser alcançado adicionando as seguintes opções na entrada do /etc/fstab da partição:

noauto, x-systemd.automount

Exempo:
/dev/sda3 /home ext4 defaults,noatime,noauto,x-systemd.automount 0 2

Executará fsck e montará a partição somente quando for acessada pela primeira vez, e o kernel armazenará em buffer todo o acesso a arquivos até que esteja pronta. Este método pode ser relevante se houver, por exemplo, uma partição /home significativamente grande.

Sistema de arquivos remoto

O mesmo se aplica às montagens remotas do sistema de arquivos. Se você deseja que eles sejam montadas apenas após o acesso, será necessário usar os parâmetrosnoauto,x-systemd.automount. Além disso, você pode usar a opçãox-systemd.device-timeout= para especificar quanto tempo o systemd deve esperar para o sistema de arquivos aparecer. Além disso, a opção _netdev garante que o systemd entenda que a montagem depende da rede e faça o pedido depois que a rede estiver online.

Exemplo:
noauto,x-systemd.automount,x-systemd.device-timeout=30,_netdev

2 curtidas

O q é SysV???

Era o sistema anterior ao systemd, com o nome SysVinit.

Um comparativo
https://www.ibm.com/developerworks/community/blogs/752a690f-8e93-4948-b7a3-c060117e8665/entry/comparativo_upstart_sysvinit_systemd_openrc?lang=en

1 curtida

Sobre systemd eu gosto desse textinho que é bem simples e didático (ah, é em inglês. Mas para quem tem dificuldade, dá para ir usando o google tradutor que vai tranquilo):

An Introduction to systemd

Vou ver se nesta semana atualizo o tópico

1 curtida