У меня есть сервер CentOS7, на котором запущен named-chroot. Проблема с именем и именем-chroot - это отдельные системные службы в CentOS7, и у меня есть как стабильная система, так и короткая память. Между необходимостью обслуживания BIND проходят месяцы. Когда у меня есть работа с BIND, я всегда забываю набирать
systemctl restart named-chroot
и вместо этого введите
systemctl restart named
Если я ошибаюсь, нет предупреждения о том, что я запускаю неправильную службу.
Я хотел бы использовать конфигурации systemd для редактирования названной службы, чтобы напомнить мне, что я сделал ошибку. Это все, что мне удалось переопределить стандартную именованную службу: я использую
systemctl edit named
и вставьте следующее:
[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
Это насколько я понял. Результаты эхо-команд будут видны в статусах journalctl и systemctl. Конечно, в идеале было бы напечатать их на терминале, но я этого не понял. Это не работает:
StandardOutput=tty
TTYPath=/dev/tty
ни его варианты; Я получаю сообщения об ошибках, которые говорят мне, что / dev / tty недоступен в bash!
Другая проблема: даже с указанным выше файлом команды, подобные этой, могут вызвать остановку named-chroot без видимого индикатора или предупреждения:
systemctl restart named
systemctl start named
Я не могу понять, почему на именованный демон, инициированный named-chroot, должен воздействовать мой измененный именованный скрипт, когда я переопределил каждую опцию именованной службы, которую смог найти.
Если вы эксперт по systemd, пожалуйста, помогите мне сделать эту работу.
Почему бы тебе просто не замаскировать службу? Это предотвращает его запуск или использование каким-либо образом.
# 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.
Альтернативное предложение. Удалить named
unit и создайте псевдоним.
Юнитам можно присвоить псевдоним (иметь альтернативное имя), создав символическую ссылку от нового имени к существующему имени в одном из путей поиска юнита. Например, systemd-networkd.service имеет псевдоним dbus-org.freedesktop.network1.service, созданный во время установки как символическая ссылка /usr/lib/systemd/system/dbus-org.freedesktop.network1.service. Кроме того, файлы модулей могут указывать псевдонимы с помощью директивы Alias = в разделе [Install]; эти псевдонимы эффективны только тогда, когда устройство включено. Когда модуль включен, для этих имен будут созданы символические ссылки, которые будут удалены, когда модуль отключен. Например, reboot.target указывает Alias = ctrl-alt-del.target, поэтому, когда он включен, он будет вызываться при каждом нажатии CTRL + ALT + DEL. Имена псевдонимов могут использоваться в таких командах, как enable, disable, start, stop, status,…, а также в директивах зависимостей модулей Wants =, Requires =, Before =, After =,…, с ограничением, что псевдонимы, указанные с помощью Alias =, являются только эффективен, когда блок включен. Псевдонимы нельзя использовать с предустановленной командой.
https://www.freedesktop.org/software/systemd/man/systemd.unit.html