ฉันจะเขียนเชลล์สคริปต์ที่แสดงผลลัพธ์แบบเรียลไทม์ได้อย่างไร
บางอย่างเช่นtop
คำสั่งที่อัปเดตผลลัพธ์หลังจากช่วงเวลาหนึ่งคงที่
ฉันจะเขียนเชลล์สคริปต์ที่แสดงผลลัพธ์แบบเรียลไทม์ได้อย่างไร
บางอย่างเช่นtop
คำสั่งที่อัปเดตผลลัพธ์หลังจากช่วงเวลาหนึ่งคงที่
คำตอบ:
มันจะช่วยได้ถ้าคุณเจาะจงมากขึ้นเกี่ยวกับสิ่งที่คุณพยายามจะทำ
นี่คือตัวอย่างที่ง่ายมาก :
while true
do
clear
date
sleep 1
done
คุณสามารถใช้คำสั่งwatch (1)เพื่อเรียกใช้สคริปต์ของคุณในช่วงเวลาปกติ:
watch -n 1 myscript.sh
สิ่งนี้จะทำงานmyscript.sh
ทุก ๆ 1 วินาทีการล้างหน้าจอระหว่างการวิ่งแต่ละครั้งและการประทับเวลาที่มุม คุณสามารถใช้-d
ตัวเลือกและมันจะเน้นความแตกต่างในผลลัพธ์ต่อการเรียกใช้
watch
ฉันไม่ได้มี คุณเจาะจงมากกว่านี้ไหม? ระบบปฏิบัติการอะไร
โดยทั่วไปข้อมูลส่วนใหญ่จะถูกเปิดเผยในระบบไฟล์เสมือน / proc เสมือน แต่ละกระบวนการมีรายการใน / proc ในไดเรกทอรีที่เรียกว่า PID ดังนั้น / proc / 5437 จะมี primitives สำหรับกระบวนการ 5437 การอ่านภาษาดั้งเดิมนั้นและการแยกวิเคราะห์อย่างเหมาะสมจะทำให้คุณใกล้เคียงกับสิ่งที่ทำอยู่
ด้านบนใช้งานได้จริงโดยการเรียกใช้ฟังก์ชันเฉพาะที่ดึงข้อมูลนี้โดยตรงจากเคอร์เนลแทนที่จะดึงจากไฟล์ จะทำเช่นเดียวกันจากการทุบตีคุณจะต้องดึงทั้งจากระบบแฟ้ม / proc เสมือนหรือดึงมันออกมาจากสายอื่น ๆ ps
เช่น
สำหรับเรียลไทม์ที่ไม่สามารถทำได้ในระดับรายละเอียดด้านบนให้ คุณสามารถแบ่งเวลาได้ดีพอที่จะเป็นแบบเรียลไทม์ แต่คุณจะยังได้รับส่วนแบ่งเวลา
อืมในกรณีที่คุณกำลังมองหาที่top
ส่งออกเป็นเวลานานและไม่ได้เป็นเพียงการตรวจสอบว่าโปรแกรมที่จะทำดีผมขอแนะนำให้ใช้htop
มันให้ข้อมูลเรียลไทม์แก่คุณมากมายและง่ายต่อการควบคุมและจัดการ
คุณสามารถเปลี่ยนเลย์เอาต์ของเอาต์พุตเช่นกราฟแท่งและคอลัมน์
top
ใช้Cursesและอ่าน/proc
ระบบไฟล์
/proc
ยกเว้นในระบบที่ไม่ได้มี อีกวิธีในการรับข้อมูลคือ sysctl (8) / sysctl (3)
curses
ส่วนต่อประสาน ... แต่ฉันคิดว่านี่เป็นคำถามการเขียนโปรแกรมที่หนักกว่าและเป็นของ SO