Puis-je utiliser un lien symbolique en tant que service de systemd?

Par exemple, j'ai un service nommé mysshd.service sous /usr/lib/systemd/system/ directory. Puis-je créer un lien symbolique tel que:

 ln -s /usr/lib/systemd/system/mysshd.service /usr/lib/systemd/system/fool.service 

de sorte que toute opération que je fais avec fool.service sera répercutée sur mysshd.service ( systemctl enable/disable start/stop fool.servce )?

Mon but est de replace le service sshd natif par un lien symbolique de mon propre service sshd.

Pour autant que je sache, systemd ne s'en occupera pas particulièrement bien. Si je comprends bien, vous voulez passer outre le comportement de sshd.service , n'est-ce pas?

Heureusement pour vous, systemd est conçu pour ce genre de chose. Mettez simplement votre définition de service dans /etc/systemd/system/ssh.service , exécutez systemctl daemon-reload pour recharger les files d'unité, et systemd utilisera automatiquement cette configuration à la place du système ssh.service .

Vous voulez systemctl enable mysshd.service travail systemctl enable mysshd.service ? Pas de problème. Dans la section [Install] de votre file unité, ajoutez une ligne qui indique Alias=mysshd.service . Ensuite, exécutez systemctl reenable ssh.service pour que systemd corrige les liens symboliques de l'unité, et vous êtes en or.

Maintenant, vous n'avez pas donné de détails sur ce que mysshd.service est censé faire. Si c'est complètement différent du ssh.service normal, super! Utilisez la méthode ci-dessus. Cependant, si vous voulez simplement changer une petite chose, vous utilisez la mauvaise approche. systemd vous permet de créer des "fragments" de files unitaires qui seront appliqués sur les files unitaires normaux. Cela vous permet d'append ou de replace des directives individuelles tout en permettant au rest du file d'unité de recevoir des mises à jour du gestionnaire de packages. Pour ce faire, il suffit de créer /etc/systemd/system/ssh.d/my-custom-config.conf (vous pouvez changer my-custom-config.conf comme vous voulez, et vous pouvez également avoir plusieurs files de rlocation) . Dans ce file, placez les directives que vous voulez modifier ou append au service ssh.service . habituel. Vous pouvez même append les directives Alias= , pour que systemctl start mysshd.service ! N'oubliez pas d'exécuter systemctl daemon-reload après avoir terminé (et, si vous avez utilisé Alias= , systemctl reenable ssh.service ).

En aparté, ne changez jamais les files d'unité systemd dans /usr/lib/systemd . Déjà! La norme de hiérarchie du système de files exige que /usr soit traité en lecture seule. En pratique, cela signifie que le gestionnaire de packages gère /usr (sauf pour /usr/local ) et que vous ne touchez pas à ce que le gestionnaire de packages gère – en particulier parce que tout ce que vous changez sera probablement écrasé. Au lieu de cela, mettez vos trucs dans un endroit comme /etc

Symlinks n'avait pas l'habitude d'être possible . Mais ils sont à ce jour.