ค้นหาเว็บไซต์

ซีรี่ส์ RHCSA: การจัดการแพ็คเกจ Yum การทำงานอัตโนมัติด้วย Cron และบันทึกการตรวจสอบระบบ - ตอนที่ 10


ในบทความนี้ เราจะทบทวนวิธีการติดตั้ง อัปเดต และลบแพ็คเกจใน Red Hat Enterprise Linux 7 นอกจากนี้เรายังจะกล่าวถึงวิธีการทำงานอัตโนมัติโดยใช้ cron และจะจบคู่มือนี้โดยอธิบายวิธีค้นหาและตีความไฟล์บันทึกของระบบ โดยเน้นที่การสอนคุณว่าเหตุใดสิ่งเหล่านี้จึงเป็นทักษะที่จำเป็นสำหรับผู้ดูแลระบบทุกคน

การจัดการแพ็คเกจผ่าน Yum

หากต้องการติดตั้งแพ็คเกจพร้อมกับการขึ้นต่อกันทั้งหมดที่ยังไม่ได้ติดตั้ง คุณจะใช้:


yum -y install package_name(s)

โดยที่ package_name(s) แสดงถึงชื่อแพ็กเกจจริงอย่างน้อยหนึ่งชื่อ

ตัวอย่างเช่น หากต้องการติดตั้ง httpd และ mlocate (ตามลำดับ) ให้พิมพ์


yum -y install httpd mlocate

หมายเหตุ: ตัวอักษร y ในตัวอย่างด้านบนข้ามข้อความยืนยันที่ yum แสดงก่อนที่จะทำการดาวน์โหลดและติดตั้งโปรแกรมที่ร้องขอจริง คุณสามารถปล่อยมันไว้ได้ถ้าคุณต้องการ

ตามค่าเริ่มต้น yum จะติดตั้งแพ็คเกจด้วยสถาปัตยกรรมที่ตรงกับสถาปัตยกรรมระบบปฏิบัติการ เว้นแต่จะถูกลบล้างด้วยการต่อท้ายสถาปัตยกรรมแพ็คเกจต่อท้ายชื่อ

ตัวอย่างเช่น บนระบบ 64 บิต yum install package จะติดตั้งแพ็คเกจเวอร์ชัน x86_64 ในขณะที่ yum install package.x86 (ถ้ามี) จะติดตั้ง 32 บิต

จะมีบางครั้งที่คุณต้องการติดตั้งแพ็คเกจ แต่ไม่ทราบชื่อที่แน่นอน ตัวเลือก ค้นหาทั้งหมด หรือ ค้นหา สามารถค้นหาที่เก็บที่เปิดใช้งานในปัจจุบันสำหรับคำหลักบางคำในชื่อแพ็คเกจและ/หรือในคำอธิบายเช่นกัน ตามลำดับ

ตัวอย่างเช่น,


yum search log

จะค้นหาที่เก็บที่ติดตั้งไว้เพื่อหาแพ็คเกจที่มีคำว่า log ในชื่อและบทสรุป


yum search all log

จะค้นหาคำหลักเดียวกันในคำอธิบายแพ็คเกจและช่อง url เช่นกัน

เมื่อการค้นหาส่งคืนรายการแพ็คเกจ คุณอาจต้องการแสดงข้อมูลเพิ่มเติมเกี่ยวกับแพ็คเกจบางส่วนก่อนทำการติดตั้ง เมื่อนั้นตัวเลือก ข้อมูล จะมีประโยชน์:


yum info logwatch

คุณสามารถตรวจสอบการอัปเดตเป็นประจำด้วยคำสั่งต่อไปนี้:


yum check-update

คำสั่งดังกล่าวจะส่งคืนแพ็คเกจที่ติดตั้งทั้งหมดซึ่งมีการอัพเดตให้ใช้งาน ในตัวอย่างที่แสดงในภาพด้านล่าง เฉพาะ rhel-7-server-rpms เท่านั้นที่มีการอัปเดต:

จากนั้นคุณสามารถอัปเดตแพ็คเกจนั้นเพียงอย่างเดียวด้วย


yum update rhel-7-server-rpms

หากมีหลายแพ็คเกจที่สามารถอัปเดตได้ yum update จะอัปเดตทั้งหมดพร้อมกัน

แล้วจะเกิดอะไรขึ้นเมื่อคุณทราบชื่อของไฟล์ปฏิบัติการ เช่น ps2pdf แต่ไม่รู้ว่ามีแพ็คเกจใดบ้าง คุณสามารถค้นหาด้วย yum whatprovides “*/[executable] ”:


yum whatprovides “*/ps2pdf”

ในตอนนี้ เมื่อต้องการลบแพ็คเกจ คุณสามารถทำได้โดยใช้ yum Remove package ง่ายใช่มั้ย? นี่แสดงให้เห็นว่า yum เป็นตัวจัดการแพ็คเกจที่สมบูรณ์และทรงพลัง


yum remove httpd

อ่านเพิ่มเติม: 20 คำสั่ง Yum เพื่อจัดการการจัดการแพ็คเกจ RHEL 7

RPM ธรรมดาแบบเก่าที่ดี

RPM (หรือที่เรียกว่า RPM Package Manager หรือเดิมคือ RedHat Package Manager) ยังสามารถใช้เพื่อติดตั้งหรืออัปเดตแพ็คเกจเมื่อมาในรูปแบบสแตนด์อโลน .rpm แพ็คเกจ

มักใช้กับแฟล็ก -Uvh เพื่อระบุว่าควรติดตั้งแพ็กเกจหากไม่มีอยู่ หรือพยายามอัปเดตหากติดตั้งไว้ (-U) โดยสร้าง เอาต์พุตแบบละเอียด (-v) และแถบความคืบหน้าที่มีเครื่องหมายแฮช (-h) ในขณะที่ดำเนินการ ตัวอย่างเช่น,


rpm -Uvh package.rpm

การใช้ rpm โดยทั่วไปอีกประการหนึ่งคือการสร้างรายการแพ็คเกจที่ติดตั้งในปัจจุบันด้วยrpm -qa (ย่อมาจากคำว่า query all):


rpm -qa

อ่านเพิ่มเติม: คำสั่ง 20 RPM เพื่อติดตั้งแพ็คเกจใน RHEL 7

การกำหนดเวลางานโดยใช้ Cron

Linux และระบบปฏิบัติการที่คล้ายกับ Unix อื่นๆ มีเครื่องมือที่เรียกว่า cron ซึ่งช่วยให้คุณสามารถกำหนดเวลางาน (เช่น คำสั่งหรือเชลล์สคริปต์) ให้ทำงานเป็นระยะๆ Cron ตรวจสอบไดเรกทอรี /var/spool/cron ทุกนาทีเพื่อหาไฟล์ที่ตั้งชื่อตามบัญชีใน /etc/passwd

เมื่อดำเนินการคำสั่ง ผลลัพธ์ใดๆ จะถูกส่งไปยังเจ้าของ crontab (หรือถึงผู้ใช้ที่ระบุในตัวแปรสภาพแวดล้อม MAILTO ใน /etc/crontab แข็งแกร่ง> ถ้ามี)

ไฟล์ Crontab (ซึ่งสร้างขึ้นโดยการพิมพ์ crontab -e และกด Enter) มีรูปแบบดังต่อไปนี้:

ดังนั้น หากเราต้องการอัปเดตฐานข้อมูลไฟล์ในเครื่อง (ซึ่งใช้โดยการค้นหาเพื่อค้นหาไฟล์ตามชื่อหรือรูปแบบ) ทุกวันที่สองของเดือนเวลา 2:15 น. เราจำเป็นต้องเพิ่มสิ่งต่อไปนี้ crontab รายการ:


15 02 2 * * /bin/updatedb

รายการ crontab ด้านบนเขียนว่า “เรียกใช้ /bin/updatedb ในวันที่สองของเดือน ทุกเดือนของปี โดยไม่คำนึงถึงวันในสัปดาห์ เวลา 2:15 น. ” ตามที่ฉันแน่ใจว่าคุณเดาได้แล้ว สัญลักษณ์ดาวถูกใช้เป็นอักขระตัวแทน

หลังจากเพิ่มงาน cron คุณจะเห็นว่าไฟล์ชื่อ root ถูกเพิ่มเข้าไปภายใน /var/spool/cron ดังที่เราได้กล่าวไว้ข้างต้น ไฟล์นั้นแสดงรายการงานทั้งหมดที่ crond daemon ควรรัน:


ls -l /var/spool/cron

ในภาพด้านบน crontab ของผู้ใช้ปัจจุบันสามารถแสดงได้โดยใช้ cat /var/spool/cron/root หรือ


crontab -l

หากคุณต้องการรันงานโดยมีความละเอียดมากขึ้น (เช่น วันละสองครั้งหรือสามครั้งต่อเดือน) cron ยังสามารถช่วยคุณทำเช่นนั้นได้

ตัวอย่างเช่น หากต้องการรัน /my/script ในวันที่ 1 และ 15 ของแต่ละเดือนและส่งเอาต์พุตใดๆ ไปที่ /dev/null คุณสามารถ เพิ่มสองรายการ crontab ดังนี้:


01 00 1 * * /myscript > /dev/null 2>&1
01 00 15 * * /my/script > /dev/null 2>&1

แต่เพื่อให้งานบำรุงรักษาง่ายขึ้น คุณสามารถรวมทั้งสองรายการเป็นรายการเดียวได้:


01 00 1,15 * *  /my/script > /dev/null 2>&1

ตามตัวอย่างก่อนหน้านี้ เราสามารถเรียกใช้ /my/other/script เวลา 1:30 น. ในวันแรกของเดือนทุกๆ สามเดือน:


30 01 1 1,4,7,10 * /my/other/script > /dev/null 2>&1

แต่เมื่อคุณต้องทำซ้ำงานบางอย่างทุกๆ “x ” นาที ชั่วโมง วัน หรือเดือน คุณสามารถแบ่งตำแหน่งที่ถูกต้องตามความถี่ที่ต้องการได้ รายการ crontab ต่อไปนี้มีความหมายเหมือนกับรายการก่อนหน้า:


30 01 1 */3 * /my/other/script > /dev/null 2>&1

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


@reboot    	Run when the system boots.
@yearly    	Run once a year, same as 00 00 1 1 *.
@monthly   	Run once a month, same as 00 00 1 * *.
@weekly    	Run once a week, same as 00 00 * * 0.
@daily     	Run once a day, same as 00 00 * * *.
@hourly    	Run once an hour, same as 00 * * * *.

อ่านเพิ่มเติม: 11 คำสั่งเพื่อกำหนดเวลางาน Cron ใน RHEL 7

การค้นหาและการตรวจสอบบันทึก

บันทึกของระบบจะอยู่ที่ (และหมุนเวียน) ภายในไดเร็กทอรี /var/log ตามมาตรฐานลำดับชั้นระบบไฟล์ Linux ไดเร็กทอรีนี้ประกอบด้วยไฟล์บันทึกเบ็ดเตล็ด ซึ่งถูกเขียนลงในไดเร็กทอรีย่อยที่เหมาะสม (เช่น การตรวจสอบ, httpd หรือ samba ในภาพด้านล่าง) โดย daemons ที่เกี่ยวข้องระหว่างการทำงานของระบบ:


ls /var/log

บันทึกที่น่าสนใจอื่นๆ ได้แก่ dmesg (ประกอบด้วยข้อความทั้งหมดจากเคอร์เนลริงบัฟเฟอร์), ปลอดภัย (บันทึกความพยายามในการเชื่อมต่อที่ต้องมีการรับรองความถูกต้องของผู้ใช้), ข้อความ (ข้อความทั่วทั้งระบบ) และ wtmp (บันทึกการเข้าสู่ระบบและการออกจากระบบของผู้ใช้ทั้งหมด)

บันทึกมีความสำคัญมากตรงที่ช่วยให้คุณเห็นภาพรวมของสิ่งที่เกิดขึ้นตลอดเวลาในระบบของคุณ และสิ่งที่เกิดขึ้นในอดีต เครื่องมือเหล่านี้เป็นเครื่องมืออันล้ำค่าในการแก้ไขปัญหาและติดตามเซิร์ฟเวอร์ Linux และมักใช้กับ คำสั่ง tail -f เพื่อแสดงเหตุการณ์ตามเวลาจริงที่เกิดขึ้นและบันทึกไว้ในบันทึก

ตัวอย่างเช่น หากคุณต้องการแสดงเหตุการณ์ ที่เกี่ยวข้องกับเคอร์เนล ให้พิมพ์คำสั่งต่อไปนี้:


tail -f /var/log/dmesg

เหมือนกันถ้าคุณต้องการดูการเข้าถึงเว็บเซิร์ฟเวอร์ของคุณ:


tail -f /var/log/httpd/access.log

สรุป

หากคุณทราบวิธีจัดการแพ็คเกจอย่างมีประสิทธิภาพ กำหนดเวลางาน และตำแหน่งที่จะค้นหาข้อมูลเกี่ยวกับการทำงานในปัจจุบันและในอดีตของระบบของคุณ คุณสามารถมั่นใจได้ว่าคุณจะไม่พบกับเรื่องประหลาดใจบ่อยครั้งนัก ฉันหวังว่าบทความนี้จะช่วยให้คุณเรียนรู้หรือฟื้นฟูความรู้เกี่ยวกับทักษะพื้นฐานเหล่านี้

อย่าลังเลที่จะติดต่อเราโดยใช้แบบฟอร์มติดต่อด้านล่างหากคุณมีคำถามหรือความคิดเห็นใดๆ