Showing posts with label system utilities. Show all posts
Showing posts with label system utilities. Show all posts

Sunday, August 22, 2010

syslog: The system events logger

commandsจาก the white book ที่สงกาอยู่ว่า ทำไมจึงไม่มีเรื่องราวของ syslog อยู่ให้เห็นเลย จึงหยิบมาพลิกดูอีกหน ก็พบเข้าเต็มๆ เขาเขียนไว้ในเรื่องของ Essentail Administrative Tools and Techniques โดยจำเพาะ ซุกอยู่ในนั้น

ขออภัยผู้แต่งไว้ ด้วย ที่ไปกล่าวหาว่า ไม่มีเรื่องนี้อยู่

จะมาเสริมให้ ต่อไปจากเล่มแดง อย่างเข้มข้น



ฝรั่งเข้ามีหนังสืออ้างอิง เมื่อพูดถึง UNIX อยู่ ๒ เล่ม เรียกขานกันตามสีปก คือ
  • the red book
  • the white book
ซึ่งจัดพิมพ์มานานมากแล้ว และปรับปรุงมาเรื่อย ให้เข้ากับการเปลี่ยนแปลงทางวิชาการ และความต้องการ โดยเฉพาะ เล่มแดง นั้นเ ชาวน้องลี ย่อมรู้จักดี เพราะทำมาโดยเฉพาะ ชัดๆเลย แต่สีปก ไม่ใช่แดงเท่านั้นเอง

เล่มที่ มะไฟ มี เป็น 2nd ed. ความจริง มีทั้งสอง edition แต่ฉบับแรก เปียกฝน เสียหายอ่านไม่ได้ไปหลายหน้าแล้ว เลยหามาใหม่ อ่านเล่น เพลินดี

Thursday, August 19, 2010

syslog: The system events logger

commands
มาต่อกันอีกจากตอนที่แล้ว ที่นำเสนอในส่วนของ รายละเอียดของ facilities ของแฟ้ม /etc/syslog.conf ที่จบลงตรงตัวอย่างของ ชื่อของ facility และ severity level ของข้อมูลข่าวสาร

ตัว syslogd เอง ก็สามารถใช้เป็น facility ได้ด้วยน่ะ ลืมบอกไป แต่ facility mark ก้ต้องระบุด้วย

การที่ข่าวสารจากโปรแกรม หรือ facility ต่างๆจะถูกบันทึกไว้นั้น ก็ต้องพิจารณาด้วยว่า สำคัญพอที่จะบันทึกไว้หรือเปล่า เป็นเกณฑ์ กล่าวคือ severity level นั้นต้องมากกว่า หรือ เท่ากับที่ระบุไว้เท่านั้น action ถึงจะได้รับการพิจารณาให้กระทำ หรือ ดำเนินการได้

ในตัวอย่างที่ยกมาถึง severity level นั้น เรียงลำดับความสำคัญลดหลั่นลงมาตามลำดับน่ะ อันสูง สำคัญมากกว่าอันต่ำลงมา ๑ ระดับ แบบนี้แหละ ก็ลองไปไล่ๆดูเอาน่ะพี่น้อง

สำหรับ action นั้น มีพอให้ดูเป็นแนวทางอยู่ดังนี้
  • filename เขียนข่าวสารนั้นๆ ลงเครื่องนั้นเลยด้วยชื่อแฟ้มที่ระบุมานี่แหละ
  • @hostname ให้ส่งข่าวสารไปยัง syslogd ของเครื่องที่ระบุชื่อไว้นี่แหละ
  • @ipaddress คล้ายๆข้างบนนั้น แต่เป็นหมายเลข ip แทนชื่อเครื่อง
  • user1,user2,... เขียนลงที่หน้อจอของ ผู้ใช้งานตอนที่เขา login
  • * เขียนข่าวสารไปยังผู้ใช้งานทุกคนที่ logged in อยู่
มีข้อควรระวังคือ ถ้าใช้ filename แล้ว ชื่อต้องระบุแบบสมบูรณ์

ในตำราเล่มแดง เขาบอกด้วยว่า สามารถใช้ร่วมกับ m4 ได้ด้วย ก็สะดวกไป แต่ต้องใช้ m4 เป็น

ในเครื่องของท่าน สมควรมีตัวอย่างให้ดูน่ะ ลองๆไล่ดูเอาเอง

ในเล่มแดง เขายกโปรแกรมที่ใช้บริการของ syslogd มาให้ดู เช่น
ftpd ใช้ facility daemon ที่ level เป็น err-debug และ
named ใช้ facility daemon และ level เป็น err-info

สำหรับการเขียนโปรแกรมด้วยนั้น ขอให้ติดต่อมาเป็นการส่วนตัวก็แล้วกัน แต่ถึงอย่างนั้น หากสนใจก็แวะไปดู แฟ้ม syslog.h ก่อนก็ได้ เพราะ[ซึ่ง]เรียกใช้เสมอ ไม่ว่าจะเป็น openlog(), syslog(), closelog()

ขอยุติไว้ตรงนี้ชั่วขณะหนึ่ง เพราะยังมีส่วนที่ต้องพูดกันถึงเรื่องการบันทึก ที่ พรบ. คอมพิวเตอร์ต้องการนั้น มันคืออะไร แล้วเราค่อยมาว่ากันอีกที แต่ตอนนี้

ขอขอบคุณที่อ่านมาจนถึงถ้อยคำนี้

Wednesday, August 18, 2010

syslog: The system events logger

commands
ต่อจาก ตอนแรก ที่หนุดไว้ตรง แฟ้มเอกสาร ที่ควบคุมพฤติกรรมการทำงานของ syslogd ที่เปรียบเสมือนเอกสารกำกับยา ที่ทุกคนที่รับยา พึงอ่าน

ตอนนี้ ใคร่ขอนำเสนอให้ได้สาระของแฟ้มดังกล่าวนั้น เท่าที่กำลังสติ ปัญญา จะอำนวยให้ (ที่นี่ มี สองท่าน ชื่อ ปัญญา แต่ สติ เนี่ย ของใคร ก็ของคนนั้น เด้อ)


จากท้ายตอนที่แล้วที่พูดถึงรูปแบบของแฟ้ม /etc/syslog.conf ที่เป็นแฟ้มเอกสารพื้นๆ, plain text, โดยอยู่ในรูป
selector<Tab>action
นั้น ได้ย้ำว่า <Tab> นั้น คือปุ่ม Tab บนแป้นพิมพ์เท่านั้น จะเป็น space หรืออย่างอื่นไม่ได้โดยเด็ดขาด ก็ขอให้ระมัดระวังในประเด็นนี้ให้มากด้วย มัน ปจฺจตฺตํ วิญฺญูหิ น่ะ ให้ลองดูเอง โดยเฉพาะพวกที่นิยม cut & paste นั้นแหละ ปวดหัวตายเอาง่ายๆ เพราะ หาที่ผิดพลาดไม่เจอ

ตัว selector เองนั้นจะมีไวยากรณ์เป็น facility.level ตัวอย่างเช่น
mail.info                /var/log/maillog
จะมีผลให้ข่าวสารจากระบบอีเล็กทรอนิคส์เมล์ ส่งไปเก็บไว้ที่แฟ้ม /var/log/maillog

นั่นคือ selector โดยเนื้อแท้แล้วก็คือ โปรแกรม, facility, ที่ส่งข้อมูลข่าวสาร และ ระดับความรุนแรงของข้อมูลข่าวสาร, level, ในรูปดังกล่าวมาแล้ว ซึ่ง ทั้งคู่นี้, facility & level ต้องเป็นชื่อที่กำหนดไว้แล้วเท่านั้นเอง จะเขียน หรือ ผลิตมาเอามิได้เลย แลพอแยก facility ออกเป็นกลุ่มได้ดังนี้
  • กุล่มของ kernel
  • กลุ่มของโปรแกรมอรรถประโยชน์ทั่วไป
  • กลุ่มของโปรแกรมที่เขียนขึ้นมาสำหรับใช้งานประจำเครื่องนั้นๆ
  • กลุ่มอื่นๆนอกไปจากนี้แล้ว รวมๆเรียกว่า user
นอกจากนี้ selector ยังสามารถใช้อีก ๒ คำ คือ * และ none ที่หมายถึง ทุกอย่าง หรือ ไม่เลยสักอย่าง

facility สามารถมีได้หลายตัว แต่ละตัว แยกกันด้วย comma ขณะเดียวกัน selector เอง ก็สามารถมีได้หลายตัวด้วยเช่นกัน โดยแยกกันด้วย semi-colon

ทุกสิ่ง ทุกอย่าง ล้วนแต่เอามา OR กันทั้งนั้น ข้อมูลข่าวสารใดใด ที่มี selector ตรง กับที่กำหนดไว้ ก็จะถูกนำไปยัง หรือ ส่งไปที่ action นั้นนั้น ตัวอย่างของ facility ก็ได้แก่
  • kern
  • mail
  • daemon
  • auth
  • cron
  • mark
  • fpt
และตัวอย่างของ severity levels ก็ได้แก่
  • emerg
  • alert
  • crit
  • err
  • warning
  • notice
  • info
  • debug
ความหมายของแต่ละคำ ใคร่ขอรบกวนให้ท่านไปศึกษาเอาเองจากระบบของท่าน ยกตัวอย่างเช่น mark นั้น เขาเอาไว้สำหรับบันทึกวันเดือนปีเวลา ที่ช่วงระยะใดๆที่กำหนดไว้ล่วงหน้า ซึ่งอันนี้ มีประโยชน์มาก เพราะอย่างน้อยก็ทราบว่า ปัญหาเกิดขึ้นในช่วงเวลาใด มันแคบลงมามาก ซึ่งยังดีกว่าที่จะรู้ว่า มันเกิดขึ้นเมื่อคืนนี้ หากเราสามารถกำหนดได้ว่า เมื่อคืนนี้ ที่เกิดเรื่อง อยู่ระหว่างชั่วโมงไหน ดั่งนี้ เป็นต้น

ตำราเขาเล่าเรื่องขำขำแบบฝรั่งเอาไว้ว่า หลาย sites ทีเดียว ที่เกิดปัญหาลึกลับ เพราะเครืองมันดับเอากลางดึก ทุกคืน ต่อเมื่อสืบทราบความจริงจึงทราบว่า เป็นเพราะแม่บ้านทำความสะอาด เธอนำเครื่องดูดฝุ่นมาเสียบเข้ากับเต้าเสียบไฟฟ้า ที่ใช้ร่วมกันกับคอมพิวเตอร์ ผลน่ะหรือ ไฟฟ้าก็กระเพื่อมน่ะซี แล้วอีทีนี้ คอมพิวเตอร์ หรืออุปกรณ์พ่วงอื่นๆ ก็พลอยดับ หรือ ล่ม ไป ก็เท่านั้นเอง, (อยู่ในหน้า ๒๐๙ เล่มแดง)

Tuesday, August 17, 2010

syslog: The system events logger

commands
ต่อจาก ตอนก่อนหน้านี้น่ะ ยกยอดมาเลย ดูดีกว่า

syslog เป็นโปรแกรมที่จัดการข้อมูลทั้งจาก kernel และ โปรแกรมอรรถประโยชน์ของระบบ เขียนโดย Eric Allman จาก Berkeley โปรแกรมนี้ มีข้อดีที่สำคัญ ๒ ประการคือ
  1. ทำให้ผู้พัฒนาโปรแกรม เป็นอิสระจากความจำเป็นที่ต้องมีการบันทึก log และ
  2. เอื้ออำนวยให้ ผู้บริหารระบบสามารถควบคุมการเก็บ log ได้
ก่อนหน้านี้ ต่างคน ต่างมีอิสระในการบันทึก log ของตัวของตัวไป ผู้บริหารระบบ ไม่สามารถควบคุมได้ว่าข้อมูลอันใดที่จะเก็บไว้ หรือ สมควรเก็บไว้ และ จะเก็บไว้ที่ไหน

syslog มีความหยืดหยุ่นพอสมควร กล่าวคือสามารถเรียงลำดับข่าวสารจากแหล่งกำเนิด และ ความสำคัญ(รวมๆเรียกแบบเหมาโหลว่า severity [security ขออภัย คำนี้ คัดลอกมาผิดครับ ที่ถูกคือ ซิเวียริตี้] level) ได้ และเปิดช่องทางของข่าวสารอันนั้น ไปยังจุดหมายปลายทางใดใดได้ เช่นลง log หรือ บน terminal ของผู้ใช้งานเอง หรือ เครื่องอื่นๆ ก้ยังได้

ความสามารถในการที่จะเป็นศูนย์กลางการ log ข่าวสารของเครือข่ายนี้เอง เป็นคุณสมบัติเด่นอันหนึ่งของเขา

syslog ประกอบด้วยสามองค์ใหญ่ๆคือ
  1. syslogd และ /etc/syslog.conf ตัวโปรแกรมที่ดำเนินการบันทึก และ แฟ้มที่บ่งบอกพฤติกรรมของเขา
  2. openlog, syslog,closelog รูทีนสำคัญๆที่อยู่ใน library ที่ผู้พัฒนาโปรแกรมใช้สำหรับส่งข้อมูลไปให้กับ syslogd และ
  3. logger คำสั่งในระดับผู้ใช้งาน ที่สามารถเรียกใช้เพื่อส่ง log ต่างๆ

syslogd อยู่ที่ /usr/sbin ส่วน logger อยุ่ที่ /usr/bin และ syslog เป็นรูทีนใน library ที่เป็นส่วนหนึ่งของ C standard library.

การทำงาน จะเป็นลักษณะนี้ โดยที่แรกเริ่ม syslogd จะวิ่งเมื่อเปิดระบบปฏิบัติการ โปรแกรมที่ทำงานร่วมกับ syslog จะเขียน log ลงไปยังแฟ้มพิเศษ ชื่อ /dev/log ส่วน syslogd จะอ่านข่าวสารจากแฟ้มนี้ ปรึกษาแฟ้มที่กำหนดพฤติกรรมของเขา แล้วแยกกระจายไปยังปลายทางต่างๆ ตามที่กำหนดไว้. syslogd จะอ่านข่าวสารต่างๆจาก kernel ด้วยเช่นกัน โดยอ่านจากอุปกรณ์ /dev/klog

สัญญาณควบคุม HUP จะทำให้ syslogd ปิดแฟ้ม log อ่านแฟ้มที่ควบคุมพฤติกรรมของเขาใหม่อีกครั้งหนึ่ง และ เริ่มต้นการบันทึกอีกระลอกใหม่ นั่นก็หมายความว่า หากมีการเปลี่ยนแปลงใดใดกับแฟ้มควบคุมพฤติกรรมของ syslogd แล้ว ท่านต้อง ส่งสัญญาณ HUP ให้กับ syslogd เพื่อว่า การเปลี่ยนแปลงนั้นๆ จะมีผลบังคับใช้ สัญญาณควบคุม TERM จะเป็นการสั่งยุติการทำงานของ syslogd

syslogd เขาจัเขียน process ID, PID, ไว้ที่แฟ้ม /var/run/syslog.pid ดังนั้น จึงสะดวกมาก สำหรับการสั่ง หรือ ส่งสัญญาณ ไปยัง process นั้นๆ ดังนี้ (โปรดใช้ความละเอียดถี่ถ้วนเป็นอย่างยิ่ง)
kill   -1   `/bin/cat /var/run/syslog.pid`
สัญญาณส่งผ่านคำสั่ง kill โดยเป็น option ของคำสั่ง ตามรูปแบบที่นำเสนอนี้ 1 หรือ HUP คือสัญญาณดังกล่าว

การบีบอัด และโยกย้ายแฟ้ม log จาก syslogd โดยพละการนั้น ไม่ดี และผลเสียมากเกินคาดคิดเลยทีเดียว ปกติระบบจะมีโปรแกรมเล็กๆช่วยงานลักษระนี้อยู่แล้ว

ในลำดับถัดไปจะนำเสนอส่วนของการควบคุมพฤติกรรมของ syslogd ซึ่งก็คือรายละเอียดของแฟ้ม /etc/syslog.conf ซึ่งสาระของแฟ้มนี้เขียนขึ้นด้วยอักษรธรรมดาๆ ไม่ต้องการอะไรมาก โดยมีข้อกำหนดว่า บรรทัดว่างๆ กับ บรรทัดที่ขึ้นต้นด้วย # นั้น มันจะไม่สนใจ มันจะสนใจก็ต่อเมื่อ บรรทัดนั้นๆ อยู่ในรูปแบบดังนี้
selector<Tab>action
โดยที่ <Tab> คือปุ่ม Tab บนแป้นพิมพ์ของท่าน และเป็นปุ่ม Tab เพียงเท่านั้น จะเป็นอย่างอื่นไปเสียไม่ได้ สำหรับ selector และ action นั้น จะได้นำมาเล่าต่อไป๚

Sunday, October 12, 2008

mkisofs : บันทึกช่วยจำ

สืบเนื่องจากจาก บันทึกช่วยจำที่แล้ว ทำให้เกิดคำถามมาเองในใจว่า

เอ๊ ก็แล้วแฟ้ม ด้อทไอเอ้สโอ พวกนั้น สร้างมาได้อย่างไรกัน

ก็พอดี วันนี้ว่าง เพราะวันวานไปทำบุญที่เกาะเกร็ดมา เลยนั่งไล่ๆดูพอร์ทต่างๆ ซึ่งนิยมดูก็ sysutils พวกนี้แหละ ก็พบรายละเอียดอยู่ตัวหนึ่ง ที่บอกว่า ช่วยให้เราสร้างระบบ FreeBSD แล้วเขียนลง CD นี่ซิ อันนี้น่าสนใจมาก /usr/ports/sysutils/cdroot ครับ ยิ่งพอทราบว่าเป็น shell script ด้วยแล้ว ยิ่งชอบไปใหญ่เลย ทีนี้

จะไม่ขอลงรายละเอียดหรอกน่ะว่ามีอะไรมั่ง แต่เป็น habit ของ มะขาม ที่ ต้องอ่านเอกสาร ที่มีมาด้วยไปก่อนซะทุกครั้ง แลจากแฟ้ม README ทำให้ทราบว่า เขาสร้างแฟ้มพวก .iso กันง่ายๆดังนี้

# mkisofs -R -b boot-image -o data.iso $CDROOT

options ต่างๆนั้น อธิบายตัวเองได้ชัดเจนอยู่ อย่างกับว่า -b ก็บอกว่าซีดีแผ่นนี้บู้ตได้น่ะ, -o ก็บอกว่า แฟ้มที่เขียนขึ้นมานั้นชื่อ data.iso ส่วน -R ก็บอกว่าใช้กับพวกแผ่น rock ridge interchange protocol ได้ด้วย แลอันสุดท้ายก็บอกว่า เป็นตัวแปรของ shell ที่ชี้ไปยังแฟ้มทั้งหลายที่จะเขียน ส่วนที่ว่า จะชี้ไปบ้านนี้องณี หรือบ้านพี่แสน ก็แล้วแต่ ไม่ขอยุ่งด้วยยย

ง่ายกว่าการไปอ่าน mkisofs(8) เยอะเลย

ของฝากครับ อืมม ยกให้ใครดีล่ะ เอ้า เจ้ากรรมนายเวร กระทง ก็แล้วกัน เผื่อจะได้หมดกรรมหมดเวรกันมั่ง นะ หากจะมีส่วนดีอยู่บ้างก็โยนให้ กระทง ไปเถอะ

View My Stats