Códigos de saída em um script de inicialização para diferentes falhas

0

Estou executando uma instalação do Arch Linux e tenho um serviço systemd que executa /etc/rc.local . Em rc.local , tenho vários comandos para executar coisas que não consegui encontrar uma solução adequada, como executar dmesg -D ou algo que criaria automaticamente pontos de montagem em uma pasta temporária como no macOS com /Volumes .

Para cada comando no meu script rc.local , tenho o teste de script para uma falha e, em seguida, saio com um número correspondente à linha do comando. Assim, um trecho do arquivo (ajustado para manter minha formatação em mente) ficaria assim:

#!/bin/bash

dmesg -D || exit 1
i=2
for name in usb sd
do
    mkdir -p /mnt/${name} || exit ${i}
    i=$((i+1))
done
sysctl -w kernel.kptr_restrict=2 || exit 4

exit 0

Isso é um pouco desajeitado e tenho a impressão de que os códigos de saída devem ser limitados em sua atribuição de um script, mas essa é a única maneira de saber como verificar o motivo do meu serviço do systemd rc-local.service failing é porque systemctl status rc-local.service imprimirá o valor de saída. Existe alguma outra maneira de codificar rc.local tal que systemd / rc-local.service receberá informações sobre por que rc.local falha, como passar uma string para ela ou algo assim? Então eu posso ver esta string aparecer talvez assim quando eu digito systemctl status rc-local.service :

Error reason: Failed to set kernel.kptr_restrict
    
por Melab 15.08.2017 / 19:59

1 resposta

1

Falhas (códigos de saída diferentes de zero) devem fazer com que o comando (ou o shell, caso o comando falhe) imprima um erro.

O systemd irá gravar mensagens de erro como esta no log do sistema. E o bom sobre systemctl status é que ele exibe as linhas de registro mais recentes do serviço.

link

EDIT: A leitura do log do sistema só é possível quando systemctl status é executado como raiz ( sudo ) ou se você é um membro do grupo adm ou systemd-journal .

    
por 15.08.2017 / 20:05