อะไรคือความแตกต่างระหว่างการรีบูท, init 6 และ shutdown -r ตอนนี้?


100

ฉันแค่ต้องการทราบความแตกต่างระหว่างสิ่งต่อไปนี้

  • reboot
  • init 6
  • shutdown -r now

และปลอดภัยที่สุดและดีที่สุดคืออะไร


1
พฤติกรรมที่แน่นอนของคำสั่งทั้งสามนี้จะแตกต่างกันไปตามระบบปฏิบัติการและระบบปฏิบัติการ
Thorbjørn Ravn Andersen

คำตอบ:


83

ไม่มีความแตกต่างในพวกเขา ภายในพวกเขาทำสิ่งเดียวกัน:

  • rebootใช้shutdownคำสั่ง (พร้อมสวิตช์ -r) คำสั่ง shutdown ใช้เพื่อฆ่ากระบวนการที่กำลังทำงานอยู่ทั้งหมดถอนติดตั้งระบบไฟล์ทั้งหมดและในที่สุดก็บอกเคอร์เนลให้ใช้คำสั่งพลังงาน ACPI แหล่งที่สามารถพบได้ที่นี่ ใน distros เก่าคำสั่งรีบูตก็บังคับให้กระบวนการไปสู่ทางออกโดยการออกSIGKILLสัญญาณ (ยังคงพบในแหล่งสามารถถูกเรียกด้วย-fตัวเลือก) ใน distros init 1 -> shutdown -rล่าสุดค่าเริ่มต้นให้สง่างามมากขึ้นและเป็นมิตร สิ่งนี้ทำให้มั่นใจได้ว่า daemons ทำความสะอาดตัวเองก่อนปิดเครื่อง

  • init 6บอกให้initกระบวนการปิดการทำงานของกระบวนการ / daemons ที่เกิดขึ้นทั้งหมดตามที่เขียนไว้ในไฟล์ init (ตามลำดับการกลับด้านที่เริ่ม) และสุดท้ายเรียกใช้shutdown -r nowคำสั่งเพื่อรีบูตเครื่อง

วันนี้มีความแตกต่างไม่มากนักเนื่องจากคำสั่งทั้งสองทำเหมือนกันและเคารพสคริปต์เริ่มต้นที่ใช้ในการเริ่มบริการ / daemons โดยเรียกใช้สคริปต์การปิดระบบสำหรับพวกเขา ยกเว้นreboot -f -r nowตามที่ระบุไว้ด้านล่าง

มีคำอธิบายเล็ก ๆ น้อย ๆ ที่นำมาจาก manpages ว่าทำไมreboot -fไม่ปลอดภัย:

  -f, --force
    บังคับให้หยุดทันทีปิดเครื่องรีบูต อย่าติดต่อระบบเริ่มต้น

แก้ไข:

ลืมที่จะพูดถึงในการกระจาย RHEL ที่กำลังจะมาคุณควรใช้systemctlคำสั่งใหม่เพื่อออก poweroff / รีบูต ตามที่ระบุไว้ใน manpages ของrebootและshutdownพวกเขาเป็น "คำสั่งดั้งเดิมพร้อมใช้งานสำหรับความเข้ากันได้เท่านั้น" และsystemctlวิธีการจะเป็นวิธีเดียวที่ปลอดภัย


บางครั้งการรีบูตของฉันค้างที่ SIGTERM มีวิธีที่จะรู้ว่าทำไมและยังมีวิธีในการหมดเวลารีบูตเช่นถ้ามันใช้เวลานานเกินไปมันจะบังคับให้รีบูตหรือไม่
CMCDragonkai

2
RHEL เวอร์ชันเหล่านั้นจะไม่ "กำลังจะมาถึง" อีกต่อไป ☺ตามที่อธิบายในรายละเอียดเพิ่มเติมที่unix.stackexchange.com/a/196014/5132บนระบบปฏิบัติการ systemd ดังกล่าวไม่มีความแตกต่างเลย พวกเขาไม่ใช่โปรแกรมที่แตกต่างกัน
JdeBP

คุณพิมพ์ผิดด้วยการพูดinit 1 -> shutdown -r?
deed02392

ลิงก์ของคุณเสีย
whoKnows

8

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

shutdown -r now 'Kernel upgrade requires reboot'

คุณยังสามารถทำการรีบูตตามกำหนดเวลาได้โดยระบุสิ่งอื่นนอกเหนือnowจากเวลารีบูต:

shutdown -r 22:00 'Work around kernel memory leak'

จากนั้นผู้ใช้ของคุณจะได้รับการแจ้งเตือนเป็นระยะเพื่อให้ออกมาตามเวลา - กระบวนการจะเป็นระเบียบและเป็นมืออาชีพมากขึ้น


5

ในแบบดั้งเดิมrebootและshutdown -r nowมีคำสั่งที่แตกต่างกันอย่างมากมาย ภายใต้การใช้งานทั่วไปrebootจะปลอดภัยต่อการใช้งานในโหมดผู้ใช้คนเดียวเท่านั้น

shutdown -r nowเป็นวิธีการทางบัญญัติในการปิดระบบ * nix และปลอดภัยกว่าในการใช้งานทั่วไปและเทียบเท่ากับการinit 6ใช้งาน

init (8) รีบูต (8)


4

บน FreeBSD มีความแตกต่างระหว่างและreboot shutdown -r nowจากrebootหน้าคน:

โดยปกติแล้วยูทิลิตี้การปิดระบบ (8) จะถูกใช้เมื่อระบบจำเป็นต้องหยุดหรือเริ่มการทำงานใหม่โดยแจ้งเตือนผู้ใช้ล่วงหน้าเกี่ยวกับการลงโทษที่กำลังจะเกิดขึ้นและการยกเลิกโปรแกรมเฉพาะอย่างสมบูรณ์


1
นี่ไม่ใช่คำถาม BSD แต่เป็นหลักฐานโดยแท็กในคำถามและการใช้ระดับการทำงานของระบบ 5 ในหนึ่งในคำสั่ง ☺
JdeBP

1
ฉันรู้ว่ามันเป็นคำถาม Linux ฉันคิดว่าบางคนอาจพบว่ามีประโยชน์ที่จะรู้ว่าในบางระบบนั้นมีความแตกต่าง
MariánČerný
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.