วิธีเปลี่ยนค่าจากคำสั่งด้านบนไปยังไฟล์ใน Mac OSX


3

ทั้งหมด ฉันต้องการที่จะดึงค่าจากด้านบนเพื่อจุดประสงค์ในการพล็อต ฉันกำลังใช้คำสั่งต่อไปนี้

top -l 0 -s 1  -pid 12345 -stats rsize | awk 'NR%13==0'  

เมื่อฉันรันสิ่งนี้ฉันจะได้ผลลัพธ์ที่คาดหวัง แต่เมื่อฉันพยายามเปลี่ยนเส้นทางผลลัพธ์ไปยังไฟล์โดยเรียกใช้สิ่งต่อไปนี้:

top -l 0 -s 1  -pid 299 -stats rsize | awk 'NR%13==0' > output.txt  

มันไม่ทำงาน ฉันควรทำอย่างไรเพื่อเปลี่ยนเส้นทางเอาต์พุตไปยังไฟล์

ฉันใช้ Mac OSX (Lion)


1
ดูเหมือนว่าโหมดแบตช์ (-b) ไม่ได้ใช้งานใน OS X คุณสามารถตั้งค่าที่มีขนาดใหญ่กว่าสำหรับ -l (พูดว่า "-l 10") แต่คุณจะไม่สามารถเห็นผลลัพธ์จนกว่าจะเสร็จสิ้นสคริปต์ , เช่น "tail -f output.txt" จะไม่ทำงานสำหรับการตรวจสอบ
lupincho

@lupincho: ปัญหาเดียวคือ awk buffering
tuergeist

คำตอบ:


2

นิพจน์ของคุณถูกต้อง แต่ระวังว่า awk บัฟเฟอร์เอาต์พุต ดังนั้นการเพิ่ม fflush(stdout) ส่วน awk ของคุณจะช่วย

top -l 0 -s 1  -pid 299 -stats rsize | awk 'NR%13==0; fflush(stdout)' > output.txt  

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