У меня есть этот сервис systemd:

$ sudo cat /etc/systemd/system/my_service123.service

    [Unit]
    Description=my_service123
    After=syslog.target

    [Service]
    ExecStart=./my_app --config main_cfg.conf
    Restart=on-abort
    WorkingDirectory=/home/user1/my_service_workspace
    SyslogIdentifier=my_service123
    User=user1

    [Install]
    WantedBy=multi-user.target

Когда я его запускаю:

Failed to start my_service123.service: Unit my_service123.service has a bad unit file setting.
See system logs and 'systemctl status my_service123.service' for details.

Но

$ sudo journalctl -u my_service123
No journal files were found.
-- No entries --

Что с этим не так?

$ sudo systemctl status my_service123
● my_service123.service - ton-node_01
     Loaded: bad-setting (Reason: Unit my_service123.service has a bad unit file setting.)
     Active: inactive (dead)
1
Jeff Schaller 4 Мар 2021 в 17:29

2 ответа

Лучший ответ

Взгляните на systemctl status my_service123.service. Вывод покажет что-то вроде

Mar 04 14:39:02 hostname systemd[1]: /etc/systemd/system/my_service123.service:5: Neither a valid executable name nor an absolute path: <path>

Попробуйте использовать абсолютный путь, тогда он должен работать.

1
bran 4 Мар 2021 в 16:42

Ваш блок содержит эту строку:

ExecStart=./my_app --config main_cfg.conf

На справочной странице systemd.service:

ExecStart=
Для каждой из указанных команд первый аргумент должен быть либо абсолютным путем к исполняемому файлу, либо простым имя файла без косой черты.

1
RalfFriedl 4 Мар 2021 в 16:49
Это не помогло
 – 
michika
4 Мар 2021 в 16:51
Вы пытались указать абсолютный путь вместо относительного пути?
 – 
RalfFriedl
4 Мар 2021 в 16:53