Ubuntu ติดตามการตั้งค่าสถานะ“ ต้องรีสตาร์ทระบบ” ใน motd อย่างไร


77

ฉันมีเซิร์ฟเวอร์ Ubuntu บางตัว (8.10, 9.10) ที่ได้รับการตั้งค่าให้ติดตั้งโปรแกรมปรับปรุงความปลอดภัยโดยอัตโนมัติ บางครั้งการปรับปรุงเหล่านี้ต้องมีการรีสตาร์ทระบบและสตริงนี้จะแสดงในmotd:

*** System restart required ***

ในการรับการแจ้งเตือนเกี่ยวกับสิ่งเหล่านี้ฉันวางแผนที่จะเขียนการทดสอบ Nagios เพื่อตรวจสอบว่าเซิร์ฟเวอร์ต้องการการรีบูตหรือไม่ ดังนั้นคำถามของฉัน:

มีวิธีที่ดีกว่าการแยกวิเคราะห์/etc/motdเพื่อค้นหาว่าจำเป็นต้องรีบูตหรือไม่

คำตอบ:


94

/var/run/reboot-requiredตรวจสอบการปรากฏตัวของ


17
หมายเหตุ: สำหรับระบบเดเบียน/var/run/reboot-requiredจะไม่ถูกสร้างขึ้นหากไม่ได้update-notifier-commonติดตั้งแพ็คเกจ
ปีเตอร์ V. Mørch

7
โปรดทราบว่าupdate-notifier-commonถูกลบใน Debian Jessie unattended-upgradesตอนนี้มีสคริปต์ง่าย ๆ/etc/kernel/postinst.d/unattended-upgradesซึ่งtouchเป็นไฟล์ เป็นอีกหนึ่งแพคเกจขนาดเล็กที่เข้ากันได้กับรูปแบบของreboot-notifier update-notifier-common
ypid

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

37

สคริปต์ที่สร้างการรีบูตส่วนที่ต้องการของ motd คือ / usr / lib / update-notifier / update-motd-reboot-required ซึ่งมี:

#!/bin/sh -e
#
# helper for update-motd

if [ -f /var/run/reboot-required ]; then
        cat /var/run/reboot-required
fi

เช็ค nagios ของคุณสามารถตรวจสอบว่ามี / var / run / reboot-required


2
+1 สำหรับการแสดงไฟล์ที่มีอยู่ในนี้
Wayne

เชลล์สคริปต์นั้นไม่ได้สร้างอะไรเลย มันจะแสดงเนื้อหาถ้ามันมีอยู่
Scott

26

นอกจากนี้ไฟล์ '/var/run/reboot-required.pkgs' จะแสดงรายการแพ็คเกจที่ร้องขอให้รีบูต ตัวอย่างเช่น:

$ cat /var/run/reboot-required.pkgs 
linux-image-2.6.32-28-generic
dbus
$

บน Ubuntu Lucid (10.4)


ฉันขอบคุณพระเจ้ามากฉันคิดถึงมันมาก!
Lapshin Dmitry

8

Debian และ Ubuntu แพคเกจสามารถเรียกการสร้างของ/var/run/reboot-required*พวกเขาในpostinstไฟล์โดยรันสคริปต์ผู้ช่วยเหลือ/usr/share/update-notifier/notify-reboot-required

ดังนั้นวิธีการ "อย่างเป็นทางการ" ในการประมวลผลการรีบูตจึงถูกจัดการโดยผู้ดูแลแพคเกจ ฉันได้ทำมันก่อนหน้านี้ในสคริปต์โดยการเปรียบเทียบเวลาบูตกับ mtimes ใน / boot


4
#!/bin/bash
if [ ! -f /var/run/reboot-required ]; then
        # no reboot required (0=OK)
        echo "OK: no reboot required"
        exit 0
else
        # reboot required (1=WARN)
        echo "WARNING: `cat /var/run/reboot-required`"
        exit 1
fi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.