ฉันกำลังใช้คำจำกัดความนี้สำหรับsystemd
งาน:
[Unit]
Description=Some job
[Service]
ExecStart=/usr/local/sbin/somejob
User=dlt
Type=forking
[Install]
WantedBy=multi-user.target
สคริปต์ถูกเรียกใช้ดังต่อไปนี้ (การเรียกรูทีนแบบง่ายที่ฟังบนซ็อกเก็ต tcpip และผนวกอินพุตกับไฟล์):
#!/bin/sh
cd /home/user/tmp/testout
nohup java -jar /home/user/programming/tests/java/core/SocketTest/SocketTest.jar </dev/null >/dev/null &
หลังจากsystemctl start somejob
กระบวนการแสดงว่ากำลังทำงานพร้อมกับพาเรนต์init
:
user@CANTANDO ~$ ps -u dlt eo pid,ppid,command
PID PPID COMMAND
8718 1 java -jar /home/user/programming/tests/java/core/SocketTest/SocketTest.jar
หลังจากดำเนินการsystemctl stop somejob
ตามกระบวนการจะไม่ปรากฏอีกต่อไป (และปิดพอร์ต)
ดังนั้นทุกอย่างจึงดูดีและสวยงาม
คำถามของฉันคือ: นี่เป็นวิธีแก้ปัญหาที่ยอมรับได้สำหรับการเรียกใช้จาวาดีมอนsystemd
หรือมีคำเตือนหรือไม่