Симлинк как 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
0

измените файл модуля systemd следующим образом:

  • WorkingDirectory = / SRV / CTR /
  • ExecStart = / bin / start current или ExecStart = cd current && / bin / start
Ахмед Хамди Хаммад
источник