วันอังคารที่ 26 กุมภาพันธ์ พ.ศ. 2551

tail - คำสั่งง่ายๆใน unix - แต่มันไม่ง่ายซะนี่

เจอ bug ใน script
ดูๆไป script มันก็ปรกติดีทุกอย่าง
เครื่องที่ลง Linux หลายตัวก็ทำงานได้ แต่...
เครื่องที่ลง Linux บางตัวกลับทำไม่ได้ซะงั้น

หลังจาก check การทำงานของ script แล้วก็พบว่า
คำสั่ง tail นี่เองที่ทำให้เกิดปัญหา
เพราะเครื่อง Linux หลายตัวลง Linux เวอร์ชั่นเก๊าเก่า เช่น Fedora Core 2, Core 4
ส่วนเครื่อง Linux บางตัวลง Linux เวอร์ชั่นใหม่มั่ก เช่น Fedora Core 6, Fedora 7, Linux Redhat Enterprise 4, Enterprise 5
(เครื่อง HP-UX10, HP-UX11 ยังทำงานได้ปรกติ)

ปกติคำสั่ง tail เอาไว้ ดึงข้อมูลจากท้ายไฟล์มาแสดง โดย default แล้วจะดึงมาเพียง 10 บรรทัด
ทีนี้สงสัยว่าจะมีการเปลี่ยน option ในการใช้งาน ผลเลยเดี้ยงไปเฉยๆเลย

- ใน script มีการเรียกใช้ tail โดยเรียกใช้ดังนี้
tail +2 filename
โดยมีความหมายคือ ให้แสดงข้อมูลในไฟล์ ตั้งแต่บรรทัดที่สอง ไปจนถึงบรรทัดสุดท้ายท้ายไฟล์

- ทีนี้ ในเวอร์ชั่นใหม่ๆ การเรียกใช้แบบเดิมถูกเปลี่ยนไป โดยหากต้องการจะเรียกใช้ให้ได้ในเวอร์ชั่นนี้ จะต้องทำอย่างนี้ครับ
tail -n+2 filename
น่าน ต้องมี -n option ด้วย ถึงจะได้
ถ้าไม่ใส่มันจะมอง +2 เป็นชื่อไฟล์ แล้วงานเราก็จะพลาดเอง

อันนี้เป็นเวอร์ชัน ของ tail บนเครื่อง fedora core 6

[thada@localhost ~]$ tail --version
tail (GNU coreutils) 5.93
Copyright (C) 2005 Free Software Foundation, Inc.
This is free software. You may redistribute copies of it under the terms of
the GNU General Public License .
There is NO WARRANTY, to the extent permitted by law.

Written by Paul Rubin, David MacKenzie, Ian Lance Taylor, and Jim Meyering.

ไม่มีความคิดเห็น: