Le script de l'unité Systemd qui doit imprimer un message sur le terminal ne fonctionne pas

J'ai un server CentOS7 exécuté nommé-chroot. Le problème est nommé et named-chroot sont des services système séparés dans CentOS7, et j'ai à la fois un système stable et une memory courte. Les mois se produisent entre tout besoin de maintenance BIND. Quand j'ai le travail BIND à faire, j'oublie toujours de taper

systemctl restart named-chroot 

et tapez plutôt

 systemctl restart named 

Si je me trompe, il n'y a aucun avertissement que je commence le service incorrect.

J'aimerais utiliser les configurations système pour éditer le service nommé pour me callbacker que j'ai fait une erreur. C'est à ce moment-là que j'ai dépassé le service standard nommé: j'utilise

 systemctl edit named 

et mettez le suivant:

 [Unit] Description=You want named-chroot Wants= Before= After= [Service] Type=simple EnvironmentFile= Environment= ExecStartPre= ExecStart= ExecStart=/bin/bash -c "/usr/bin/echo 'No, you want named-chroot'" ExecReload= ExecReload=/bin/bash -c "/usr/bin/echo 'No, you want named-chroot'" ExecStop= ExecStop=/bin/bash -c "/usr/bin/echo 'No, you want named-chroot'" StandardOutput=journal+console PrivateTmp=false 

C'est aussi loin que j'ai eu. Les résultats des commands echo seront visibles dans le statut journalct et systemctl. Bien sûr, l'idéal serait de les imprimer sur le terminal, mais je ne l'ai pas compris. Cela ne fonctionne pas:

 StandardOutput=tty TTYPath=/dev/tty 

ni ses variantes; Je reçois des messages d'erreur qui me disent que / dev / tty n'est pas disponible dans bash!

Un autre problème: même avec le file ci-dessus, des commands comme celles-ci peuvent provoquer l'arrêt du chroot nommé sans indicateur ou avertissement visible:

 systemctl restart named systemctl start named 

Je ne peux pas comprendre pourquoi le démon nommé lancé par named-chroot devrait être affecté par mon script nommé révisé, lorsque j'ai remplacé chaque option de service nommé que j'ai pu find.

Si vous êtes expert en système, aidez-moi à faire fonctionner.

Pourquoi ne pas simplement masquer le service ? Cela l'empêche de démarrer ou d'être utilisé de quelque manière que ce soit.

 # systemctl mask named Created symlink /etc/systemd/system/named.service → /dev/null. # systemctl start named Failed to start named.service: Unit named.service is masked. 

Autre suggestion. Supprimez l'unité named et créez un alias.

Les unités peuvent être alias (ont un nom alternatif), en créant un lien symbolique du nouveau nom au nom existant dans l'un des paths de search de l'unité. Par exemple, systemd-networkd.service possède l'alias dbus-org.freedesktop.network1.service, créé lors de l'installation en tant que symbole /usr/lib/systemd/system/dbus-org.freedesktop.network1.service. En outre, les files unitaires peuvent spécifier des alias via la directive Alias ​​= dans la section [Installer]; ces alias ne sont efficaces que lorsque l'unité est activée. Lorsque l'unité est activée, des liens symboliques seront créés pour ces noms et supprimés lorsque l'unité est désactivée. Par exemple, reboot.target spécifie Alias ​​= ctrl-alt-del.target, donc, lorsqu'il est activé, il sera invoqué lorsque CTRL + ALT + DEL est pressé. Les noms d'alias peuvent être utilisés dans des commands telles que enable, disable, start, stop, status, … et dans les directives de dépendance d'unité Wants =, Nécessite =, Before =, After =, …, avec la limitation que les alias spécifiés par Alias ​​= sont uniquement efficace lorsque l'unité est activée. Les alias ne peuvent pas être utilisés avec la command préréglée.

https://www.freedesktop.org/software/systemd/man/systemd.unit.html