ต้องการสร้างสคริปต์ธรรมดา ต้องการความช่วยเหลือและคำแนะนำ


13

ตู้เอทีเอ็มฉันต้องสุ่มเริ่มต้นและหยุด (สำหรับการขาดคำดีกว่าในใจของฉัน) งาน ฉันเริ่มต้นด้วยการพิมพ์java -jar foo.jarและหยุดมันเพื่อหา pid และฆ่ามัน การฆ่ามันไม่ได้ทำให้ข้อมูลสูญหายหรือเสียหายหรืออะไรก็ตามเพียงแค่ FYI น่าเบื่อที่จะทำทั้งสองขั้นตอนเหล่านี้เพราะคำสั่งแรกจะต้องดำเนินการจากไดเรกทอรีเฉพาะคือ/usr/share/jetty(การฆ่าสามารถดำเนินการได้จากทุกที่)

ดังนั้นฉันจึงคิดบางอย่างในบรรทัดของ

service foo startและservice foo stopเพื่อเริ่มและหยุดบริการ เป็นไปได้และถูกต้องที่สำคัญกว่า? มีวิธีแก้ปัญหาอื่น ๆ อีกไหม?

ขอบคุณ

คำตอบ:


13

ใช่พุ่งพรวดเป็นตัวเลือกที่ดีสำหรับเรื่องนี้ เพียงสร้างไฟล์ใหม่:

sudoedit /etc/init/my-jetty-jar.conf

คุณสามารถเปลี่ยนชื่อไฟล์เป็นสิ่งที่คุณชอบ แต่แล้วติดมันในมัน:

description     "Run my jetty jar"

# no start option as you might not want it to auto-start
# This might not be supported - you might need a: start on runlevel [3]
stop on runlevel [!2345]

# if you want it to automatically restart if it crashes, leave the next line in
respawn

script
    cd /usr/share/jetty
    su -c "/usb/bin/java -jar /path/to/foo.jar" nobody
end script

บางบันทึกเกี่ยวกับเรื่องนั้นฉันsuไม่มีใครรักษาความปลอดภัย คุณอาจต้องใช้มันsuในบัญชีอื่น แต่ก็ไม่แนะนำให้ทำเช่นrootนั้น


จำเป็นต้องรีสตาร์ทเพื่อให้การเปลี่ยนแปลงมีผลหรือไม่ update-rc.dไม่ทำงาน /
theTuxRacer

คุณไม่จำเป็นupdate-rc.dสำหรับงานพุ่งพรวด
Oli

พุ่งพรวดนาฬิกา / etc / init โดยใช้ inotify ดังนั้นโดยทั่วไปจะรู้เกี่ยวกับการแก้ไขทั้งหมดที่อยู่ด้านล่าง ไม่จำเป็นต้องทำอะไรนอกจาก 'เริ่ม my-jetty-jar' โอ้และ @Oli คุณสามารถมีงานได้โดยไม่ต้องเริ่มต้นเลย โปรดทราบว่าการหยุดใน runlevel [! 2345] อาจถูกตั้งค่าสถานะในอนาคตเป็นวิธีที่ไม่ดีในการหยุดสิ่งต่าง ๆ (เนื่องจากไม่รับประกันว่าพวกเขาจะหยุดก่อนที่ระบบจะยกเลิกการเมานท์)
SpamapS

น่าเสียดายที่โซลูชันของคุณดูเหมือนจะไม่ทำงาน (อีกต่อไป) สำหรับ Jetty 8 เมื่อ start.jar วางไข่กระบวนการอื่นซึ่งจะไม่ถูกทำลายด้วยวิธีการของคุณ ฉันสร้างคำถามอื่นเพื่อแก้ไขปัญหานี้: stackoverflow.com/questions/10796242/…
Sebi

4
@Sebi คุณอาจต้องติดexpect forkอยู่ที่นั่น (ก่อนscriptเริ่ม)
Oli
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.