Actualmente estoy escribiendo algunos archivos de servicio systemd y me pregunto qué se permite para formatear correctamente su contenido para poder mejorar la legibilidad y demás. Es más o menos una pregunta sobre si puedo implementar algún estilo de código.
lo que tengoleer hasta ahorase trata de soporte para comentarios, que algunas opciones admiten espacios para, por ejemplo, una lista de valores y que \
se pueden usar para concatenar varias líneas. Eso es todo, como consejos generales. Lo que no leí es documentación exhaustiva sobre los pares clave-valor en sí, por ejemplo, si se permite poner espacios o tabulaciones antes/después de un nombre clave y antes de un valor para sangrar líneas y todo eso.
El siguiente es un ejemplo de lo que me pregunto:
[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
¿Hay algún documento disponible que describa lo que es posible con respecto al formato de las opciones? ¿O la falta de ellos es ya una señal de que lo que me gustaría tener no es posible en absoluto? De lo contrario seríadocumentado en la página de manual...
Respuesta1
A partir deabril 2016, no existe una definición formal de la sintaxis.
Creo que lo más cerca que estarás bien en eldocumentaciónes esta línea:
La sintaxis está inspirada enEspecificación de entrada de escritorio XDG
.desktop
archivos, que a su vez están inspirados en.ini
archivos de Microsoft Windows....
Tenga en cuenta que el uso de asignaciones múltiples al mismo valor hace que el archivo de unidad sea incompatible con los analizadores para el
.desktop
formato de archivo XDG.
Desde allí podemos ir alsección que describe el "formato básico del archivo", que afirma:
Entradas
Las entradas del archivo son
{key,value}
pares en el formato:
Key=Value
Se deben ignorar los espacios antes y después del signo igual; el
=
signo es el delimitador real.
A-Za-z0-9-
Sólo se pueden utilizar los caracteres en los nombres de las claves.Como es significativo el caso, las claves
Name
yNAME
no son equivalentes.Es posible que varias claves del mismo grupo no tengan el mismo nombre. Las claves de diferentes grupos pueden tener el mismo nombre.
Desafortunadamente,según algunos mensajes a la lista de correo, se desvía en algunos lugares... y salvo mirar el código fuente del analizador, no parece haber ninguna documentación explícita.
Puedes usarsystemd-analyze verify <file>
para validar los archivos de su unidad.https://github.com/systemd/systemd/issues/3677
Respuesta2
yo visitaría elsystemd
página de manual de su sistema. El formato parece estar especificado en la sección 5, por ejemplomira aquí. Puedes invocar esto, por ejemplo, mediante man 5 systemd
.