LINUX.ORG.RU
решено ФорумAdmin

systemd unit и (возможно) переменные окружения

 


0

1

Долго я оттягивал этот момент, но видимо пришло время написать свой первый systemd unit

Есть старый бинарник, который исторически запускался чуть ли не вручную под выделенным пользователем, в профайле у которого прописаны условные BASE_DIR и LD_LIBRARY_PATH

Хотелось бы иметь для все преимущества systemd, типа автозапуска, унифицированного способа стартом/пуском, рестартом итд

То есть, если его запустить от произвольного пользователя без учёта переменных окружения, то получим нечто вроде:

/path/to/app: error while loading shared libraries: libname.so: cannot open shared object file: No such file or directory


Если запустить напрямую в виде
LD_LIBRARY_PATH=/path/to/lib BASE_DIR=/path/to/basedir /path/to/app start

то нормально запускается

В итоге я написал нечто вроде этого:
[Unit]
Description=Old app

[Service]
User=appuser
Environment="LD_LIBRARY_PATH=/path/to/lib"
Environment="BASE_DIR=/path/to/basedir"
ExecStart="/path/to/app start"
ExecStop="/path/to/app stop"

[Install]
WantedBy=multi-user.target

Но при systemctl start myapp получаю в ответ code=exited, status=203/EXEC

Пока предполагаю, что не подхватываются переменные окружения.

Как исправить?

★★★★★

Ответ на: комментарий от Korchevatel

Да, читал, но у меня именно ELF, поэтому шебанги вставлять некуда

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

Мм...был уверен, что пробовал оба варианта, но теперь без кавычек картина изменилась(падает но с непонятной ошибкой), будем посмотреть дальше.
Спасибо

zolden ★★★★★ ()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.