¿Hay alguna manera de asignar dinámicamente variables de entorno en un archivo de unidad de servicio systemd?
Tenemos una máquina que tiene 4 GPU, y queremos activar múltiples instancias de un determinado servicio por GPU. P.ej:
- gpu_service @ 1: 1.service
- gpu_service @ 2: 1.service
- gpu_service @ 3: 1.service
- gpu_service @ 4: 1.service
- gpu_service @ 1: 2.service
- gpu_service @ 2: 2.service
- gpu_service @ 3: 2.service
- gpu_service @ 4: 2.service
- hasta el hastío
Entonces, 1: 1, 2: 1, etc. son efectivamente el% i en el archivo de la unidad de servicio.
Para que el servicio se una a una GPU particular, el ejecutable del servicio verifica una determinada variable de entorno, por ejemplo:
USE_GPU=4
¿Hay alguna manera de tomar% i dentro del archivo de la unidad de servicio y ejecutarlo a través de alguna función (shell) para obtener el número de GPU, y luego puedo configurar la variable de entorno USE_GPU en consecuencia?
Lo que es más importante, no quiero la molestia de escribir varios /etc/systemd/system/gpu_service@x:y.service/local.conf
archivos solo para poder activar más instancias.
bash -c
para iniciar un programa desde el archivo de la unidad? Llamarexec
? Esto es como usar una carretilla elevadora encima de una carretilla elevadora (tal vez con otra carretilla elevadora en la parte superior) porque la primera carretilla elevadora tiene problemas en realidad.