จะแสดงผลลัพธ์สดบนเทอร์มินัลจากเชลล์สคริปต์ได้อย่างไร


9

ฉันจะเขียนเชลล์สคริปต์ที่แสดงผลลัพธ์แบบเรียลไทม์ได้อย่างไร

บางอย่างเช่นtopคำสั่งที่อัปเดตผลลัพธ์หลังจากช่วงเวลาหนึ่งคงที่

ข้อความแสดงแทน


6
อาจใช้cursesส่วนต่อประสาน ... แต่ฉันคิดว่านี่เป็นคำถามการเขียนโปรแกรมที่หนักกว่าและเป็นของ SO
xenoterracide

คำตอบ:



13

คุณสามารถใช้คำสั่งwatch (1)เพื่อเรียกใช้สคริปต์ของคุณในช่วงเวลาปกติ:

watch -n 1 myscript.sh

สิ่งนี้จะทำงานmyscript.shทุก ๆ 1 วินาทีการล้างหน้าจอระหว่างการวิ่งแต่ละครั้งและการประทับเวลาที่มุม คุณสามารถใช้-dตัวเลือกและมันจะเน้นความแตกต่างในผลลัพธ์ต่อการเรียกใช้


ฉันแค่คิดว่าจะตอบอย่างไรโดยใช้นาฬิกา
Kevin M

watchฉันไม่ได้มี คุณเจาะจงมากกว่านี้ไหม? ระบบปฏิบัติการอะไร
Chris หน้า

2

โดยทั่วไปข้อมูลส่วนใหญ่จะถูกเปิดเผยในระบบไฟล์เสมือน / proc เสมือน แต่ละกระบวนการมีรายการใน / proc ในไดเรกทอรีที่เรียกว่า PID ดังนั้น / proc / 5437 จะมี primitives สำหรับกระบวนการ 5437 การอ่านภาษาดั้งเดิมนั้นและการแยกวิเคราะห์อย่างเหมาะสมจะทำให้คุณใกล้เคียงกับสิ่งที่ทำอยู่

ด้านบนใช้งานได้จริงโดยการเรียกใช้ฟังก์ชันเฉพาะที่ดึงข้อมูลนี้โดยตรงจากเคอร์เนลแทนที่จะดึงจากไฟล์ จะทำเช่นเดียวกันจากการทุบตีคุณจะต้องดึงทั้งจากระบบแฟ้ม / proc เสมือนหรือดึงมันออกมาจากสายอื่น ๆ psเช่น

สำหรับเรียลไทม์ที่ไม่สามารถทำได้ในระดับรายละเอียดด้านบนให้ คุณสามารถแบ่งเวลาได้ดีพอที่จะเป็นแบบเรียลไทม์ แต่คุณจะยังได้รับส่วนแบ่งเวลา


2

อืมในกรณีที่คุณกำลังมองหาที่topส่งออกเป็นเวลานานและไม่ได้เป็นเพียงการตรวจสอบว่าโปรแกรมที่จะทำดีผมขอแนะนำให้ใช้htop

มันให้ข้อมูลเรียลไทม์แก่คุณมากมายและง่ายต่อการควบคุมและจัดการ

คุณสามารถเปลี่ยนเลย์เอาต์ของเอาต์พุตเช่นกราฟแท่งและคอลัมน์


ฉันเชื่อว่าเขากำลังถามวิธีเขียนแอปที่โพลตามช่วงเวลาปกติไม่เกี่ยวกับด้านบนหรือฮ็อปโดยเฉพาะ
คริส

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