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?


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.)


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.