วิธีการรับเอาท์พุทจากงานธรรมดาเมื่อล็อกอินผ่าน SSH


10

เพื่อตรวจสอบสิ่งที่คำจำกัดความงานของฉันกำลังทำอยู่ฉันต้องการที่จะเห็นข้อความออกจากงาน ดูเหมือนจะเป็นไปไม่ได้เมื่อฉันเข้าสู่ระบบผ่าน SSH

ฉันกำลังมีปัญหากับ Natty 11.04 แต่ฉันเชื่อว่ามันเป็นเรื่องธรรมดามาก

ไฟล์งานง่าย ๆ ที่ฉันใช้ (ชื่อไฟล์/etc/init/test.conf):

description "test"
start on test
console owner
kill timeout 5
task
script
  /bin/echo Gotcha...
end script

เป้าหมายของฉันคือจะเห็นข้อความ "Gotcha ..." เมื่อทำหรือinitctl emit test initctl start testแต่นั่นไม่ได้ผล

สิ่งที่ฉันได้ลองไปแล้ว:

  • "คอนโซลเอาต์พุต" แทน "เจ้าของคอนโซล"
  • "exec / bin / echo Gotcha ... " แทนที่จะเป็นสคริปต์ ... สคริปต์สิ้นสุด

คำตอบ:


8

เนื่องจาก init (pid 1) กำลังเรียกใช้บริการ (ซึ่งไม่มี stdout / stderr) และไม่ใช่เชลล์ของคุณ (เช่นเดียวกับ/etc/init.dสคริปต์แบบเก่า) จึงไม่มีวิธีดูผลลัพธ์ที่สร้างขึ้นในปัจจุบัน (คุณลักษณะนี้มีการร้องขอบ่อยครั้งและอยู่ในรายการสิ่งที่ต้องทำสำหรับการพุ่งพรวด)

เพื่อหลีกเลี่ยงปัญหานี้ฉันขอแนะนำให้บังคับให้เปลี่ยนเส้นทางผลลัพธ์เมื่อเริ่มงานเอง:

script
    exec >/var/log/test.debug 2>&1
    echo Gotcha...
end script

16

ตั้งแต่ 12.04 (อาจเป็นไปได้ก่อนหน้านี้) โดยค่าเริ่มต้นพุ่งพรวดจะเข้าสู่ไฟล์ภายใต้ / var / log / upstart / ด้วยเอาต์พุตใด ๆ จากงาน

เอกสารปัจจุบันของการพุ่งพรวด (ในตำรา)

จากนั้นคุณสามารถปรับท้ายไฟล์นั้นเพื่อดูข้อความใหม่ทั้งหมดที่กำลังเขียนไปยังไฟล์

ตัวอย่างเช่น:

tail -f /var/log/upstart/test.log & # tail the output
initctl emit test
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.