Symlink là WorkDirectory trong dịch vụ systemd


8

Tôi có một dịch vụ với WorkingDirectory=/srv/ctr/currentmột liên kết tượng trưng.

Có vẻ như dịch vụ không nhận các thay đổi trong liên kết tượng trưng khi được khởi động lại. Nhật ký lỗi báo cáo /srv/ctr/releases/69là vị trí nhưng các /srv/ctr/currentđiểm đến /srv/ctr/releases/72. Có cách nào để tôi có thể lấy systemd để nhận thay đổi thư mục mới không?


Bạn đã thử systemctl daemon-reloadchưa Có thể kích hoạt đọc lại liên kết tượng trưng.
morloch

@morloch vâng tôi đã thử rồi. Dịch vụ mà tôi đang chạy là resque . Tôi tự hỏi nếu con đường nào đó được lưu trữ trong công việc.
Sậy G. Luật

3
Hãy thử thêm ExecStartPre=/bin/pwd -Pvào dịch vụ của bạn, tải lại / khởi động lại dịch vụ và kiểm tra nhật ký. Ít nhất thì bạn cũng sẽ biết đó là systemd hay resque ...
morloch

@morloch đã làm việc và bây giờ bằng cách nào đó nó đang tìm đúng thư mục.
Sậy G. Luật

Tôi gặp vấn đề tương tự. SystemD sẽ giải quyết SymLink theo đường dẫn thực tế và sử dụng nó. Tôi chưa tìm được cách vô hiệu hóa hành vi này. Bây giờ tôi chỉ đơn giản là chuyển công cụ của mình sang mục tiêu liên kết tượng trưng và tạo một liên kết mới theo hướng khác ...
Martin Rauscher

Câu trả lời:


2

Có thể thử thêm:

Environment = PWD=/srv/ctr/current

(BTW, thực sự rất vui khi thấy người khác sử dụng /srv/*dịch vụ của họ.)


Câu hỏi cũ, nhưng muốn nói rằng điều này hiệu quả với tôi trên systemd của Centos 8.1 trong khi bình luận của @ morloch thì không.
Yoopergeek

0

sửa đổi tệp đơn vị systemd của bạn như sau:

  • WorkDirectory = / srv / ctr /
  • ExecStart = / bin / start current hoặc ExecStart = cd current && / bin / start
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.