คำถามติดแท็ก tail

การรับชมการอัพเดตที่ส่วนท้ายของไฟล์โดยมีหรือไม่มียูทิลิตี tail

3
-f, แทรกตัวแบ่งบรรทัดหลังจากบันทึกไม่ได้ใช้งานเป็นเวลา 3 วินาที?
เมื่อทำ a tail -f error.log, วิธีแทรกเส้นแบ่งโดยทางโปรแกรมหลังจากไม่มีสิ่งใดถูกผนวกเข้ากับไฟล์เป็นเวลา 3 วินาที? (เห็นได้ชัดว่าเมื่อมีการเพิ่มตัวแบ่งบรรทัดหนึ่งบรรทัดไม่ควรเพิ่มตัวแบ่งบรรทัดอื่น ๆ จนกว่าจะมีการเพิ่มบรรทัดข้อความอื่น ๆ ลงในไฟล์บันทึก) ตัวอย่างเช่นบรรทัดเหล่านี้ถูกผนวกเข้ากับ error.log: foo bar boo [[wait 4 seconds]] 2far 2foo 2bar 2boo [[wait 40 seconds]] 2far นี่จะเป็นผลลัพธ์ในคอนโซล: foo bar boo 2far 2foo 2bar 2boo 2far

5
แสดงชื่อไฟล์ที่จุดเริ่มต้นของแต่ละบรรทัดเมื่อปรับหลายไฟล์พร้อมกันหรือไม่
เมื่อปรับหลายไฟล์พร้อมกันตามที่แสดงด้านล่างมีวิธีใดบ้างที่จะแสดงชื่อไฟล์ที่จุดเริ่มต้นของแต่ละบรรทัด? tail -f one.log two.log กระแสไฟขาออก ==> one.log <== contents of one.log here... contents of one.log here... ==> two.log <== contents of one.log here... contents of two.log here.. กำลังมองหาบางสิ่งที่ชอบ one.log: contents of one.log here... one.log: contents of one.log here... two.log: contents of two.log here... two.log: contents of two.log here...
14 tail 

3
ข้อโต้แย้งเชิงลบที่หัว / หาง
คำถามที่แตกต่างกันนี้ได้ถูกถามหลายครั้งในที่ต่างกัน แต่ฉันพยายามลบMบรรทัดสุดท้ายออกจากไฟล์โดยไม่มีโชค ตอบที่สองได้รับการโหวตมากที่สุดในคำถามนี้แนะนำให้ทำดังต่อไปที่จะกำจัดของบรรทัดสุดท้ายในแฟ้ม: head -n -1 foo.txt > temp.txt อย่างไรก็ตามเมื่อฉันลองใน OSX & Zsh ฉันจะได้รับ: head: illegal line count -- -1 ทำไมถึงเป็นอย่างนั้น? ฉันจะเอาM ที่ผ่านมาสายและแรก Nสายของไฟล์ที่กำหนดหรือไม่

1
วิธีการ tail / grep / awk N ไบต์สุดท้ายของไฟล์แทนที่จะเป็นบรรทัด
ฉันมีแอปพลิเคชันที่กำลังบันทึกลงในไฟล์บันทึกข้อความธรรมดา (myapp.log) แต่ดูเหมือนจะไม่ได้เขียนอักขระบรรทัดใหม่ที่ท้ายรายการบันทึกแต่ละรายการ ถ้าฉันรันคำสั่งเหมือนtail -n 50 myapp.logฉันได้รับข้อความ "บรรทัด" หลายร้อยรายการ (รายการบันทึก) ไฟล์บันทึกนี้มีขนาดใหญ่มาก ๆ ประมาณ 1GB ใครจะรู้ว่า CR และ / หรือ LF ที่ผ่านมานานมาแล้วนั้นถูกแทรกเข้าไป ฉันจะคว้าตัวอย่าง 2MB ล่าสุดได้อย่างไร
14 cat  tail 

2
วิธีเริ่มต้นปรับแต่งไฟล์ที่ยังไม่ได้สร้าง
ฉันใช้tailในการตรวจสอบความคืบหน้าของงานที่ฉันรู้ว่าจะเขียนความคืบหน้าของพวกเขาไปยังดิสก์ เกือบตลอดเวลาฉันรู้ว่าไฟล์ใดที่พวกเขาจะสร้างก่อนที่จะเริ่มทำงาน (งานถูกส่งโดยตัวจัดตารางเวลาในซูเปอร์คอมพิวเตอร์) มีวิธีในการtailไฟล์เหล่านี้ก่อนที่จะสร้าง? ฉันต้องการทำเช่นนั้นในขณะที่หลีกเลี่ยงสภาพการแข่งขันและ / หรือการตั้งสมมติฐานเกี่ยวกับวิธีการหรือเมื่องานเขียนไปยังดิสก์

2
คำสั่งเพื่อลบจำนวน N บรรทัดแรกในอินพุต
พื้นหลัง ฉันใช้เซิร์ฟเวอร์ SSH และมีผู้ใช้ที่ฉันต้องการลบ ฉันไม่สามารถลบผู้ใช้รายนี้ได้เนื่องจากเขากำลังใช้งานกระบวนการบางอย่างที่ฉันต้องฆ่าเสียก่อน นี่คือขั้นตอนที่ฉันใช้อยู่ในขณะนี้เพื่อค้นหารหัสกระบวนการทั้งหมดของผู้ใช้ที่ฉันกำลังใช้: ps -u user | awk '{print $1;}' ผลลัพธ์มีลักษณะดังนี้: PID 2121 2122 2124 2125 2369 2370 ฉันต้องการไปป์นี้เพื่อkill -9ฆ่ากระบวนการทั้งหมดเพื่อให้ฉันสามารถลบผู้ใช้ที่โง่เช่นนี้: ps -u user | awk '{print $1;}' | sudo xargs kill -9 แต่สิ่งนี้ไม่ทำงานเนื่องจากPIDหัวข้อ: kill: failed to parse argument: 'PID' คำถาม ฉันคิดว่าจะต้องมีคำสั่ง Unix ง่าย ๆ เพื่อลบบรรทัดแรกของอินพุต ฉันรู้ว่าฉันสามารถใช้ tailสิ่งนี้ได้ …
11 command-line  sed  awk  tail  head 

1
ไม่สามารถดูความก้าวหน้าของไฟล์ด้วย `tail -f`
มันน่าแปลกใจที่ตอนนี้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 นี่เป็นเหตุผลได้หรือไม่
11 ubuntu  tail 

3
ฉันจะลดชื่อไฟล์ให้น้อยลงแทนที่จะใช้หมายเลขไอโหนดได้อย่างไร
ฉันมีซอฟต์แวร์บางส่วนที่หมุนล็อกไฟล์เมื่อรีสตาร์ท อย่างไรก็ตามในระหว่างการพัฒนาฉันเริ่มต้นใหม่เป็นจำนวนมากดังนั้นฉันจึงต้องการตรวจสอบไฟล์บันทึกล่าสุดได้ตลอดเวลา ถ้าฉันเริ่มlessตามปกติแล้วless program.logกดShift+ fเพื่อท้ายเมื่อล็อกไฟล์หมุนฉันจะทำการตรวจสอบไฟล์บันทึกเก่าต่อไป ฉันถือว่านี่เป็นเพราะหมายเลข inode ยังคงเหมือนเดิมและlessมีการจัดการไฟล์ที่เปิดไปยัง inode นั้น เป็นไปได้หรือไม่ที่จะตรวจสอบกิจกรรมล่าสุดในไฟล์บันทึกใด ๆ ที่ถูกเรียกในปัจจุบันprogram.log? โดยเฉพาะฉันกำลังทำงานกับ Sun OS ดังนั้นทางออกที่ใช้งานได้ดีที่สุด
11 logs  solaris  tail  less 

4
วิธี จำกัด จำนวนบรรทัดที่เอาต์พุตของคำสั่งมีอยู่ใน bash?
ฉันเริ่มดาวน์โหลดไฟล์ขนาดใหญ่ในพื้นหลังโดยใช้ $ nohup wget http://example.tld/big.iso & ซึ่งยังทำให้ฉันไฟล์ที่มีการส่งออกของnohup.outwget ตอนนี้ถ้าฉันต้องการดูขั้นตอนการดาวน์โหลดในภายหลังฉันสามารถใช้$ tail -f nohup.outแต่นั่นจะทำให้หน้าต่างเทอร์มินัลของฉันเร็วขึ้นกว่าที่ฉันต้องการ สิ่งที่ฉันต้องการเห็นคือบรรทัดสุดท้ายที่อัปเดตตลอดเวลา (เช่นเมื่อใช้wgetคนเดียว) ฉันพยายาม$ tail -n 1 -f nohup.outแต่ดูเหมือนว่าจะส่งผลกระทบเฉพาะ tailin เริ่มต้น ' โดยทั่วไปแล้วหากเป็นไปได้ที่จะ จำกัด (ในกรณีนี้คือ 1) จำนวนบรรทัดของเอาต์พุตของคำสั่งที่มีอยู่ / มองเห็นได้จะช่วยแก้ปัญหานี้ได้ เรียงลำดับของการมีผลลัพธ์ในบัฟเฟอร์แบบวงกลม - แค่คิดว่าแถบความคืบหน้าปกติ$ wget example.tld/big.isoจะพิมพ์ มีวิธีแก้ปัญหาเหรอ? หรือฉันกำลังปีนต้นไม้ผิดทาง? (หมายความว่ามันจะง่ายกว่าไหมในการ จำกัดnohupเอาต์พุตหรือทำอย่างอื่น?)
11 bash  tail  nohup  stdout 

1
ฉันจะสร้างเชลล์สคริปต์ที่ส่งเอาต์พุตไปยังกระบวนการได้อย่างไร
ฉันกำลังใช้งานโปรแกรมคอนโซลเซิร์ฟเวอร์ในหน้าจอเพราะฉันจำเป็นต้องอ่านและส่งคำสั่งเป็นครั้งคราว ฉันต้องการเรียกใช้แอปเป็น daemon ในพื้นหลัง (เริ่ม / หยุดด้วย init) ฉันสามารถtail -fบันทึกได้ แต่นั่นจะไม่ให้ฉันส่งข้อมูลไปยังกระบวนการ มีวิธีใดบ้างในการตั้งค่านี้เพื่อให้ฉันสามารถอ่านและส่งอินพุตได้ แต่ยังคงทำงานในพื้นหลังหรือไม่ ฉันต้องการที่จะสามารถส่งอินพุตไปยัง daemon จากกระบวนการที่แตกต่างกันเช่นกัน (เชลล์สคริปต์ที่สามารถส่งคำสั่ง "Stop \ n" เป็นต้น)

2
อ่านบันทึกจากกระบวนการหนึ่งระหว่างการรันคำสั่งบางอย่าง
logs.logฉันมีบริการบางส่วนซึ่งเป็นผู้ผลิตบันทึกในไฟล์ ฉันมีคำสั่งอื่นที่โต้ตอบกับบริการนี้ foo.shสมมติว่ามันเป็นบางส่วน สิ่งที่ฉันต้องการคือการตัดและบันทึกบันทึกจากlogs.logว่าในระหว่างการfoo.shทำงาน กล่าวอีกนัยหนึ่งฉันต้องการบันทึกส่วนหนึ่งของบริการเมื่อมีการโต้ตอบกับของฉันfoo.sh(ดังนั้นฉันไม่สนใจfoo.shบันทึกของ) ฉันคาดว่าคำสั่งนี้จะทำเคล็ดลับ แต่มันยังคงอ่านไฟล์เมื่อfoo.shเสร็จแล้ว: > foo.sh | tail -f logs.log > foo_part.log เป็นวิธีที่ดีในการทำเคล็ดลับนี้หรือไม่?
10 bash  tail 

4
วิธีที่ง่ายที่สุดในการดำเนินการข้อความจากหางที่บรรทัดคำสั่งคืออะไร?
บางครั้งฉันกำลังทำงานกับกล่องใหม่ (อูบุนตู) และฉันพิมพ์gitและได้รับการแจ้งเตือน: The program 'git' is currently not installed. You can install it by typing: apt-get install git-core หากเกิดขึ้นฉันรู้ว่าฉันสามารถคว้าบรรทัดสุดท้ายโดยทำสิ่งที่ชอบ: !! 2>&1 | tail -n 1 แต่ฉันจะรันผลลัพธ์ของ (นั้นapt-get install git-core) ได้อย่างง่ายดายที่สุดได้อย่างไร ฉันรู้ว่าฉันสามารถทำได้ `!! 2>&1 | tail -n 1` แต่ยังมีวิธีที่จะส่งออกไปป์ไลน์จริง ๆ และมีการเรียกใช้หรือไม่ ดูเหมือนจะใช้งานไม่ได้: !! 2>&1 | tail -n 1 | sh …

1
วิธีการติดตาม (a la“ tail -f”) เป็นไฟล์ไบนารี่ตั้งแต่ต้น?
เป็นไปได้หรือไม่ที่จะติดตามไฟล์ไบนารีตั้งแต่เริ่มต้น a la tail -f? สิ่งนี้มีประโยชน์ในบางกรณีเช่นหากฉันกำลังscpส่งไฟล์ไปยังเซิร์ฟเวอร์ระยะไกลและในเวลาเดียวกันฉันต้องการให้ฟีดไปยังกระบวนการอื่น (ใช่ฉันรู้ว่าฉันสามารถใช้ssh+ catเทคนิค) เท่าที่ฉันอ่านจาก FM tailจะเขียนโดยมีไฟล์ข้อความอยู่ในใจ มีวิธีง่ายๆในการดำเนินการดังกล่าวโดยใช้เครื่องมือ posix มาตรฐาน?

5
ใช้ส่วนหัวและส่วนท้ายเพื่อจับเส้นชุดต่าง ๆ และบันทึกเป็นไฟล์เดียวกัน
ดังนั้นนี่คือการบ้าน แต่ฉันจะไม่ถามคำถามการบ้านเฉพาะ ฉันต้องใช้ส่วนหัวและส่วนท้ายเพื่อจับชุดของบรรทัดที่แตกต่างจากไฟล์เดียว เช่นเดียวกับบรรทัดที่ 6-11 และบรรทัดที่ 19-24 และบันทึกทั้งคู่เป็นไฟล์อื่น ฉันรู้ว่าฉันสามารถทำได้โดยใช้ผนวกเช่น head -11 file|tail -6 > file1; head -24 file| tail -6 >> file1. แต่ฉันไม่คิดว่าเราควรจะทำ มีวิธีเฉพาะที่ฉันสามารถรวมคำสั่งส่วนหัวและส่วนท้ายแล้วบันทึกลงในไฟล์ได้หรือไม่
10 tail  head 

2
เป็นไปได้หรือไม่ที่จะทำตามคำสั่ง (ทำงานซ้ำ ๆ )? เป็นหนึ่งจะติดตามไฟล์โดยใช้ tail -f?
ฉันมีสคริปต์ที่สร้างไฟล์ 'Detail.out' ฉันรู้ว่าสคริปต์จะเสร็จสมบูรณ์เมื่อใดก็ตามที่ไฟล์มีจำนวนบรรทัดที่แน่นอน (ประมาณ 21025) ดังนั้นฉันพบว่าตัวเองกำลังนั่งอยู่ที่พร้อมท์คำสั่งทำงาน: [me@somewhere myDir]$ wc -l */Detail.out 21025 A/Detail.out 21025 B/Detail.out 21025 C/Detail.out 12995 D/Detail.out 10652 E/Detail.out 3481 F/Detail.out 21027 G/Detail.out 21025 H/Detail.out 21025 I/Detail.out ... ... ฉันเคยtail -fดูไฟล์เฉพาะ แต่ฉันต้องการติดตามผลลัพธ์ของwc -l */Detail.outคำสั่งที่แสดงด้านบน เป็นไปได้ไหม ฉันกำลังใช้งานtcshใน Ubuntu 11.04 ถ้าเป็นเช่นนั้น
10 monitoring  pipe  tail 

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