Làm cách nào để khởi động lại dịch vụ Systemd khi tệp thay đổi. Tôi đã có một dịch vụ Java mà tôi muốn tải lại khi có bất kỳ tệp jar nào thay đổi.
Đây là thiết lập của tôi:
dịch vụ
[Unit]
Description=srv 0.1: Service's description
After=network.target
[Service]
Type=simple
WorkingDirectory=/opt/srv
ExecStart=/opt/srv/bin/srv
User=root
Group=root
[Install]
WantedBy=multi-user.target
srv.path
[Path]
PathModified=/opt/srv/lib/
Tôi cũng đã thử sử dụng PathChanged
và sử dụng một tập tin thay vì một thư mục.
Khi tôi cài đặt dịch vụ, tôi đã thực thi: sudo systemctl daemon-reload
và sudo systemctl enable srv
Cảm ơn!
Có vẻ như nếu bạn đặt tên giống như dịch vụ (với .path) thì tệp đường dẫn đề cập đến cùng một dịch vụ: freedesktop.org/software/systemd/man/systemd.path.html tuy nhiên ... Tôi không biết nếu nó chỉ bắt đầu một dịch vụ hoặc thậm chí khởi động lại nó nếu nó đang chạy
—
gây nhiễu
Theo tôi hiểu từ các tài liệu,
—
Michał Politowski
srv.path
chỉ có thể thực hiện tương đương systemclt start srv.service
, vì vậy để tự động khởi động lại, bạn sẽ cần một dịch vụ khác, khi bắt đầu khởi động lại dịch vụ của bạn.
Bạn cần khởi động nó
—
Michael D.
systemctl start srv.path
- và để nó khởi động khi khởi độngsystemctl preset srv.path
Có liên quan: github.com/systemd/systemd/issues/4324
—
Michał Politowski
path
các đơn vị chỉ hữu ích cho việc kích hoạt (bắt đầu) các đơn vị khác. Ở đây bạn có thể có thể tạosrv-restart.path
vớiPathChanged=/opt/srv/lib/
vàsrv-restart.service
vớiExecStart=systemctl restart srv.service
.