Смущен, почему служба systemd не запускается при загрузке

Я написал несколько простых деmonoв и хочу, чтобы моя система автоматически запускала их при загрузке. Моему демону нужен демон Bluetooth для запуска и сокет UNIX для вывода данных. Что отличается от того, что можно прочитать в большинстве руководств и руководств по systemd, так это то, что с точки зрения демона я хочу, чтобы systemd создавал сокет для записи, а не для прослушивания. Когда я запускаю службу и сокет вручную, все работает, однако после выполнения systemctl enable foo.service мой демон не запускается после перезагрузки. Основываясь на man systemd.unit , man systemd.target и некотором man systemd.unit , я создал 3 файла модуля.

В связи с тем, что, по-видимому, существует как минимум несколько способов описания зависимостей для systemd, я не знаю, что не так, почему мой сервис не запускается автоматически после перезагрузки. Должен ли я создать файл foo.target или он не нужен в таком простом сценарии? Я также не уверен, должен ли WantedBy в foo.socket быть установлен в foo.target или, более того, в sockets.target.

Ниже приведен fragment кода из моих трех файлов. Я был бы очень признателен, если бы кто-нибудь взглянул и дал мне несколько советов.

 ############ foo.service file ############################################# [Unit] Description=Foo Service Requires=foo.socket [Service] Type=simple ExecStart=/path/to/start [Install] WantedBy=foo.target ########################################################################### ############ foo.socket file ############################################## [Unit] Description=Foo socket for write, not for listen [Socket] ListenDatagram=/run/foo/foo.sk [Install] WantedBy=foo.target ########################################################################### ############ foo.target file ############################################## [Unit] Description=Foo target Requires=bluetooth.target ########################################################################### 

Вы дали команду systemd запускать службу и сокет при запуске цели, но вы не указали, что цель не должна запускаться при загрузке. В нем нет раздела [Install] , поэтому ваш сервис не загружается при загрузке.

objective не обязательна для этого простого случая. Переместите пункт Requires= от вашей цели к вашей службе.

Для WantedBy= в вашем сервисе попробуйте использовать multi-user.target , или, если вашему сервису нужна сеть, network-online.target .