ซีรี่ส์ 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
สรุป
หากคุณทราบวิธีจัดการแพ็คเกจอย่างมีประสิทธิภาพ กำหนดเวลางาน และตำแหน่งที่จะค้นหาข้อมูลเกี่ยวกับการทำงานในปัจจุบันและในอดีตของระบบของคุณ คุณสามารถมั่นใจได้ว่าคุณจะไม่พบกับเรื่องประหลาดใจบ่อยครั้งนัก ฉันหวังว่าบทความนี้จะช่วยให้คุณเรียนรู้หรือฟื้นฟูความรู้เกี่ยวกับทักษะพื้นฐานเหล่านี้
อย่าลังเลที่จะติดต่อเราโดยใช้แบบฟอร์มติดต่อด้านล่างหากคุณมีคำถามหรือความคิดเห็นใดๆ