บันทึกด้วย script
www.tanabutr.co.th/photobook
ไม่ได้เขียน blog ตั้งนาน มาเขียนอีกทีก็เกินเดือนไปแล้ว. ช่วงที่ผ่านมามีอะไรหลายอย่างที่ต้องทำ อันหนึ่งคือจัดคอร์สอบรม Perl Programming 15 วันให้กับบริษัทพัฒนาซอฟต์แวร์แห่งหนึ่ง. ถ้าเทรนคนเดียวก็อ่วมแน่, ดีที่ไม่ได้เทรนคนเดียว.
เข้าเรื่องคือใน UNIX มันมีคำสั่งที่ช่วยเก็บทุกอย่างที่พิมพ์หรือแสดงในเทอร์มินอลที่ชื่อว่า script. โปรแกรมนี้จะเริ่มเชลล์ตัวใหม่และบันทึกทุกอย่างที่เขียนหรือที่แสดงทางหน้าจอลงในไฟล์ แล้วเอามาดูได้ทีหลัง. ตรงนี้ก็มีประโยชน์ถ้าเราทำอะไรๆที่สำคัญๆแล้วอยากจะมาดูทีหลังว่าทำอะไรไปบ้างก็ใช้คำสั่งนี้. ที่ผมชอบใช้ก็จะเป็นตอนนี้ต้องติดตั้งโปรแกรมอะไรบางอย่าง, แทนที่จะจดบันทึกว่าทำอย่างไรบ้างก็ให้ script บันทึกไว้แล้วเอามาดูทีหลัง.
คำสั่ง script ถ้าสั่งโดยไม่มีอาร์กิวเมนต์ก็จะเก็บบันทึกสิ่งที่แสดงบนหน้าจอไว้ในไฟล์ typescript
$ script Script started, file is typescript $ ls bin/ dev/ home/ lost+found/ opt/ sbin/ typescript boot/ etc/ initrd/ media/ proc/ sys/ usr/ cdrom/ floppy/ lib/ mnt/ root/ tmp/ var/ $ exit exit Script done, file is typescript
ในตัวอย่างหลังจากที่สั่ง script แล้วก็สั่งคำสั่ง ls ต่อ. ก็หมายความว่าผลลัพธ์ของ ls ก็จะถูกบันทึกในไฟล์ typescript
$ cat typescript Script started on Mon Feb 13 21:02:35 2006 $ ls bin/ dev/ home/ lost+found/ opt/ sbin/ typescript boot/ etc/ initrd/ media/ proc/ sys/ usr/ cdrom/ floppy/ lib/ mnt/ root/ tmp/ var/ $ exit Script done on Mon Feb 13 21:02:37 2006
คำสั่ง script รับอาร์กิวเมนต์เป็นชื่อไฟล์ที่ต้องการบันทึกด้วย เช่น script log.txt ก็จะเป็นการบันทึกสิ่งที่พิมพ์หรือแสดงในไฟล์ชื่อ log.txt. นอกจากนั้นยังมีตัวเลือก -t สำหรับแสดงเวลาที่พิมพ์หรือแสดงสิ่งต่างๆบนเทอร์มินอลด้วย. วิธีใช้ต้องรีไดเรก STDERR ไปเก็บไว้ในไฟล์เองเช่น
$ script -t log.txt 2> time.info
ตัวอย่างเป็นการบันทึกเทอร์มินอลไว้ในไฟล์ log.txt และเก็บข้อมูลที่เกี่ยวกับเวลาที่พิมพ์หรือแสดงไว้ในไฟล์ time.info
$ cat time.info 0.561127 20 0.060456 2 0.003580 1 2.395590 1 0.131139 2 0.116827 63 0.015795 60 0.001355 62 0.001024 20 0.002928 2 0.014579 6
ดูไฟล์ time.info แล้วก็ไม่ค่อยรู้เรื่องเท่าไรนักเพราะจริงๆแล้วไม่ได้ให้เราดู แต่ไฟล์นี้จะใช้กับโปรแกรม scriptreplay ซึ่งเหมือนกับเปิดวิดิโอให้เราดู. อัีนนี้ต้องลองดูเองครับ.
$ scriptreplay time.info log.txt
จำได้ว่าแต่ก่อน (เมื่อหลายสิบปีที่แล้ว) คำสั่ง script มันก็เก็บแค่ไฟล์ แต่เดี๋ยวนี้มีแบบ replay ให้ดูด้วย. เข้าท่าดีครับ.
Comments: blogger