วิธีการวินิจฉัยข้อผิดพลาดพุ่งพรวด?


8

ฉันมีไฟล์ upstart conf ใน / etc / init ซึ่งเริ่มต้นได้ดีถ้าฉันเริ่มด้วยตนเองเช่นนี้

sudo initctl start myconf

หากฉันเรียกใช้โดยไม่มีคำสั่ง sudo ฉันจะได้รับข้อผิดพลาด name = (unset) ซึ่งเกิดจากสิทธิ์ของผู้ใช้ แต่นั่นไม่ควรเป็นปัญหาเมื่องานเริ่มต้นที่บูตระบบเมื่อ Upstart เริ่มต้นใช่ไหม? (เพราะนั่นคือทั้งหมดที่ทำงานโดยราก)

เนื้อหาของสคริปต์คือ:

start on runlevel [2345]
stop on runlevel [^2345]

exec /spatial/server_init.sh

... โดยที่ server_init.sh รันเซิร์ฟเวอร์ที่ใช้สคริปต์ไพ ธ อน เมื่อฉันตรวจสอบสถานะของสคริปต์หลังจากที่ฉันเข้าสู่ระบบเพื่อเชลล์มันบอกว่าหยุด / รอ ฉันลองไฟล์ conf ด้วย "start on net-device-up" แต่ไม่มีอะไรเปลี่ยนแปลง มีวิธีดูบันทึกของระบบพุ่งพรวดหรือสิ่งที่คล้ายกันซึ่งอาจช่วยให้ฉันแก้ปัญหาได้หรือไม่

ขอบคุณ


บางครั้งถ้าคุณมีchdirสคริปต์ upstart ของคุณและ dir นั้นไม่มีอยู่จะไม่มีการบันทึกการเขียนและคุณจะได้รับข้อความที่เป็นความลับ:start: Job failed to start
รู้จัก

คำตอบ:


13

ลอง:

/var/log/upstart/JOBNAME.log

คุณอาจต้องการพิจารณาแปลงเป็นงานในขณะที่คุณดีบั๊ก

เริ่มในอวกาศ - เริ่ม

งาน

exec /spatial/server_init.sh

จากคอนโซล:

initctl ปล่อย spatial-start
สถานะ initctl spatial-start

จะให้มันยิงได้ไหมขอบคุณ ฉันคิดว่านี่จริง ๆ แล้วส่งผลให้ปัญหาพุ่งพรวดเฉพาะ มันรวมข้อผิดพลาดทางไวยากรณ์ในไฟล์ conf หรือไม่
U2ros

นี่คือที่เปลี่ยนเส้นทาง stdout / err เพื่อให้ดีขึ้น verbose
ppetraki

1

ตกลงพบวิธีหนึ่ง แต่ใช้งานได้เฉพาะในกรณีที่ข้อผิดพลาดเกิดขึ้นในโปรแกรมที่ถูกเรียกใช้งานโดยสคริปต์ (และถ้าโปรแกรมนั้นส่งคืนข้อความแสดงข้อผิดพลาด) ไม่ใช่พุ่งพรวดเอง แต่นั่นคือสิ่งที่ฉันต้องการในกรณีนี้ สิ่งที่ฉันทำคือเปลี่ยนเส้นทางเอาต์พุตของโปรแกรมไปยังล็อกไฟล์ดังนี้:

exec /spatial/server_init.sh >> /spatial/ogc.log 2>&1

สำหรับคนอื่น ๆ ที่ฉันค้นพบคุณสามารถเพิ่มการใช้คำฟุ่มเฟือยพุ่งพรวดดังนั้นถ้าฉันต้องการมันฉันจะเริ่มจากตรงนั้น


0
  1. ตรวจสอบว่ามีไดเร็กทอรี upstart อยู่: / var / log / upstart (หากไม่ใช่ให้สร้างไดเร็กทอรี)
  2. ตรวจสอบเวอร์ชั่นเริ่มต้นของคุณโดย: รุ่น initctlหรือนโยบายพุ่งพรวดแคช

    สำหรับทุกรุ่นของก่อนที่จะพุ่งพรวด v1.4 ค่าเริ่มต้นสำหรับคอนโซลเป็นคอนโซลไม่มี ขณะที่พุ่งพรวด 1.4 ค่าเริ่มต้นคือบันทึกของคอนโซล

  3. เพิ่มคอนโซลเข้าสู่คุณพุ่งพรวด (ก่อนที่เฟสสคริปต์)
  4. บันทึกของคุณจะอยู่ที่: /var/log/upstart/"upstart-JOBNAME".log

ตัวอย่าง:

บันทึกคอนโซล

ต้นฉบับ

exec /spatial/server_init.sh

สคริปต์สิ้นสุด

บันทึกของคอนโซล - เชื่อมต่ออินพุตมาตรฐานไปยัง / dev / null เอาต์พุตมาตรฐานและข้อผิดพลาดมาตรฐานเชื่อมต่อกับปลายด้านหนึ่งของเทอร์มินัลหลอกที่เอาต์พุตงานใด ๆ จะถูกบันทึกลงในไฟล์โดยอัตโนมัติในไดเรกทอรี / var / log / upstart / สำหรับงานระบบและ $ XDG_CACHE_HOME / upstart / (หรือ $ HOME / cache / upstart / ถ้าไม่ได้ตั้งค่า $ XDG_CACHE_HOME) สำหรับงานเซสชัน

ไม่มีคอนโซล - เชื่อมต่ออินพุตมาตรฐานเอาต์พุตมาตรฐานและตัวบ่งชี้ไฟล์ข้อผิดพลาดมาตรฐานไปที่ / dev / null

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับคอนโซลดูที่ลิงค์ด้านล่าง:

http://upstart.ubuntu.com/cookbook/#console-log

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