Симлинк как WorkingDirectory в сервисе systemd


8

У меня есть сервис, с WorkingDirectory=/srv/ctr/currentкоторым есть символическая ссылка.

Похоже, служба не перехватывает изменения в символической ссылке при перезапуске. Журнал ошибок сообщает /srv/ctr/releases/69как местоположение, но /srv/ctr/currentуказывает на /srv/ctr/releases/72. Есть ли какой-нибудь способ, которым я могу получить systemd, чтобы узнать о новом изменении каталога?


Ты пробовал systemctl daemon-reload? Может вызвать перечитывание символической ссылки.
Morloch

@ morloch да, я попробовал это. Служба, на которой я работаю, является resque . Мне интересно, хранится ли путь как-то в самой работе.
Рид Г. Лоу

3
Попробуйте добавить ExecStartPre=/bin/pwd -Pк своему сервису, перезагрузите / перезапустите сервис и проверьте журналы. По крайней мере, тогда вы будете знать, если это systemd или resque ...
Morloch

@morloch, который работал, и теперь он как-то находит правильный каталог.
Рид Г. Лоу

Я была такая же проблема. SystemD преобразует SymLink в фактический путь и использует его. Я не нашел способ отключить это поведение. Теперь я просто переместил свои материалы в цель символической ссылки и создал новую ссылку в другом направлении ...
Мартин Раушер,

Ответы:


2

Возможно, попробуйте добавить:

Environment = PWD=/srv/ctr/current

(Кстати, очень рад видеть кого-то еще, использующего /srv/*для своих услуг.)


Старый вопрос, но хотел сказать, что это сработало для меня на systemd в Centos 8.1, а комментарий @ morloch - нет.
Yoopergeek

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.