ฉันจะเริ่มบริการ Systemd ใหม่ได้อย่างไรเมื่อไฟล์มีการเปลี่ยนแปลง ฉันได้รับบริการ Java ที่ฉันต้องการโหลดใหม่เมื่อไฟล์ jar เปลี่ยนแปลง
นี่คือการตั้งค่าของฉัน:
srv.service
[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/
ฉันลองใช้PathChanged
และใช้ไฟล์แทนไดเรกทอรี
เมื่อฉันติดตั้งบริการที่ฉันดำเนินการ: sudo systemctl daemon-reload
และ sudo systemctl enable srv
ขอบคุณ!
ดูเหมือนว่าหากคุณตั้งชื่อมันเหมือนกับบริการ (ด้วย. path) ไฟล์พา ธ อ้างอิงถึงบริการเดียวกัน: freedesktop.org/software/systemd/man/systemd.path.htmlอย่างไรก็ตาม ... ฉันไม่รู้ ถ้ามันเริ่มให้บริการหรือรีสตาร์ทถ้ามันกำลังทำงานอยู่
—
ติดขัด
ตามที่ฉันเข้าใจจากเอกสารคุณ
—
Michał Politowski
srv.path
สามารถทำสิ่งที่เทียบเท่าได้systemclt start srv.service
ดังนั้นสำหรับการรีสตาร์ทโดยอัตโนมัติคุณจะต้องใช้บริการอื่นซึ่งเมื่อเริ่มรีสตาร์ทบริการของคุณ
คุณต้องเริ่มต้น
—
Michael D.
systemctl start srv.path
- และเพื่อเริ่มต้นการบูตsystemctl preset srv.path
ที่เกี่ยวข้อง: github.com/systemd/systemd/issues/4324
—
Michał Politowski
path
หน่วยจะมีประโยชน์สำหรับการเปิดใช้งาน (เริ่มต้น) หน่วยอื่นเท่านั้น ที่นี่คุณอาจจะสร้างsrv-restart.path
ด้วยPathChanged=/opt/srv/lib/
และมีsrv-restart.service
ExecStart=systemctl restart srv.service