พุ่งพรวดไม่เห็นสคริปต์ใหม่ของฉัน


27

ฉันได้เพิ่มสคริปต์ใหม่เพื่อ/etc/init/เรียกminecraft.confซึ่งมีสคริปต์:

start on startup
stop on shutdown
respawn
respawn limit 20 5

script
  export HOME="/root"
  exec /root/minecraft/start.sh 2>&1 >> /var/log/minecraft.log
end script

post-start script
   echo "minecraft started"

เมื่อฉันลองstart minecraftฉันพบข้อผิดพลาด:start: Unknown job: minecraft

ฉันได้ลองใช้initctl listงานแล้วงาน minecraft ของฉันไม่อยู่ในรายการ ฉันลองวิ่งinitctl reload-configurationแล้วมันก็ไม่ได้สร้างความแตกต่างอะไรเลย

งานอื่น ๆ ที่ระบุไว้ตามinitctl listงานที่ดีกับการเริ่มหยุดและเริ่มต้น

ทำไมคนธรรมดาถึงไม่เห็นสคริปต์ใหม่ของฉัน



นี่อาจเป็นคำถามงี่เง่า แต่ ... ไม่ใช่สคริปต์ของคุณ/etc/init.d/ใช่ไหม
Wolfer

@ ทราบขอบคุณ แต่ฉันได้อ่านมาแล้วและยังมีปัญหาอยู่
Jasarien

@Wolfer ตามคำแนะนำในการเริ่มต้นใช้งานพุ่งพรวดมันบอกว่า "เมื่อมีความสุขให้วางไฟล์ลงไป/etc/initและตอนนี้คุณก็พร้อมที่จะรีบูตและใช้งานพุ่งพรวด"
Jasarien

ฉันพยายามทำซ้ำปัญหา แต่ไม่ประสบความสำเร็จ ฉันคัดลอกรหัสของคุณไปยัง /etc/init/minecraft.conf และออกให้sudo start minecraftโดยไม่มีปัญหา นี่คือเนื้อหาของไฟล์บันทึก~$ sudo cat /var/log/upstart/minecraft.log minecraft started /proc/self/fd/9: 3: exec: /root/minecraft/start.sh: not found minecraft startedคุณสามารถให้รายละเอียดเพิ่มเติมเกี่ยวกับเวอร์ชั่นอูบุนตูที่คุณใช้และข้อมูลที่เป็นประโยชน์จาก syslog ได้หรือไม่?
Goran Miskovic

คำตอบ:


12

ตรวจสอบบันทึกการพุ่งพรวด (มันอยู่ใน/var/log/syslog) ในขณะที่โหลดการกำหนดค่าinitctl reload-configurationอีกครั้งโดยใช้ หากมีข้อผิดพลาดทางไวยากรณ์มันจะปรากฏขึ้นที่นั่น นี่เป็นสาเหตุที่คุณไม่สามารถใช้การกำหนดค่าเริ่มต้นใหม่ได้


11

วิธีง่ายๆในการตรวจสอบไวยากรณ์ของสคริปต์คือใช้คำสั่งต่อไปนี้:

init-checkconf -d /etc/init/service_name.conf

ฉันพบว่าแม้จะมีไฟล์ Upstart ที่ถูกต้องหากไฟล์นั้นไม่มีอยู่เมื่อเซิร์ฟเวอร์บู๊ตครั้งสุดท้ายฉันต้องรีบูตเซิร์ฟเวอร์เพื่อให้ไฟล์พุ่งพรวดเพื่อดูไฟล์


9

ฉันรู้สึกเป็นใบ้ ... แต่นี่มันคือ:

ฉันพลาด stanza "end script" จากสคริปต์ upstart สุดท้าย ...

post-start script
   echo "minecraft started"

ควรได้รับ

post-start script
   echo "minecraft started"
end script

ฉันไม่แน่ใจว่าทำไมมันถึงทำงานได้กับ @schkovich โดยไม่ต้องend scriptแม้ว่า ...


2
เพราะฉันได้เพิ่มสคริปต์ท้ายบท สร้างโค้ดอัตโนมัติ (ใจ) :(
Goran Miskovic

ฉันพบปัญหาเดียวกัน แต่ไม่พอใจไม่มีอะไรปรากฏใน / var / log และ initctl reload-configuration --verbose เงียบ
Neil McGill

4

ในกรณีของฉันมันเป็นauthorเขตข้อมูลที่ว่างเปล่าเช่นนี้

author ""

ใช้งานได้หลังจากเพิ่มบางสิ่งในเครื่องหมายคำพูด

# initctl reload-configuration

ยังถูกขว้างปา/etc/init/servicename.conf:2: Expected token เพื่อ syslog แทน stdout ไม่ว่างที่จะรายงานข้อผิดพลาดสำหรับแพ็คเกจที่กำลังจะตาย


3

อาจไม่สามารถใช้ได้กับสิ่งนี้โดยเฉพาะ แต่ควรกล่าวถึง: หากคุณแก้ไขไฟล์ Upstart config สำหรับบริการที่ใช้งานอยู่การรันrestartจะไม่โหลดการกำหนดค่าใหม่ คุณต้องเรียกใช้stopและstartการเปลี่ยนแปลงใหม่จะมีผล

http://upstart.ubuntu.com/cookbook/#restart

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