Qual formatação é permitida para linhas de opção do systemd em geral?

Qual formatação é permitida para linhas de opção do systemd em geral?

Atualmente, estou escrevendo alguns arquivos de serviço do systemd e me pergunto o que é permitido formatar adequadamente seu conteúdo para que eu possa melhorar a legibilidade e coisas assim para mim. É basicamente uma questão de saber se sou capaz de implementar algum estilo de código.

O que eu tenholeia até agoratrata-se de suporte para comentários, que algumas opções suportam espaços para, por exemplo, uma lista de valores e que \podem ser usadas para concatenar múltiplas linhas. Isso é basicamente um conselho geral. O que eu não li foi a documentação completa sobre os próprios pares de valores-chave, por exemplo, se é permitido colocar espaços ou tabulações antes/depois de um nome de chave e antes de um valor para recuar linhas e tudo mais.

A seguir está um exemplo do que estou me perguntando:

[Unit]
Description=some pretty long description \
            spanning multiple lines
RequiresMountsFor=/tmp

vs.

[Unit]
Description       = some pretty long description \
                    spanning multiple lines
RequiresMountsFor = /tmp

vs.

[Unit]
    Description       = some pretty long description \
                        spanning multiple lines
    RequiresMountsFor = /tmp

Existe algum documento disponível descrevendo o que é possível em relação à formatação de opções? Ou a falta disso já é um sinal de que o que eu gostaria de ter não é possível? Caso contrário, seriadocumentado na página de manual...

Responder1

A partir deAbril de 2016, não há definição formal da sintaxe.


Eu acho que o mais próximo que você vai ficar bem nodocumentaçãoé esta linha:

A sintaxe é inspirada emEspecificação de entrada do XDG Desktop .desktoparquivos, que por sua vez são inspirados nos .iniarquivos do Microsoft Windows.

...

Observe que o uso de múltiplas atribuições para o mesmo valor torna o arquivo de unidade incompatível com analisadores para o .desktopformato de arquivo XDG.

De lá, podemos ir para oseção que descreve o "formato básico do arquivo", que afirma:

Entradas

As entradas no arquivo são {key,value}pares no formato:

Key=Value

O espaço antes e depois do sinal de igual deve ser ignorado; o =sinal é o delimitador real.

Somente os caracteres A-Za-z0-9-podem ser usados ​​em nomes de teclas.

Como o caso é significativo, as chaves Namee NAMEnão são equivalentes.

Várias chaves no mesmo grupo podem não ter o mesmo nome. Chaves em grupos diferentes podem ter o mesmo nome.

Infelizmente,de acordo com algumas mensagens para a lista de discussão, ele se desvia em alguns lugares... e, além de olhar o código-fonte do analisador, não parece haver nenhuma documentação explícita.


Você pode usar systemd-analyze verify <file>para validar seus arquivos de unidade.https://github.com/systemd/systemd/issues/3677

Responder2

Eu visitaria a systemdpágina de manual do seu sistema. O formato parece ser especificado na seção 5, por exemploVeja aqui. Você pode invocar isso, por exemplo, por man 5 systemd.

informação relacionada