Gibt es eine Möglichkeit, Umgebungsvariablen in einer systemd-Service-Unit-Datei dynamisch zuzuweisen?
Wir haben einen Computer mit 4 GPUs und möchten mehrere Instanzen eines bestimmten Dienstes pro GPU hochfahren. Z.B:
- 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
- bis zum Erbrechen
Das 1: 1, 2: 1 usw. ist also effektiv das% i in der Service-Unit-Datei.
Damit der Dienst an eine bestimmte GPU gebunden werden kann, überprüft die ausführbare Dienstdatei eine bestimmte Umgebungsvariable, z.
USE_GPU=4
Gibt es eine Möglichkeit, wie ich% i in die Service Unit-Datei aufnehmen und sie durch eine (Shell-) Funktion ausführen kann, um die GPU-Nummer abzuleiten, und dann die Umgebungsvariable USE_GPU entsprechend festlegen kann?
Am wichtigsten ist, dass ich nicht mühsam mehrere /etc/systemd/system/gpu_service@x:y.service/local.conf
Dateien schreiben muss , nur um mehr Instanzen aufzubauen.