วิธีการรีสตาร์ทเครื่อง Linux ผ่าน SSH หากระบบไฟล์รูทไม่ทำงาน


15

เช่นเดียวกับความอยากรู้ มีบางอย่างผิดพลาดกับเครื่อง Linux ทำให้ระบบไฟล์รูทแสดงเป็น "64Z" คำสั่งบางคำสั่งทำงาน, เช่นtop, dfและkill, แต่มีบางคำสั่งเช่นreboot"ไม่พบคำสั่ง" (เนื่องจากไม่สามารถอ่านระบบไฟล์รูท) และchmodเกิดข้อผิดพลาดในการแบ่งส่วน

มีวิธีใดบ้างที่จะรีสตาร์ทระบบเช่นไม่มีrebootโปรแกรมหรือไม่ ฉันพยายามkill -PWR 1(ส่ง SIGPWR เพื่อเริ่มต้น) แต่สิ่งนี้ดูเหมือนจะไม่ทำอะไรเลย

ส่วนใหญ่มันเป็นความอยากรู้ทางวิชาการ เพื่อนร่วมห้องที่กำลังทำงานอะไรก็ตามที่ทำงานกับฐานข้อมูลขนาดใหญ่ที่ทำให้เกิดความล้มเหลวก็จะทำการรีสตาร์ทเครื่องทันที


หวังว่านี้จะช่วยฉันจากปัญหาที่เกิดขึ้นในครั้งต่อไป ... [ cyberciti.biz/tips/reboot-linux-box-after-a-kernel-panic.html ]
gatoatigrado

คุณเห็นหรือไม่ว่าปัญหาเกี่ยวกับรูท fs ทำให้เกิดการตื่นตระหนกของเคอร์เนล?
Hanan N.

คำตอบ:


25

ลองรีบู๊ตด้วยคีย์ Magic sysrq:

echo b > /proc/sysrq-trigger

สำหรับข้อมูลเพิ่มเติมอ่านวิกิหรือเอกสารคู่มือเคอร์เนล


1
ขอบคุณ! นี่เป็นการรีบูตระบบ (น่าเสียดายสิ่งที่เกิดขึ้นกับระบบไฟล์รูทนั้นไม่สามารถกู้คืนได้ ... เศร้า)
gatoatigrado

5

RAC (การ์ดการเข้าถึงระยะไกล) หรือ iLO (ไฟแบบรวม) หรือ MP (ตัวประมวลผลการจัดการ) จะช่วยให้คุณมีวิธีในการรีเซ็ตเซิร์ฟเวอร์ของคุณ

ตัวอย่างเช่นหากคุณมี Dell PowerEdge พร้อมการ์ด RAC (เรียกว่า DRAC) คุณสามารถใช้พลังงานรอบเซิร์ฟเวอร์ผ่าน ssh:

ssh drac "racadm serveraction powercycle"

ตัวเลือกอื่นคือการใช้ Web-GUI สำหรับ RAC / iLO และทำสิ่งเดียวกัน

มีมาตรฐานแบบเปิดสำหรับสิ่งนี้เช่นกัน: IPMI


3

สิ่งที่น่าสนใจยิ่งกว่าคำตอบของ @Rush คือความสามารถในการรีสตาร์ท (และอีกมากมาย) ระบบแม้ว่าระบบจะไม่ตอบสนองต่อแป้นพิมพ์เลย แต่จะต้องตอบสนองต่อแพ็คเก็ต ping (ICMP)

ดูที่นี่สำหรับเอกสารฉบับเต็ม & คำแนะนำเกี่ยวกับวิธีการใช้งาน


4
วิธีการเกี่ยวกับการให้คำแนะนำสั้น ๆ / สรุปหลักการจริง ๆ แทนที่จะเป็นแค่ลิงก์
kizzx2

คุณต้องทำการตั้งค่าเล็กน้อยสำหรับแนวทางนั้น แต่เป็นความคิดที่เรียบร้อย
gatoatigrado

ฟังดูน่าสนใจ แต่ไม่มีความเสี่ยงด้านความปลอดภัยที่เกี่ยวข้องหรือไม่ การอนุญาตให้เซิร์ฟเวอร์รีบูตผ่านแพ็กเก็ต ICMP เดียวดูเหมือนว่าการโจมตีแบบปฏิเสธการให้บริการกำลังรอให้เกิดขึ้น
bgvaughan

@bgvaughan: ถูกต้องและที่ลิงก์ที่ฉันให้ไว้ข้างต้นมีข้อดีข้อเสียเกี่ยวกับมันและหนึ่งในนั้นคือความปลอดภัยแม้ว่าคุณสามารถ จำกัด ผู้ที่สามารถทำได้
Hanan N.

2

วิธีที่ง่ายที่สุดคือการเปลี่ยน runlevel

ใน Linux คุณสามารถทำสิ่งต่อไปนี้

Prompt# init 6

ข้อมูลเพิ่มเติมที่นี่: http://linux.about.com/od/itl_guide/a/gdeitl36t04.htm


1
สิ่งนี้จะไม่ทำงานในสถานการณ์นี้ คำสั่ง init อยู่ใน / sbin (อย่างน้อยใน Ubuntu) ดังนั้นจึงต้องมีการเข้าถึงระบบไฟล์
Sunny

1

ต้องมีการตั้งค่าก่อนหน้านี้ แต่ถ้าคุณคุ้นเคยกับการหยุดทำงานของเครื่องจักร (เช่นเนื่องจากคุณกำลังทำการพัฒนาในระดับต่ำ) คุณอาจต้องการตั้งค่าจ้องจับผิดเช่นเคอร์เนลหรืองานของผู้ใช้ที่รีบูตเครื่องโดยอัตโนมัติเมื่อ มันไม่ตอบสนอง ลินุกซ์สามารถใช้จ้องจับผิดฮาร์ดแวร์ถ้าเมนบอร์ดของคุณมีหนึ่งหรือจ้องจับผิดซอฟต์แวร์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.