October 23rd, 2008ทำความเข้าใจกับระบบไฟล์ของ *nix
คนที่เคยใช้ windows มาก่อน พอมาใช้งานระบบตระกูล unix (รวมทั้ง Linux ด้วย) ก็มักจะค่อนข้างงงงันกับชื่อโฟลเดอร์ต่างๆ ที่สั้น และไม่ค่อยสื่อความหมายเอาเสียเลย ไม่รู้จะไปหาอะไรที่ไหน แถมยังจำยากเสียอีก ส่วนหนึ่งก็แทบจะเป็นประเพณีหรือธรรมเนียมไปแล้ว เพราะชื่อไฟล์บางอย่างก็ถูกใช้มาตั้ง 30 ปี และแถมบางไฟล์บางกลุ่ม ยังมีความหมายและทำหน้าที่พิเศษบางอย่างเสียด้วย
ไฟล์ต่างๆ ในระบบ unix จะแบ่งเป็นชั้นๆ ส่วนบนสุดคือ / หรือที่มักจะเรียกกันว่า root directory ถ้าไปลอง ls ดูที่ root ก็มักจะเห็นไฟล์หรือโฟล์เดอร์เหล่านี้
/bin ย่อมาจาก binary เป็นหนึ่งในหลายแห่ง ที่เก็บโปรแกรมแอพลิเคชันและยูทิลิตี้ต่างๆ แต่โปรแกรมที่อยู่ใน /bin มักเป็นโปรแกรมสำคัญที่ใช้บ่อยในการทำงานของระบบ ตัวอย่างเช่น โปรแกรม shell หรือ โปรแกรมจัดการไฟล์อย่าง cp และ chmod เป็นต้น
/sbin นี่ก็ใช้เก็บโปรแกรมเหมือนกัน แต่ว่าจะเป็นเฉพาะโปรแกรมที่ถูกใช้โดย superuser เท่านั้น ซึ่งก็เป็นที่มาของชื่อด้วย คือ superuser-bin
/dev ย่อมาจาก device เป็นที่เก็บไฟล์ที่เกี่ยวข้องกับฮาร์ดแวร์ของระบบ เช่น จอภาพ, คีย์บอร์ด ฮาร์ดดิสก์ หรือ usbport รวมถึงพอร์ทต่างๆ ด้วย
/etc เอาไว้เก็บพวกไฟล์ที่เป็น system configuration ทั้งหลาย
/home เป็นที่เก็บโฮมไดเร็กทอรีของผู้ใช้ทั้งหลาย โดยจะมีการแบ่งย่อยลงไปอีกตามชื่อ login เช่น ผู้ใช้ที่มีชื่อล็อกอินเป็น joe จะมีโฮมไดเร็กทอรีเป็น /home/joe
/lib ย่อมาจาก library ซึ่งเอาไว้เก็บไฟล์ system library สำคัญๆ ทั้งหลาย ในระบบ Unix พวกไลบรารีเหล่านี้จะแชร์กันระหว่างโปรแกรม โดยไม่ได้รวมไว้ในไฟล์ binary แต่จะถูกโหลดมาใช้เมื่อต้องการเท่านั้น ดังนั้นการลบหรือย้ายที่ไฟล์ใน /lib แม้เพียงไฟล์เดียว อาจส่งผลให้โปรแกรมเป็นจำนวนมากไม่สามารถใช้งานได้
/mnt ย่อมาจาก mount เป็นไดเร็กทอรีมาตรฐานในการพ่วงอุปกรณ์เก็บข้อมูลอย่างฮาร์ดดิสก์ ถ้าต้องการดูว่ามีอุปกรณ์เก็บข้อมูลอะไรพ่วงอยู่บ้าง สามารถเรียกใช้คำสั่ง mount ได้
/tmp ย่อมาจาก temporary เป็นที่เก็บไฟล์ชั่วคราวของระบบ อะไรที่อยู่ในนี้ ถือว่าสามารถลบทิ้งได้ถ้าเสร็จงานแล้ว
/usr ไดเร็กทอรีนี้ค่อนข้างจิปาถะ เก็บตั้งแต่แอพลิเคชันของยูสเซอร์อย่างเกม หรือโปรแกรมวาดภาพ ไปจนถึงฟีเจอร์ต่างๆ ของระบบอย่างเช่นระบบช่วยเหลือเป็นต้น โดยทั่วไปจะถือว่าเป็นไฟล์ที่มีประโยชน์ แต่ไม่ได้จำเป็นถึงกับขาดไม่ได้ในการทำงานของระบบ
/var ย่อมาจาก variable เป็นที่เก็บของไฟล์ต่างๆ ที่มักจะเพิ่มจำนวนขึ้นเรื่อยๆ ตามเวลา เช่น เมล์ log file และไฟล์ฐานข้อมูล เป็นต้น




Bitmap Index เป็นอินเด็กซ์แบบหนึ่งซึ่งเริ่มมีใช้ตั้งแต่ Oracle 7.3 เป็นต้นมา โดยมีลักษณะสำคัญคือมีอัตราการบีบอัดข้อมูลที่สูงมาก ทำให้เหมาะต่อการใช้งานด้านดาต้าแวร์เฮาส์ และ OLAP มากกว่าอินเด็กซ์แบบ B-Tree ที่รู้จักกันโดยทั่วไป
สังเกต เห็นว่าเครื่อง Eee PC เริ่มทำงานช้าลง โดยเฉพาะอย่างยิ่งหลังจากบูตเครื่องใหม่ จากที่เคยเริ่มใช้งานได้เลย ผ่านไปซักเดือนกว่าๆ สังเกตได้ว่าต้องรอพักใหญ่กว่าเครื่องจะเริ่มรับคำสั่ง ตอนแรกก็ไม่รู้หรอกว่าเกิดอะไรขึ้น ต้องเสียเวลาจับสังเกตเอาโดยการเปิด Task Manager เอาไว้แล้วก็นั่งมองดูว่ากำลังทำอะไรอยู่ พบว่าหนึ่งในสาเหตุก็คือการที่ Windows XP กำหนดให้มีการตรวจสอบทุกครั้งว่ามี update อะไรใหม่ๆ มาบ้าง แล้วก็ดาวน์โหลดมาติดตั้งโดยอัตโนมัติ ผมอยากให้น้อง Eee กลับมาทำงานว่องไวเหมือนเดิม ก็เลยไปปิด หรือ Disable Automatic Updates เสีย
ช่วงนี้คิดว่าคงออกนอกเรื่องไปหน่อย แต่เอาเป็นว่า เขียนไว้กันตัวเองลืมด้วยก็แล้วกัน และเผื่อใครเจอปัญหาอย่างที่ผมเจอ จะได้รู้วิธีแก้ ผมมีความจำเป็นต้องติดตั้ง web server ตัวเล็กๆ ให้ทำงานอยุ่บน Windows XP เพื่อทดสอบงานด้าน Python โดยจำเป็นต้องเรียกใช้จาก Command Prompt หรือที่คนรุ่นเก่าๆ อาจจะเคยเรียกว่า DOS Prompt แล้วก็พิมพ์คำสั่งเอา และเพื่อความสะดวก ก็จำเป็นต้องกำหนดตัวแปร Path เพื่อให้สามารถเรียกใช้โปรแกรมจากไดเร็กทอรีต่างๆ กันได้โดยไม่จำเป็นต้องอ้างชื่อไดเร็กทอรียาวๆ
