ทำไม“ shutdown -r now” ทำงานแตกต่างจาก“ reboot -f” บน Debian Linux


11

ฉันเพิ่งต้องจัดการกับปัญหาเมาท์จุดไคลเอนต์ / เซิร์ฟเวอร์ NFS ที่น่ารำคาญเป็นระยะ ๆ เมื่อปัญหาเกิดขึ้นกับลูกค้าฉันไม่สามารถเลิกเมานต์พร้อมกับพฤติกรรมแปลก ๆ ความละเอียดเฉพาะที่ฉันมีอยู่ในปัจจุบันคือรีบู๊ตไคลเอนต์

แต่shutdown -r nowไม่ได้ผลเลย ฉันได้ค้นพบตั้งแต่reboot -fนั้นซึ่งจะรีบูตระบบ ทำไม? ฉันอ่าน man pages แล้ว แต่ดูเหมือนว่าไม่มีอะไรจะตอบคำถามของฉัน

ทำไมถึงมีshutdown -r nowพฤติกรรมแตกต่างจากที่อื่นreboot -f?

(ฉันยังคงแก้ไขปัญหา NFS ต่อไป แต่นั่นไม่ใช่คำถามของฉันที่นี่)

คำตอบ:


20

จากหน้าคนปิดเครื่อง:

เมื่อเวลาผ่านไปการปิดระบบจะส่งการร้องขอไปยัง init (8) daemon เพื่อทำให้ระบบลงใน runlevel ที่เหมาะสม

initเริ่มและหยุดงานขณะที่ระบบเปลี่ยนระดับน้ำ เมื่อเข้าสู่ runlevel 6 เนื่องจากการรีบูตระบบจะรันสคริปต์ทั้งหมดใน /etc/rc6.d เนื่องจากระบบของคุณไม่ตอบสนองshutdownอาจเป็นไปได้ว่าสคริปต์ใน/etc/rc6.d(อาจเป็นK05nfs-commonเพราะปัญหา NFS ของคุณ) ติดอยู่ไม่อนุญาตให้ลำดับการปิดระบบเสร็จสิ้น ในความเป็นจริงสิ่งสุดท้ายที่ init วิ่งเมื่อมีการเปลี่ยนแปลงไปยังระดับ reboot -d -f -i6

reboot -f ข้ามสคริปต์ทั้งหมดและรีบูตระบบโดยตรง


ขอบคุณมากที่เชื่อมโยงคำตอบของคุณกับบริบทของฉัน
Stu Thompson

12

shutdownแนะนำinitให้เริ่มขั้นตอนการปิดระบบซึ่งเกี่ยวข้องกับการให้ผู้ใช้ที่ล็อกอินทราบว่าระบบกำลังปิดตัวลงการฆ่ากระบวนการทั้งหมดอย่างสง่างามการถอนการเชื่อมต่อและการซิงค์ไดรฟ์และอื่น ๆ คุณกำลังถูกแขวนที่นี่เพราะกระบวนการที่รอให้ IO มีแนวโน้มที่จะฆ่ายากมากและการติดตั้ง NFS ที่ติดอยู่ของคุณจะไม่สามารถยกเลิกการต่อเชื่อมได้

reboot -fในทางกลับกันให้รีบูทเซิร์ฟเวอร์ทันทีโดยไม่ดำเนินการใด ๆ ( rebootเป็นการinitเรียกโปรแกรมเพื่อปิดเซิร์ฟเวอร์โดยไม่มีการ-fตั้งค่าสถานะมันจะตรวจสอบเพื่อดูinitว่าคิดว่ามันกำลังรีบูตเครื่องอยู่หรือไม่หากไม่ก็จะทำการเรียกshutdownเพื่อเริ่มกระบวนการแทน)


ขอบคุณมากที่เชื่อมโยงคำตอบของคุณกับบริบทของฉัน
Stu Thompson

4

เนื่องจาก 'reboot -f' ไม่เข้าสู่ runlevel 0 - มันบอกให้ระบบปฏิบัติการกำหนดค่าเริ่มต้นให้กับ CPU โดยตรง หน้าคนในกล่อง Linux ที่ใกล้ที่สุดของฉันพูดว่า:

 -f     Force halt or reboot, don't call shutdown(8)

หน้าคนปิดอธิบายเพิ่มเติม


1

หากคุณใช้intrตัวเลือกในการเมาท์ NFS ของคุณคุณshutdown -r nowควรจะสามารถฆ่ากระบวนการที่รอ NFS IO ให้เสร็จสมบูรณ์ได้ ซึ่งอาจส่งผลให้เกิดความเสียหายของไฟล์ แต่น่าจะไม่เกินshutdown -fสร้าง

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