จะหยุดเหมือนกับ“ shutdown -H” และ poweroff เหมือนกับ“ shutdown -P” หรือไม่


15

shutdownฉันไม่ได้พบคำตอบที่ชัดเจนให้กับความแตกต่างระหว่างสองตัวเลือกคำสั่ง

เป็นhaltเช่นเดียวกับshutdown -Hและpoweroffเช่นเดียวกับshutdown -P?


ที่เกี่ยวข้อง: unix.stackexchange.com/questions/8690/…
slm

คำตอบ:


26

มันค่อนข้างประวัติศาสตร์

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

poweroffโดยธรรมชาติจะหยุดระบบแล้วโทร ACPI ปิด

* วันhaltนี้ฉลาดพอที่จะโทรโดยอัตโนมัติpoweroffหากเปิดใช้งาน ACPI ในความเป็นจริงพวกเขามีหน้าที่เทียบเท่าตอนนี้


ที่น่าสนใจ: แล็ปท็อปของฉันที่ทำงาน Gentoo, /sbin/poweroffเป็น symlink /sbin/haltไป
phunehehe

ขอบคุณบาฮามาต! shutdownฉันกำลังพูดคุยเกี่ยวกับสองตัวเลือกคำสั่ง คำสั่งhaltเหมือนกันshutdown -Hและสั่งpoweroffเหมือนกันshutdown -Pไหม? @phunehehe ด้วย
ทิม

@phunehehe: ใช่ฉันค่อนข้างแน่ใจว่าพวกเขาเหมือนกันในตอนนี้ แต่ไม่อยากดู
bahamat

@Tim: ใช่ธงเหล่านั้นเหมือนกับการเรียกคำสั่ง อย่างที่ฉันพูดมันเป็นความแตกต่างทางประวัติศาสตร์
bahamat

1
ย้อนกลับไปในวันhaltเคยทำเช่นนั้น ไม่มีการปิดระบบอย่างเป็นระเบียบเพียงแค่หยุดสิ่งที่เครื่องทำอยู่ตอนนั้นและที่นั่น เป็นเรื่องปกติที่จะออกsync;sync;sync;haltเพื่อให้แน่ใจว่าบัฟเฟอร์ทั้งหมดถูกเขียนลงดิสก์
kurtm

15

พวกเขาไม่เหมือนกัน แต่มีความสัมพันธ์ใกล้ชิดมาก ในทางปฏิบัติหากคุณไม่ต้องการระบุเวลาใดเวลาหนึ่งที่จะปิดหรือจะบังคับทันทีมลทินรีบูต / หยุด / poweroff จริงๆมันไม่สำคัญว่าคุณเรียกใช้shutdown -hหรือhalt... หรือเทียบshutdown -r rebootสิ่งที่ไม่ได้สะดวกอย่างมากในอดีต แต่นี่เป็นวิธีการทำงานในขณะนี้ (โอกาสมากมายสำหรับความคลุมเครือหรือข้อผิดพลาดของผู้ใช้ถูกลบ / ปรับให้เรียบ)

/sbin/shutdownทำการ "ล้างข้อมูล" จำนวนมากเช่นการแจ้งเตือนผู้ใช้ปิดกั้นการเข้าสู่ระบบใหม่ในขณะที่ระบบปิด นอกจากนี้ยังสามารถบอกให้ปิดระบบในเวลาที่กำหนดหรือใน XX นาที - เตือนผู้ใช้ที่ลงชื่อเข้าใช้ทุกครั้งที่มีการปิดระบบ

นอกจากนี้ยังเปลี่ยน runlevel เป็น0( halt/ poweroff) หรือ6( reboot) ซึ่งกระตุ้นให้ระบบหยุดบริการที่กำลังทำงาน, unmount ดิสก์ ฯลฯ เพื่อเตรียมพร้อมสำหรับการหยุดจริง, poweroff หรือรีบูต

เมื่อทุกสิ่งที่จะทำก็แล้วโทร/sbin/halt, /sbin/rebootหรือ/sbin/poweroff( rebootและpoweroffมักจะ symlinks ไปhaltซึ่งตีความพวกเขาเป็นhalt -rและhalt -Pตามลำดับ)

อย่างไรก็ตามโปรดทราบว่าหากhalt/ reboot/ poweroffถูกเรียกเมื่อระบบไม่ได้อยู่ในระดับ runlevel มิ0ฉะนั้น6จะมีการเรียกshutdownให้ทำงานยกเว้นว่าจะใช้ตัวเลือก-fหรือforce

(รายละเอียดของการตีความระดับการทำงานอาจแตกต่างจาก distro ไป distro แต่0และ6ใช้ตามที่อธิบายไว้ใน Debian และ Debian-Derivatives เช่น Ubuntu)

ดู man pages สำหรับshutdownและhaltสำหรับข้อมูลเพิ่มเติม

ในที่สุดความแตกต่างระหว่างhaltและpoweroffสถานะคือhaltทำทุกอย่างเพื่อปิดเครื่องจริง ๆ (บนฮาร์ดแวร์บางชนิดนี่หมายความว่ามันหยดลงใน ROM bootloader หรือคล้ายกันบนฮาร์ดแวร์พีซีส่วนใหญ่จะหยุดทำงาน) ในขณะที่poweroffทำขั้นตอนสุดท้ายและ ปิด rebootแน่นอนเข้าสู่สถานะหยุดแล้วรีบูตคอมพิวเตอร์

BTW ค่าเริ่มต้นมักจะเป็นอย่างใดอย่างหนึ่งpoweroffหรือrebootแต่คุณสามารถใช้-Hเป็นอาร์กิวเมนต์shutdownเพื่อให้หยุดแทน สิ่งนี้ไม่ได้มีประโยชน์มากในกล่อง linux บนเครื่อง PC (แต่มีประโยชน์บนเครื่องเช่นกล่อง sparc ที่มี monitor boot firmware เป็นไปได้ว่ามันอาจเป็นประโยชน์สำหรับเครื่องใหม่ที่มีบรรทัดคำสั่ง EFI)


1
นี่เป็นคำตอบที่ใช้ Linux เป็นศูนย์กลางสำหรับคำถามที่ไม่เกี่ยวกับระบบปฏิบัติการ ไม่ใช่shutdownคำสั่งทั้งหมดที่มีความคิดในระดับการทำงาน shutdownส่วนใหญ่ไม่ได้เรียกhalt/ reboot/ poweroff; แดกดันมันอยู่ในระบบที่ไม่ใช่ลินุกซ์ไม่กี่ที่นี้ได้รับภูมิปัญญายังคงเป็นจริงในวันนี้ และสถานที่ที่เชื่อมโยงสัญลักษณ์ชี้ไม่จำเป็นต้องhalt; ไม่เพียงแค่นั้นในชุดเครื่องมือบางตัวพวกเขาไม่ใช่ลิงก์สัญลักษณ์เลย ดูunix.stackexchange.com/a/196471/5132สำหรับรายละเอียดเพิ่มเติม
JdeBP
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.