บันทึกด้วย 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