Symlink sebagai WorkingDirectory dalam layanan systemd

8

Saya memiliki layanan WorkingDirectory=/srv/ctr/currentyang merupakan symlink.

Tampaknya layanan tidak menerima perubahan pada symlink ketika dimulai ulang. Log kesalahan melaporkan /srv/ctr/releases/69sebagai lokasi tetapi /srv/ctr/currentmenunjuk ke /srv/ctr/releases/72. Apakah ada cara saya bisa mendapatkan systemd untuk mengambil perubahan direktori baru?

Reed G. Law
sumber
Sudahkah Anda mencoba systemctl daemon-reload? Mungkin memicu re-baca symlink.
morloch
@ Morloch ya saya mencobanya. Layanan yang saya jalankan adalah resque . Saya bertanya-tanya apakah jalur itu entah bagaimana disimpan dalam pekerjaan itu sendiri.
Reed G. Law
3
Coba tambahkan ExecStartPre=/bin/pwd -Pke layanan Anda, muat ulang / restart layanan dan periksa log. Setidaknya Anda akan tahu apakah itu systemd atau resque ...
morloch
@ Morloch yang bekerja dan sekarang entah bagaimana menemukan direktori yang benar.
Reed G. Law
Saya memiliki masalah yang sama. SystemD akan menyelesaikan SymLink ke jalur aktual dan menggunakannya. Saya belum menemukan cara untuk menonaktifkan perilaku ini. Saya sekarang hanya memindahkan barang-barang saya ke target symlink dan membuat tautan baru di arah lain ...
Martin Rauscher

Jawaban:

2

Mungkin mencoba menambahkan:

Environment = PWD=/srv/ctr/current

(BTW, sangat senang melihat orang lain menggunakan /srv/*untuk layanan mereka.)

Bangsawan tinggi
sumber
Pertanyaan lama, tetapi ingin mengatakan bahwa ini bekerja untuk saya di systemd Centos 8.1 sementara komentar @ morloch tidak.
Yoopergeek
0

ubah file unit systemd Anda menjadi sebagai berikut:

  • WorkingDirectory = / srv / ctr /
  • ExecStart = / bin / mulai saat ini atau ExecStart = cd saat ini && / bin / mulai
Ahmed Hamdy Hammad
sumber