ฉันจะดีบักงานพุ่งพรวดได้อย่างไร?


10

ฉันมีงานดังต่อไปนี้ใน/etc/init/collector:

start on runlevel [2345]
stop on runlevel [!2345]

expect daemon

exec /usr/bin/twistd -y /path/to/my/tac/file

เมื่อฉันเริ่มงานด้วยsudo service collector startมันจะหยุดทำงาน ถ้าฉันctrl-cและวิ่งinitctl listฉันเห็นสิ่งนี้:

collector start/killed, process 616

ฉันไม่เห็นอินสแตนซ์ของtwistddaemon ใน ps และเซิร์ฟเวอร์ HTTP ที่ควรให้บริการไม่มีอยู่

ฉันได้ลองทำสิ่งนี้โดยไม่คาดหวัง 'daemon' และด้วยการโทรง่ายๆไปที่สคริปต์ทุบตีบรรทัดเดียวโดยใช้scriptstanza และยังใช้งานไม่ได้ ฉันคิดว่าฉันทำอะไรผิดไปมาก มันจะเป็นอะไร?


ไม่มีคำตอบ แต่ฉันกำลังดิ้นรนกับปัญหาที่คล้ายกัน มันอาจจะเป็นข้อผิดพลาดในการพุ่งพรวด: บั๊ก. launchpad.net/ubuntu/+source/upstart/+bug/438313ฉันไม่รู้ว่าจะได้รับจากสถานะการหยุดพักนี้จากนั้นจึงทำการรีบูตเครื่อง ฉันก็เชื่อว่ามันเกี่ยวข้องกับเรื่องexpect daemonนี้
อันตราย

คำตอบ:


14

คุณสามารถเปลี่ยนเส้นทางstdoutและstderrเชลล์ทั้งหมดโดยใช้scriptpragma (แทนexec) ร่วมกับexec >FILE 2>&1ดังนี้:

script
    exec >/path/to/some_log_file 2>&1
    exec your_command_here
end script

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

ในทางกลับกันหากserviceแขวนไว้อาจไม่ได้ตีสคริปต์ของคุณซึ่งในกรณีนี้ไม่มีสิ่งใดที่จะช่วยได้แน่นอน


ขอบคุณสิ่งนี้ทำให้ฉันไปในเส้นทางที่ถูกต้อง ในที่สุดฉันประปาออกไปเพื่อที่ฉันจะทำได้เพียงแค่หางlogger /var/log/syslog
Cera

นอกจากนี้ข้อผิดพลาดในไฟล์ conf dmesgตัวเองจะแสดงใน ฉันพบสิ่งนี้หลังจากที่ฉันไม่ได้รับผลลัพธ์ใด ๆ เมื่อใช้ข้างต้น ฉันพิมพ์ผิดในคำสั่ง chdir
codingFoo

คุณใส่รหัสนั้นอยู่ที่ไหน
kev

2

นอกจากนี้ยังมีการconsole logประกาศตามที่กำหนดไว้ที่นี่: http://upstart.ubuntu.com/cookbook/#console-log

ฉันไม่รู้มากพอเกี่ยวกับการพุ่งพรวดที่จะรู้ว่ามันถูกเปิดใช้งานโดยค่าเริ่มต้น แต่คุณสามารถเปิดใช้งานมันเป็นพื้นฐานสำหรับงานที่พุ่งพรวดมันจะโดยการส่งออกเริ่มต้นไปที่ /var/log/upstart/<job>.log


0

ตรวจสอบว่ามีผู้อำนวยการพุ่งพรวดอยู่แล้วและเพิ่มบันทึกคอนโซลก่อนขั้นตอนสคริปต์ (ในรุ่นพุ่งพรวดขึ้นไปแล้ว 1.4 เป็นค่าเริ่มต้น)

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

สคริปต์ exec> / path / to / some_log_file 2> & 1 เรียกใช้สคริปต์สิ้นสุด your_command_here

สำหรับข้อมูลเพิ่มเติมตรวจสอบหัวข้อ: /ubuntu/207143/how-to-diagnose-upstart-errors/932155#932155

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