Возникли вопросы, каждый из которых требует отдельного изучения.
1) Грусть заключается в том, что файла
org.mate.SettingsDaemon.DateTimeMechanism.service действительно нет- он ищется в этих вот папках:
Shell
man systemd.unit
...
System Unit Search Path
/etc/systemd/system.control/*
/run/systemd/system.control/*
/run/systemd/transient/*
/run/systemd/generator.early/*
/etc/systemd/system/*
/etc/systemd/system.attached/*
/run/systemd/system/*
/run/systemd/system.attached/*
/run/systemd/generator/*
...
/lib/systemd/system/*
/run/systemd/generator.late/*
User Unit Search Path
~/.config/systemd/user.control/*
$XDG_RUNTIME_DIR/systemd/user.control/*
$XDG_RUNTIME_DIR/systemd/transient/*
$XDG_RUNTIME_DIR/systemd/generator.early/*
~/.config/systemd/user/*
$XDG_CONFIG_DIRS/systemd/user/*
/etc/systemd/user/*
$XDG_RUNTIME_DIR/systemd/user/*
/run/systemd/user/*
$XDG_RUNTIME_DIR/systemd/generator/*
$XDG_DATA_HOME/systemd/user/*
$XDG_DATA_DIRS/systemd/user/*
...
/usr/lib/systemd/user/*
$XDG_RUNTIME_DIR/systemd/generator.late/*
Но никак не в папке
Shell
/usr/share/dbus-1/system-services
Почему пути для поиска не совпадают с тем, где файл есть-
первый вопрос.
2)
org.mate.SettingsDaemon.DateTimeMechanism.service перенесём куда надо:
Shell
$ sudo cp /usr/share/dbus-1/system-services/org.mate.SettingsDaemon.DateTimeMechanism.service /etc/systemd/system/org.mate.SettingsDaemon.DateTimeMechanism.service
$
Снова программу запустим:
Shell
$ ./main
Error creating proxy: Error calling StartServiceByName for org.mate.SettingsDaemon.DateTimeMechanism: Failed to execute program org.mate.SettingsDaemon.DateTimeMechanism: Permission denied
bad!
$
Та же ошибка. А вот интересно, сервис
org.mate.SettingsDaemon.DateTimeMechanism.service можно запустить или нет?
Shell
$ sudo systemctl start org.mate.SettingsDaemon.DateTimeMechanism.service
Failed to start org.mate.SettingsDaemon.DateTimeMechanism.service: Unit org.mate.SettingsDaemon.DateTimeMechanism.service has a bad unit file setting.
See system logs and 'systemctl status org.mate.SettingsDaemon.DateTimeMechanism.service' for details.
$
Нельзя. А почему, смотрим:
Shell
$ sudo systemctl status org.mate.SettingsDaemon.DateTimeMechanism.service
○ org.mate.SettingsDaemon.DateTimeMechanism.service
Loaded: bad-setting (Reason: Unit org.mate.SettingsDaemon.DateTimeMechanism.service has a bad unit file setting.)
Active: inactive (dead)
мая 10 04:09:42 debian systemd[1]: /etc/systemd/system/org.mate.SettingsDaemon.DateTimeMechanism.service:1: Unknown section 'D-BUS Service'. Ignoring.
мая 10 04:09:42 debian systemd[1]: org.mate.SettingsDaemon.DateTimeMechanism.service: Service has no ExecStart=, ExecStop=, or SuccessAction=. Refusing.
мая 10 04:09:49 debian systemd[1]: /etc/systemd/system/org.mate.SettingsDaemon.DateTimeMechanism.service:1: Unknown section 'D-BUS Service'. Ignoring.
мая 10 04:09:49 debian systemd[1]: org.mate.SettingsDaemon.DateTimeMechanism.service: Service has no ExecStart=, ExecStop=, or SuccessAction=. Refusing.
мая 10 04:09:49 debian systemd[1]: /etc/systemd/system/org.mate.SettingsDaemon.DateTimeMechanism.service:1: Unknown section 'D-BUS Service'. Ignoring.
мая 10 04:10:06 debian systemd[1]: /etc/systemd/system/org.mate.SettingsDaemon.DateTimeMechanism.service:1: Unknown section 'D-BUS Service'. Ignoring.
мая 10 04:10:06 debian systemd[1]: org.mate.SettingsDaemon.DateTimeMechanism.service: Service has no ExecStart=, ExecStop=, or SuccessAction=. Refusing.
мая 10 04:10:09 debian systemd[1]: /etc/systemd/system/org.mate.SettingsDaemon.DateTimeMechanism.service:1: Unknown section 'D-BUS Service'. Ignoring.
мая 10 04:10:09 debian systemd[1]: org.mate.SettingsDaemon.DateTimeMechanism.service: Service has no ExecStart=, ExecStop=, or SuccessAction=. Refusing.
мая 10 04:10:09 debian systemd[1]: /etc/systemd/system/org.mate.SettingsDaemon.DateTimeMechanism.service:1: Unknown section 'D-BUS Service'. Ignoring.
$
Очень интересно. То есть оно не может распознать секцию
'D-BUS Service'- какого рожна, спрашивается? Вполне себе легальная секция:
Shell
$ man systemd.service
...
For bus-activatable services, do not include a [Install] section in the systemd service file, but use the SystemdService= option in the corresponding DBus service file, for example
(/usr/share/dbus-1/system-services/org.example.simple-dbus-service.service):
[D-BUS Service]
Name=org.example.simple-dbus-service
Exec=/usr/sbin/simple-dbus-service
User=root
SystemdService=simple-dbus-service.service
$
Кстати, файл
/etc/systemd/system/org.mate.SettingsDaemon.DateTimeMechanism.service:
Shell
$ cat /etc/systemd/system/org.mate.SettingsDaemon.DateTimeMechanism.service
[D-BUS Service]
Name=org.mate.SettingsDaemon.DateTimeMechanism
Exec=/usr/bin/msd-datetime-mechanism
User=root
$
Товарищи, это что за новости, то есть оно не умеет '
D-BUS Service'? Это ман лажовый или как? Это
второй вопрос.
3) А сервис-то запускать всё равно нужно. Переделаем файл
/etc/systemd/system/org.mate.SettingsDaemon.DateTimeMechanism.service
Shell
$ cat /etc/systemd/system/org.mate.SettingsDaemon.DateTimeMechanism.service
[Unit]
Description=Foo
[Service]
ExecStart=/usr/bin/msd-datetime-mechanism
[Install]
WantedBy=multi-user.target
$
Запустим сервис вручную, потом посмотрим его статус и вновь запустим нашу программу
Shell
$ sudo systemctl start org.mate.SettingsDaemon.DateTimeMechanism.service
$
$
$ sudo systemctl status org.mate.SettingsDaemon.DateTimeMechanism.service
● org.mate.SettingsDaemon.DateTimeMechanism.service - Foo
Loaded: loaded (/etc/systemd/system/org.mate.SettingsDaemon.DateTimeMechanism.service; disabled; preset: enabled)
Active: active (running) since Sat 2025-05-10 04:18:43 +05; 8s ago
Main PID: 28312 (msd-datetime-me)
Tasks: 3 (limit: 18819)
Memory: 3.0M
CPU: 18ms
CGroup: /system.slice/org.mate.SettingsDaemon.DateTimeMechanism.service
└─28312 /usr/bin/msd-datetime-mechanism
мая 10 04:18:43 debian systemd[1]: Started org.mate.SettingsDaemon.DateTimeMechanism.service - Foo.
$
$
$
$ ./main
good!
$
$
Чудо свершилось? Как бы не так:
Shell
$ sudo systemctl status org.mate.SettingsDaemon.DateTimeMechanism.service
× org.mate.SettingsDaemon.DateTimeMechanism.service - Foo
Loaded: loaded (/etc/systemd/system/org.mate.SettingsDaemon.DateTimeMechanism.service; disabled; preset: enabled)
Active: failed (Result: exit-code) since Sat 2025-05-10 04:19:13 +05; 1min 31s ago
Duration: 30.244s
Process: 28312 ExecStart=/usr/bin/msd-datetime-mechanism (code=exited, status=1/FAILURE)
Main PID: 28312 (code=exited, status=1/FAILURE)
CPU: 20ms
мая 10 04:18:43 debian systemd[1]: Started org.mate.SettingsDaemon.DateTimeMechanism.service - Foo.
мая 10 04:19:13 debian systemd[1]: org.mate.SettingsDaemon.DateTimeMechanism.service: Main process exited, code=exited, status=1/FAILURE
мая 10 04:19:13 debian systemd[1]: org.mate.SettingsDaemon.DateTimeMechanism.service: Failed with result 'exit-code'.
$
$
$ ./main
Error creating proxy: Error calling StartServiceByName for org.mate.SettingsDaemon.DateTimeMechanism: Failed to execute program org.mate.SettingsDaemon.DateTimeMechanism: Permission denied
bad!
$
$
Дело в том, что сервис
org.mate.SettingsDaemon.DateTimeMechanism.service существует примерно 20 секунд, а потом падает. Что же делать? Ну давайте попробуем, пусть он автоматически рестартует, если упадёт
Shell
$ cat /etc/systemd/system/org.mate.SettingsDaemon.DateTimeMechanism.service
[Unit]
Description=Foo
[Service]
ExecStart=/usr/bin/msd-datetime-mechanism
Restart=always
[Install]
WantedBy=multi-user.target
$
Теперь не падает (ну или по быстроляну перезапускается). Прокси создаётся:
Сервис
org.mate.SettingsDaemon.DateTimeMechanism.service добавляем в автозагрузку, ось перезагружаем, работаем. Прокси создаётся
Вопрос-то в другом- какого рожна падает сервис
org.mate.SettingsDaemon.DateTimeMechanism.service и, как бы нам так сделать, чтобы он перезагружался с наименьшими потерями? Он рестартует каждые 20 секунд (
Restart=always) но дело-то в том, что, быть может сервис не освобождает ресурсы и кто его знает чем это дело закончится. Может, зависнет ось и всё. Это
третий вопрос.
А
четвёртый вопрос: как так получается. что на одной оси (
B) есть такая проблема, а на другой (
A) такой проблемы нет, хотя файл
/etc/systemd/system/org.mate.SettingsDaemon.DateTimeMechanism.service на обеих изначально отсутствует?
Я просто читаю маны.