LINUX.ORG.RU
ФорумAdmin

Не могу запустить сервис systemd от имени себя (code=exited, status=127)

 


0

1

Всем привет. Какая-то странная фигня. Сделал примитивный сервис и пытаюсь его запустить, а в ответ получаю:

Job for test.service failed because the control process exited with error code.
See "systemctl status test.service" and "journalctl -xe" for details.

где написано следующее:
Jul 04 12:23:03 spider systemd[1]: Starting Мой тестовый сервис...
Jul 04 12:23:03 spider systemd[1]: test.service: Control process exited, code=exited status=127
Jul 04 12:23:03 spider systemd[1]: Failed to start Мой тестовый сервис.
Jul 04 12:23:03 spider systemd[1]: test.service: Unit entered failed state.
Jul 04 12:23:03 spider systemd[1]: test.service: Failed with result 'exit-code'.


Вот так выглядит сам сервси:
[Unit]
Description=Мой тестовый сервис
After=network.target

[Service]
Type=simple
User=spider
Group=spider
WorkingDirectory=/home/spider/src/test
ExecStartPre=/bin/echo "OPTS=$OPTS_COMMON">/tmp/run.log
ExecStart=/usr/bin/node test.js >/tmp/run.log 2>&1
Restart=no
RestartSec=10

[Install]
WantedBy=multi-user.target


Как-то так.
Всё бы ничего, но! Если убрать User/Group из сервиса, то всё запустится и будет работать. Но с ними не работает. Я сам как Юзер могу запускать сервис.

ExecStartPre добавлено для проверки, что вообще хоть что нить происходит или нет. И не происходит со следующей отпиской:
$ sudo systemctl status test.service
● test.service - Мой тестовый сервис
   Loaded: loaded (/lib/systemd/system/test.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Sun 2021-07-04 12:22:31 +06; 2s ago
  Process: 24128 ExecStartPre=/bin/echo OPTS=$OPTS_COMMON>/tmp/run.log (code=exited, status=127)
 Main PID: 21783 (code=exited, status=1/FAILURE)

Как так то?! Чего? 127 - это же Command not found? Чего он не нашёл? echo?
spider@spider ~/src/test $ whereis echo
echo: /bin/echo

да вроде находит...

Что не так я делаю?

ExecStartPre=/bin/echo «OPTS=$OPTS_COMMON»>/tmp/run.log
ExecStart=/usr/bin/node test.js >/tmp/run.log 2>&1

systemd — это не шелл. Операторы перенаправления в нём не работают.

Но тут дело судя по всему не в этом. Ищи, может пользователь криво указан, или группа как-то не так называется, или ещё что.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 2)
Ответ на: комментарий от intelfx

Да, сделал через баш. Результат. Тот же.
Ну юзер есть, группа есть. sudo с таким юзером делает эту команду на ура.

Spider55
() автор топика
Ответ на: комментарий от Spider55

systemd-специфичные коды ошибок (когда ошибка произошла между fork и exec) начинаются с 200. 127 имеет смысл «command not found» только в шеллах. TL;DR ищи ошибку в своих бинарниках. Можешь попробовать завернуть команду в strace и посмотреть.

intelfx ★★★★★
()
Ответ на: комментарий от intelfx

Как бы в echo нет моего бинарника :) обычный эхо...

Spider55
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.