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
.desktop
arquivos, que por sua vez são inspirados nos.ini
arquivos 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
.desktop
formato 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
Name
eNAME
nã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 systemd
pá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
.