У меня есть сервер с зашифрованной файловой системой, которую необходимо вручную подключить после перезагрузки. Некоторые службы требуют, чтобы зашифрованная файловая система была смонтирована для чтения файлов конфигурации / данных и т. Д.
Есть ли способ сказать systemd
что всякий раз, когда служба X запускается (даже вручную), службы Y и X должны запускаться автоматически?
Я знаю, что могу написать это с помощью сценария «запустить все мои вещи», который запускает службу зашифрованной файловой системы (которая на самом деле не является службой; просто сложная команда монтирования), а затем запускает все остальное, что мне нужно, но мне было интересно, если это это то, с чем systemd может справиться самостоятельно.
Итак, если мы назовем вашу службу X, а другую службу, которая должна запускаться автоматически (файловая система), служба Y, следующее должно выполнить работу:
shell# vim /usr/lib/systemd/serviceX.service
#Inside the unit file of service x add the following in the [unit] section:
[Unit]
Requires=serviceY.service
#For multiple services
[Unit]
Requires=serviceY.services serviceZ.services
# Don't forget to relaod systemd
shell# systemctl daemon-reload
Теперь, если вы запустите службу x, служба y (файловая система) должна запуститься автоматически. Кроме того, если есть ошибка службы y, и она не может запустить службу x, она также не запустится. Примечание. Существуют и другие ключевые слова, такие как «после» или «хочет», которые менее строгие, чем «Требует». Но в вашем примере «Требует» должно быть правильным выбором.