Sto ancora prendendo confidenza con systemd e mi sono imbattuto in qualcosa. Non è tanto un problema, ma vorrei saperne di più su questo. Non ho trovato alcun riferimento a questo altrove.
Prima di tutto, capisco che i file di unità personalizzati per i servizi dovrebbero entrare /etc/systemd/system
. Tuttavia, sarebbe utile per la gestione dei nostri server se i file di unità potessero trovarsi altrove.
Nella documentazione, ho visto che è possibile "collegare" file di unità in questo modo:
systemctl link /path/to/servicename.service
Questo creerà un collegamento a quanto sopra in /etc/systemd/system
. Ora puoi avviare / interrompere questo servizio. In apparenza, questo ci è sembrato un buon modo per gestire i nostri servizi.
Tuttavia, il tentativo di abilitare tale file di unità "collegato" comporta un errore:
root@test1:/etc/systemd/system# systemctl link /root/myservice.service
Created symlink from /etc/systemd/system/myservice.service to /root/myservice.service.
root@test1:/etc/systemd/system# systemctl status myservice.service
* myservice.service - My Test Service
Loaded: loaded (/root/myservice.service; linked; vendor preset: enabled)
root@test1:/etc/systemd/system# systemctl enable myservice.service
Failed to execute operation: No such file or directory
Utilizzando lo stesso file di unità esatto, ma copiato in /etc/systemd/system
anziché collegato, si ottiene:
root@test1:/etc/systemd/system# cp -p /root/myservice.service .
root@test1:/etc/systemd/system# systemctl daemon-reload
root@test1:/etc/systemd/system# systemctl status myservice.service
* myservice.service - My Test Service
Loaded: loaded (/etc/systemd/system/myservice.service; disabled; vendor preset: enabled)
root@test1:/etc/systemd/system# systemctl enable myservice.service
Created symlink from /etc/systemd/system/multi-user.target.wants/myservice.service to /etc/systemd/system/myservice.service.
Da ciò, sembra che non sia possibile abilitare il collegamento in file di unità da chiamare all'avvio del sistema.
In tal caso, qual è il punto della funzionalità "link"? Dai documenti, dice:
link FILENAME
Collegare un file di unità che non si trova nei percorsi di ricerca del file di unità nel percorso di ricerca del file di unità. Ciò richiede un percorso assoluto per un file di unità. L'effetto di questo può essere annullato con disabilita. L'effetto di questo comando è che un file di unità è disponibile per l'avvio e altri comandi sebbene non sia installato direttamente nel percorso di ricerca dell'unità.
systemctl enable
farà anchesystemctl link
, quindi non è necessario digitare i 2 comandi ;-)