วิธีเข้าถึง Stdout / Stderr ของกระบวนการเดี่ยว


2

ฉันมีสคริปต์ php-cli ที่ทำงาน (แยกส่วน) ในพื้นหลัง

มีวิธีแนบกับ Stdout / Stderr เพื่อดูผลลัพธ์ของแอปพลิเคชันหรือไม่

คำตอบ:



2

ฉันชอบใช้ strace มันน่ากลัวน้อยกว่า GDB

strace -s 100000 -e write=1  -e trace=write -p $PID 2>&1 | \
   sed 's/^write(1, //;t;d'

1

dupx เป็นโซลูชันที่สมบูรณ์ซึ่งใช้ @quack ที่อ้างถึง:

Dupx เป็นยูทิลิตี้ง่าย ๆ ในการทำการแมปไฟล์ของโปรแกรมที่กำลังรันอยู่ เชลล์เช่น Bash อนุญาตให้เปลี่ยนเส้นทางอินพุต / เอาท์พุต / ข้อผิดพลาดได้ง่ายในเวลาที่โปรแกรมเริ่มใช้ & gt ;, / tmp / stdout จะเปลี่ยนเส้นทางของ echo ไปที่ / tmp / stdout เชลล์มาตรฐานไม่ได้ให้ความสามารถในการแมปใหม่ (เปลี่ยนเส้นทาง) ของเอาต์พุต (หรืออินพุตหรือข้อผิดพลาด) สำหรับกระบวนการที่เริ่มต้นแล้ว Dupx พยายามแก้ไขปัญหานี้โดยใช้การเรียกระบบ dup (2) จากภายใน gdb (1) ปัจจุบันมีการใช้งาน Dupx เป็นตัวหุ้มเชลล์แบบง่าย ๆ รอบสคริปต์ gdb

แรงจูงใจในการตอบคำถามนี้มาจาก news.ycombinator.com/item?id=2110636 และ gist.github.com/782263 และไม่มีผลลัพธ์ที่ดีในขณะค้นหา superuser ฉันพบโพสต์ที่เกี่ยวข้องราง ๆ บน SU แต่สิ่งต่าง ๆ อาจจะง่ายกว่า
akira
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.