ฉันมีโปรแกรมปฏิบัติการ Java ที่ฉันสามารถเรียกใช้โดยการพิมพ์java -jar abc.jar
ใน terminal ฉันจะเรียกใช้เป็นบริการได้อย่างไร service abc start
ฉันต้องการที่จะเรียกใช้เป็นบริการเช่นโดยการพิมพ์
ฉันมีโปรแกรมปฏิบัติการ Java ที่ฉันสามารถเรียกใช้โดยการพิมพ์java -jar abc.jar
ใน terminal ฉันจะเรียกใช้เป็นบริการได้อย่างไร service abc start
ฉันต้องการที่จะเรียกใช้เป็นบริการเช่นโดยการพิมพ์
คำตอบ:
ตรวจสอบให้แน่ใจว่าคุณอยู่ที่ 14.04 Ubuntu 16.04 (ขึ้นไป) ใช้ systemd ไม่ใช่การพุ่งพรวด
พุ่งพรวดสคริปต์เป็นไฟล์สคริปต์ที่วางไว้และในตอนจบ/etc/init/
.conf
มันต้องมี 2 ส่วน: หนึ่งที่จะบ่งบอกว่าเมื่อใดที่จะเริ่มต้นและอื่น ๆ ด้วยคำสั่งในการดำเนินการ
สคริปต์ที่ง่ายที่สุดในการเริ่มต้นกับตัวอย่างของคุณคือ:
# myprogram.conf
start on filesystem
exec /usr/bin/java -jar /path_to/program
/etc/init/myprogram.conf
สร้างขึ้นเพื่อเป็นรากภายใต้
หากสคริปต์ของคุณต้องการมากกว่าหนึ่งบรรทัดคำสั่งให้ใช้script
ส่วนแทนexec
บรรทัด:
# myprogram.conf
start on filesystem
script
/usr/bin/java -jar /path_to/program
echo "Another command"
end script
หากต้องการเปิดใช้งาน bash complete สำหรับบริการของคุณให้เพิ่ม symlink ใน/etc/init.d
โฟลเดอร์:
sudo ln -s /etc/init/myprogram.conf /etc/init.d/myprogram
จากนั้นลองเริ่มและหยุด:
sudo service myprogram start
ตามตำราพุ่งพรวดคุณสามารถสร้างpre-start
/ post-start
และpre-stop
/ post-stop
คำสั่งที่จะดำเนินการ
นอกจากนี้ฉันอ่านคุณต้องการตรวจสอบว่ากระบวนการทำงานอยู่หรือไม่ ตรวจสอบคำถามนี้และอาจใช้pre-start
ส่วน
sudo chmod +x /etc/init.d/myprogram
ได้ ข้อควรระวัง: วิธีการตอบของคุณไม่สามารถใช้งานได้ใน Ubuntu 16.04!
คุณต้องสร้างการพุ่งพรวด http://upstart.ubuntu.com/getting-started.html
การพุ่งพรวดคือ (IMHO) หายนะเมื่อเทียบกับสคริปต์เริ่มต้น SysV ที่ดี การพุ่งพรวดเป็นความพยายามที่ไกลมากขึ้น ด้วยที่กล่าวว่าฉันสงสัยว่าจะมีผู้พิทักษ์พุ่งพรวดไม่กี่ออกมีที่จะพาฉันไปทำงานให้ฉันระบุชัดเจน ;-)