ไม่สามารถดูความก้าวหน้าของไฟล์ด้วย `tail -f`


11

มันน่าแปลกใจที่ตอนนี้tail -fไม่ทำงานในขณะที่ก่อนหน้านี้

ฉันได้รับคำสั่งด้านล่างเพื่อใช้สำหรับการสำรองข้อมูล

ubuntu@ubuntu:~$ sudo tar -cvf /media/ubuntu/My*Linux/ub*data/zebra.tar /media/ubuntu/home > z1 2> z2 && echo "pass" || echo "fail"

หากต้องการดูการส่งออกและข้อผิดพลาดที่มีผู้ 2 ไฟล์และz1z2

ตอนนี้ฉันต้องการเห็นผลลัพธ์ของคำสั่งบนเทอร์มินัลจากไฟล์ z1:

ubuntu@ubuntu:~$ tail -f z1

แต่คำสั่งนี้ไม่แสดงข้อมูลที่ต่อท้ายเวลา

ฉันกำลังทำงานกับการติดตั้ง Ubuntu 14.04.1 แบบสดโดยใช้ไดรฟ์ปากกา usb นี่เป็นเหตุผลได้หรือไม่


1
อาจเป็นไปได้ที่ไม่เกี่ยวข้องกับปัญหาของคุณ 2 > z2แต่คุณบอกว่า ฉันคิดว่าstderrไวยากรณ์การเปลี่ยนเส้นทาง2>ไม่อนุญาตให้มีช่องว่างระหว่าง2และ>.
Ulrich Schwarz

@UlrichSchwarz ขออภัยนั่นคือความผิดพลาดของฉัน ฉันแก้ไข
Ravi

1
เมื่อคุณให้ tar f outputfilenameตัวเลือก z1 จะเป็นไฟล์ที่ว่างเปล่า
Mark Plotnick

@MarkPlotnick no z1 มีเอาต์พุตที่สอดคล้องกับอ็อพชัน -v ถ้าฉันเรียกใช้ 'cat z1' มันจะแสดงไฟล์ทั้งหมดที่สำรองไว้ ปัญหาคือคำสั่ง tail ไม่ทำงาน
Ravi

@Ravi ขออภัยคุณถูกต้อง GNU tar จะเขียนรายการไปยัง stdout เมื่อ v และ f ใช้ร่วมกัน สิ่งนี้ขัดกับมาตรฐานที่เขียนไว้สำหรับ tar จะพยายามทำให้เกิดปัญหาของคุณอีกครั้ง ไดเร็กทอรีใดที่ z1 และ z2 อยู่? ดิสก์ RAM สดของซีดีหรือไดรฟ์ USB ถ้า USB, ประเภทของระบบไฟล์คืออะไร (ext3, vfat)?
Mark Plotnick

คำตอบ:


10

ฉันสามารถทำซ้ำสิ่งนี้ มันเป็นข้อผิดพลาด

บน Ubuntu live CD ระบบไฟล์ที่มีโฮมไดเร็กตอรี่ของผู้ใช้เริ่มต้นคือประเภทoverlayfsซึ่งอ้างว่ารองรับinotifyแต่ไม่รองรับ

ดังนั้นtail -fในไฟล์บน overlayfs พยายามใช้inotifyแล้วไม่ได้รับการแจ้งเตือนใด ๆ เมื่อไฟล์มีการเปลี่ยนแปลง

รายงานข้อผิดพลาด Ubuntu สำหรับเรื่องนี้คือbug # 882147: overlayfs ไม่ใช้อินเตอร์เฟซ inotify อย่างถูกต้อง วิธีแก้ปัญหาที่อ้างถึงในรายงานข้อผิดพลาดนั้นจาก Jim Meyering ผ่าน Andrea Ranieri คือการใช้งาน

tail -f ---disable-inotify file

(มียัติภังค์สามอันที่นั่นจริงๆ)

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