วิธีเขียนเอาต์พุตของ live-f1 ลงในไฟล์


10

ฉันเปิดเทอร์มินัลแล้ววิ่ง live-f1 ซึ่งแสดงฟีดสดในเทอร์มินัล (ข้อความ) ที่เปลี่ยนแปลงทุกวินาที สามารถใช้คีย์ "Enter" เท่านั้นในขณะที่โปรแกรมนี้กำลังทำงาน (ออกจากโปรแกรมนั้น) ดังนั้นคุณไม่สามารถพิมพ์สิ่งอื่นใดลงในคอนโซลได้

ฉันต้องการเขียนเนื้อหาของเทอร์มินัลลงในไฟล์เหมือนทุก ๆ วินาที

ฉันจะทำมันได้อย่างไร

โดยการเปิดคอนโซลที่ 2 และใช้คำสั่งบางอย่าง?

ไม่สามารถทำให้มันทำงานกับคำสั่ง setterm -dump ได้

คำตอบ:


8

live-f1วาดหน้าจอที่มีข้อมูลใหม่โดยใช้ขั้วตัวควบคุม (ncurses) เช่นเดียวหรือtop mtrนั่นเป็นเหตุผลที่คุณเห็นขยะทั้งหมดนี้เมื่อเปลี่ยนเส้นทางไปยังไฟล์หรืออุปกรณ์ปลายทาง

น่าเสียดายที่live-f1ไม่มีตัวเลือกสำหรับรับผลลัพธ์ที่เหมาะสมในการบันทึกและแยกข้อมูลสำหรับสถิติและอื่น ๆ ในภายหลัง scriptหากคุณยังคงต้องการที่จะบันทึกผลลัพธ์สำหรับการเล่นในภายหลังคุณสามารถใช้

สิ่งนี้จะบันทึก live-f1 และสร้างสองไฟล์ typescript และ timingfile

script -c live-f1 -t 2> timingfile

สิ่งนี้จะเล่นซ้ำเอาต์พุต

scriptreplay timingfile

7

มีสองสามวิธีที่ฉันใช้เพื่อจับภาพเอาต์พุตเป็นไฟล์ซึ่งอาจเป็นประโยชน์กับคุณ

script

สิ่งนี้จะสร้าง subshell และใส่เอาท์พุททั้งหมดลงไป ดังนั้นทำscriptทุกอย่างที่คุณต้องการจากนั้นจึงexitปิดท้าย subshell และผลลัพธ์ของคุณจะอยู่ในไฟล์ที่เรียกว่า "typescript"

tee

คุณสามารถสะท้อนไปป์ทั้งหมดไปที่อื่น ดังนั้นคุณสามารถteeปิดเอาต์พุตมาตรฐานของคุณเป็นไฟล์:

$ mycommand | tee myoutput

หากคุณต้องการจับข้อผิดพลาดมาตรฐานเช่นกันให้เปลี่ยนเส้นทาง:

$ mycommand 2>&1 | tee myoutput

6

วิธีการใช้งานโปรแกรมเช่นนี้:

program > /path/to/file

สิ่งนี้จะเปลี่ยนเส้นทางของผลลัพธ์programไปที่/path/to/fileทันที

และถ้าคุณต้องการที่จะมีเอาท์พุทใน terminal ของคุณเช่นเดียวกับการบันทึกลงในไฟล์ ชำระเงินมีวิธีในการทุบตีเพื่อเปลี่ยนเส้นทางเอาต์พุตและยังคงเป็นไปได้หรือไม่?


ขอบคุณสำหรับคำตอบด่วน เกือบจะใช้งานได้เฉพาะเนื้อหาไฟล์ที่มีการจัดการบิต มันควรจะเป็นในรูปแบบ HTML แต่เมื่อฉันเปิดแฟ้มมีบางสัญลักษณ์แปลก ๆ ให้ดูที่หน้าจอ: upload.ee/image/1223166/ss_01.png ชื่อของโปรแกรมคือ live-f1
กุสตาฟ

นั่นดูตลก คุณแน่ใจหรือว่าโปรแกรมแสดงผล HTML เท่านั้น มีแอนิเมชันหรืออะไรแปลก ๆ ?
phunehehe

นี่จะเปลี่ยนเส้นทางเอาต์พุตมาตรฐานเท่านั้น ข้อผิดพลาดมาตรฐานจำเป็นต้องมีเช่นกัน?
Faheem Mitha

2
@Gustav มีรหัส ANSIติดอยู่ในนั้นด้วย ไม่ว่าแอปพลิเคชันของคุณจะออกตัวนับความคืบหน้าบางประเภท (ซึ่งเป็นหน้าตา) หรือสีเอาท์พุทหรือคล้ายกัน หากมีวิธีการปิดการทำงานนี้คุณจะต้องใช้มันเพื่อจับภาพเอาต์พุตที่สะอาด แอปพลิเคชันของคุณไม่ได้เอาต์พุต HTML ดังนั้นการจับ HTML คุณจะต้องมีแอปพลิเคชั่นอื่น ๆ เพื่อแปลเอาต์พุต
Matthew Scharley

ทำไมฉันถึงต้องใช้มันเป็น HTML เพราะฉันใช้งานได้เมื่อปีที่แล้ว แต่กลับเนื้อกลับตัวดิสก์ที่ฉันมีสภาพแวดล้อมในการทำงาน เป้าหมายของฉันคือการได้รับตำแหน่งผู้ขับขี่สูตร 1 จากฟีด live-f1 ไปเป็นไฟล์ ผมได้รับมันทำงานปีที่แล้วโดยใช้โปรแกรมถ่ายทอดสด-F1 ใน terminal 1 แล้ว fireing ขึ้นมินัล 2 และใช้คำสั่งบางสิ่งที่จับหน้าจอมินัล 1 และบันทึกไว้เป็นไฟล์ (คัดลอกจากแฟ้มปีที่ผ่านมา: upload.ee/download/1223347 /0b6545ce227661452c8/html.log ) คำสั่งเป็นอะไรแบบนั้น: tty "terminal terminal pointer" "filename" "interval"
Gustav

3

คุณสามารถใช้หน้าจอ GNUพร้อมกับฟังก์ชั่นการเข้าสู่ระบบ โปรดทราบว่า logfile flush secsคำสั่งอนุญาตให้คุณควบคุมความถี่ที่เอาต์พุตถูกฟลัชไปยังดิสก์ จากคู่มือการใช้งานหน้าจอ:

- คำสั่ง: logfile flush วินาที

กำหนดชื่อไฟล์บันทึกที่จะได้รับ ค่าเริ่มต้นคือ 'screenlog.% n' รูปแบบที่สองเปลี่ยนจำนวนหน้าจอวินาทีที่จะรอก่อนที่จะล้างบัฟเฟอร์ logfile ไปยังระบบไฟล์ ค่าเริ่มต้นคือ 10 วินาที


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