ฉันพยายามวิ่งstrace
รางccze
และท่อไม่ทำงานตามที่คาดไว้
บรรทัดคำสั่งที่ฉันใช้เพื่อทดสอบคือsudo strace -p $(pgrep apache2) | grep open
และบรรทัดทั้งหมดเป็นเอาต์พุตโดยไม่สนใจ grep
มีอะไรพิเศษเกี่ยวกับstrace
สิ่งนี้ที่ทำให้เกิดพฤติกรรมนี้หรือไม่?
ฉันพยายามวิ่งstrace
รางccze
และท่อไม่ทำงานตามที่คาดไว้
บรรทัดคำสั่งที่ฉันใช้เพื่อทดสอบคือsudo strace -p $(pgrep apache2) | grep open
และบรรทัดทั้งหมดเป็นเอาต์พุตโดยไม่สนใจ grep
มีอะไรพิเศษเกี่ยวกับstrace
สิ่งนี้ที่ทำให้เกิดพฤติกรรมนี้หรือไม่?
คำตอบ:
strace
พิมพ์ร่องรอยบนข้อผิดพลาดมาตรฐานไม่ได้อยู่ในเอาต์พุตมาตรฐาน นั่นเป็นเพราะเป็นเรื่องปกติที่จะต้องการเปลี่ยนเส้นทางเอาต์พุตมาตรฐานของโปรแกรม แต่โดยทั่วไปแล้วไม่ใช่ปัญหาที่ strace ของ strace และ stderr ของโปรแกรมนั้นผสมกัน
ดังนั้นคุณควรเปลี่ยนเส้นทางstrace
ของ stderr ไปยัง stdout เพื่อให้สามารถไปป์ได้:
sudo strace -p $(pgrep apache2) 2>&1 | grep open
ยกเว้นว่าสิ่งที่คุณกำลังมองหาคือ
sudo strace -p $(pgrep apache2) -e open
strace: Invalid process id: '-e'
รับคำสั่งล่าสุด ฉันใช้เวอร์ชัน 4.8 2010-03-30
apache2
ด้วยชื่อของกระบวนการที่คุณสนใจตรวจสอบว่าpgrep
พิมพ์ PID เดียวไม่เช่นนั้นเลือกอย่างใดอย่างหนึ่งแล้วเรียกใช้เช่นsudo strace -p 1234 -e open
vim
เน้นสีไวยากรณ์? strace $CMD 2>&1 > /dev/null | vim -c ':set syntax=strace' -
.
open
โทรฉันแค่ใส่ตัวอย่างสิ่งที่ฉันพยายามทำคือการเน้นสี