Я досі стикаюся з systemd і натрапив на щось. Це не стільки проблема, але я хотів би дізнатися більше про те, як це відбувається. Я не могла знайти посилання на це в іншому місці.
По-перше, я розумію, що користувацькі файли одиниць для служб повинні входити /etc/systemd/system. Однак було б добре для управління нашими серверами, якби файли одиниць могли бути розташовані в іншому місці.
У документації я побачив, що ви можете "зв’язати" файли одиниць так:
systemctl link /path/to/servicename.service
Це створить посилання на вищезгадане в /etc/systemd/system. Тепер ви можете запустити / зупинити цю послугу. На перший погляд, це здавалося нам хорошим способом управління нашими послугами.
Однак спроба ввімкнути такий «зв’язаний» одиничний файл призводить до невдачі:
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
Використовуючи той самий файл одиниці, але скопійований у, /etc/systemd/systemа не зв'язаний, ви отримуєте:
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.
З цього виходить, що неможливо увімкнути виклик пов'язаних файлів у модулі при запуску системи.
Якщо це так, у чому сенс функціонування "посилання"? У документах написано:
посилання FILENAME
Зв’яжіть файл одиниці, який не знаходиться у шляхах пошуку файлу одиниці, у шлях пошуку файлу файлу. Для цього потрібен абсолютний шлях до одиничного файлу. Ефект цього можна відмінити відключенням. Ефект цієї команди полягає в тому, що файл одиниці доступний для запуску та інших команд, хоча він не встановлений безпосередньо в шляху пошуку одиниць.
systemctl enableце теж зробитьsystemctl link, тому не потрібно набирати 2 команди ;-)