วิธีการสร้างบริการบน Ubuntu Upstart


21

ฉันมีโปรแกรมปฏิบัติการ Java ที่ฉันสามารถเรียกใช้โดยการพิมพ์java -jar abc.jarใน terminal ฉันจะเรียกใช้เป็นบริการได้อย่างไร service abc startฉันต้องการที่จะเรียกใช้เป็นบริการเช่นโดยการพิมพ์


คำตอบที่สมบูรณ์ยิ่งขึ้นอยู่ที่นี่: unix.stackexchange.com/questions/1924/…โดยทั่วไปใน Ubuntu คุณสามารถสร้างสคริปต์สำหรับ /etc/init.d ซึ่งสามารถเริ่ม / หยุด / รีสตาร์ทบริการของคุณได้
นายเอ็ด

คำตอบ:


41

ตรวจสอบให้แน่ใจว่าคุณอยู่ที่ 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ส่วน


1
บางทีคุณอาจต้องทำให้มันใช้งานsudo chmod +x /etc/init.d/myprogramได้ ข้อควรระวัง: วิธีการตอบของคุณไม่สามารถใช้งานได้ใน Ubuntu 16.04!
juliocesar

2
@juliocesar 16.04 ใช้ systemd ไม่ใช่พุ่งพรวด
Rael Gugelmin Cunha

start onไม่ใช่บทที่จำเป็น ตามที่คุณสามารถอ่านได้ที่นี่ : งานดังกล่าวสามารถควบคุมได้โดยผู้ดูแลระบบเท่านั้น
SuB

@SuB yeap แต่จากนั้นงานจะไม่เริ่มโดยอัตโนมัติและเป็นที่ชัดเจนว่าผู้เขียนคำถามต้องการสิ่งที่ทำหน้าที่เหมือนบริการเช่นเริ่มต้นโดยอัตโนมัติ
Rael Gugelmin Cunha

ใช่. ฉันรู้ว่า. เพิ่งเพิ่มความคิดเห็นเพื่อทำคำตอบของคุณให้สมบูรณ์
SuB

0

คุณต้องสร้างการพุ่งพรวด http://upstart.ubuntu.com/getting-started.html

การพุ่งพรวดคือ (IMHO) หายนะเมื่อเทียบกับสคริปต์เริ่มต้น SysV ที่ดี การพุ่งพรวดเป็นความพยายามที่ไกลมากขึ้น ด้วยที่กล่าวว่าฉันสงสัยว่าจะมีผู้พิทักษ์พุ่งพรวดไม่กี่ออกมีที่จะพาฉันไปทำงานให้ฉันระบุชัดเจน ;-)


1
มันเป็นเพียงไฟล์ใน /etc/init/yourservice.conf ด้วยบรรทัดที่ระบุว่าเมื่อใดที่จะเริ่มต้นและอีกอันสำหรับคำสั่ง exec Fedora ก็พุ่งพรวดเช่นกัน นอกจากนี้แม้แต่ Debian ก็ยังเปลี่ยน schema เริ่มต้นเป็น SystemD ซึ่งจะเป็น schema ของ Ubuntu ในอนาคต
Rael Gugelmin Cunha
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.