ความแตกต่างระหว่างhaltและshutdownคำสั่งคืออะไร?
ความแตกต่างระหว่างhaltและshutdownคำสั่งคืออะไร?
คำตอบ:
โดยทั่วไปคนหนึ่งใช้คำสั่งshutdown อนุญาตให้มีการหน่วงเวลาและข้อความเตือนก่อนปิดหรือรีบูตซึ่งเป็นสิ่งสำคัญสำหรับการบริหารระบบของเซิร์ฟเวอร์เชลล์ผู้ใช้หลายคน สามารถแจ้งให้ผู้ใช้ทราบล่วงหน้าถึงการหยุดทำงาน
ดังนั้นต้องใช้คำสั่ง shutdown เช่นนี้เพื่อหยุด / ปิดคอมพิวเตอร์ทันที (บน Linux และ FreeBSD อย่างน้อย):
shutdown -h now
หรือรีบูตเครื่องด้วยการเตือนล่วงหน้า 30 นาทีตามกำหนดเอง:
shutdown -r +30 "Planned software upgrades"
หลังจากการหน่วงเวลาshutdownบอกinitให้เปลี่ยนเป็น runlevel 0 (halt) หรือ 6 (reboot) (โปรดทราบว่าการละเว้น-hหรือ-rจะทำให้ระบบเข้าสู่โหมดผู้ใช้คนเดียว (runlevel 1) ซึ่งฆ่ากระบวนการของระบบส่วนใหญ่ แต่ไม่ได้หยุดระบบจริง ๆ แต่ก็ยังช่วยให้ผู้ดูแลระบบยังคงเข้าสู่ระบบในฐานะ root)
เมื่อกระบวนการของระบบถูกฆ่าและระบบไฟล์ถูกถอนการติดตั้งระบบจะหยุดทำงาน / ปิดเครื่องหรือบูตใหม่โดยอัตโนมัติ สิ่งนี้ทำโดยใช้คำสั่งhaltorrebootซึ่งซิงค์การเปลี่ยนแปลงดิสก์แล้วทำการหยุด / ปิดเครื่องจริงหรือรีบูต
บน Linux หากhaltหรือrebootทำงานเมื่อระบบยังไม่ได้เริ่มกระบวนการปิดระบบจะเรียกใช้shutdownคำสั่งโดยอัตโนมัติแทนที่จะดำเนินการตามที่ตั้งใจไว้โดยตรง อย่างไรก็ตามในระบบเช่น FreeBSDคำสั่งเหล่านี้ครั้งแรกที่เข้าสู่ระบบการดำเนินการในwtmpแล้วจะทันทีดำเนินการหยุด / รีบูตตัวเองโดยไม่ต้องฆ่ากระบวนการหรือ unmounting filesystems
halt, rebootและshutdownโปรแกรมที่เรียกอีกคนหนึ่ง มีโปรแกรมเดียวหนึ่งโปรแกรมที่มีตัวแยกบรรทัดคำสั่งจำนวนมากที่ช่องทางเข้าสู่เส้นทางรหัสเดียวภายใน ไม่ได้มีระดับการทำงาน การปิดเครื่องไม่เข้าสู่โหมดผู้ใช้คนเดียว อันที่จริงโหมดผู้ใช้คนเดียวได้ถูกเปลี่ยนชื่อแล้ว ดูรายละเอียดunix.stackexchange.com/a/196014/5132
ในช่วงปี 1980, BSDs มีhalt, และreboot shutdownระบบ 5 UNIX มีชุดเครื่องมือความเข้ากันได้ BSD แต่โดยกำเนิดแล้วมันมีshutdownคำสั่งต่างกัน และไม่มีhaltหรือrebootเลย (บางรุ่นในระบบ 5 มีสิ่งต่าง ๆ เช่น SCO XENIX haltsys)
BSD haltและrebootคำสั่งอยู่ในระดับต่ำรุนแรงและทันที นึกถึงวิธีที่จะปิดระบบ BSD เป็นshutdownคำสั่งซึ่งทำทุกสิ่งที่หนึ่งที่คาดว่าจะเกิดขึ้น: wallข้อความไปยังผู้ใช้บริการที่ถูกฆ่าตายอย่างสง่างาม, รายการบันทึกเป็นลายลักษณ์อักษรการเข้าสู่ระบบปิดการใช้งานและอื่น ๆ
ในขณะที่ BSD นั้นส่วนใหญ่เป็นที่ซึ่งภูมิปัญญาที่ได้รับนั้นเกิดขึ้นว่า " shutdownexecs halt/ reboot" และอย่างหลังนั้นจะต้องใช้ด้วยความระมัดระวัง มันเป็นระบบ 5 ในโลกที่ผู้คนได้เรียนรู้นิสัยตรงกันข้ามว่าhalt/ rebootมี shorthands เพียงที่มีประโยชน์และไม่มีอะไรเพิ่มเติม: /usr/ucb/haltจาก "แพคเกจความเข้ากันได้ BSD" shutdown -hก็ไม่แตกต่างกันในผลกระทบต่อ init 0พวกเขาทั้งสองสิ้นสุดการทำ
halt. 1982/05/11 4.2BSD manualhaltsys. 2005/06/03 คู่มือ SCO OpenServerทุกวันนี้เรามีชุดเครื่องมือการจัดการระบบที่เป็นไปได้มากมาย BSD ยังคงมีชุดเครื่องมือของพวกเขาแม้ว่าจะถูกกำจัดจาก AT & Tisms ที่เป็นไปได้ใด ๆ ในปี 1990 Miquel van Smoorenburg ในปี 1992 (อีกครั้ง) เขียน Linux init+ rcและเครื่องมือที่เกี่ยวข้องซึ่งตอนนี้ผู้คนเรียกว่า "System 5 init" แม้ว่ามันจะไม่ใช่ซอฟต์แวร์จาก UNIX System 5 (และไม่ใช่แค่init) นอกจากนี้ยังมีsystemd , พุ่งพรวดและNoshแต่ละที่มีการใช้งานของตัวเองของhalt, reboot, fasthalt, fastbootและอื่น ๆ
ชุดเครื่องมือได้เติบโตขึ้นและเปลี่ยนแปลงไปเช่นกัน ขณะนี้มีpoweroffคำสั่งซึ่งไม่ได้มีอยู่ในระบบปฏิบัติการยุค 1980 เนื่องจากหน่วยประมวลผลกลางในเครื่องที่ทันสมัยส่วนใหญ่ไม่มีวิธีควบคุมอุปกรณ์ไฟฟ้า ชุดเครื่องมือ Linux โดยเฉพาะได้รับคำสั่ง BSD; แต่เช่นเดียวกับเครื่องมือความเข้ากันได้ BSD ใน UNIX System 5 พวกเขาไม่ได้ทำงานจริงและสิ่งต่าง ๆ ได้รับการแบนส่วนใหญ่
แฟบนี้ได้นำเราไปยังจุดที่haltและshutdownเป็นส่วนใหญ่เหมือนกัน แต่รายละเอียดที่แน่นอนแตกต่างจากชุดเครื่องมือไปยังชุดเครื่องมือและกลไกของชุดเครื่องมือแต่ละชุดนั้นแตกต่างกันเล็กน้อย
นอกจากนี้ยังได้นำเราไปยังตำแหน่งที่น่าอายเล็กน้อยที่ชุดคำสั่งนี้ได้กลายเป็นประดับเพื่อให้มีตัวเลือกความเข้ากันได้ว่าตอนนี้จะช่วยให้คนที่จะให้คอมพิวเตอร์คำแนะนำตัวเองขัดแย้งเหมือนreboot --haltและpoweroff --rebootที่ผมระบุไว้ในหน้าคู่มือสำหรับ Nosh halt, fasthalt, reboot, fastboot, และpoweroffคำสั่ง ☺
halt, reboot, poweroff, telinitและshutdownมีทุกโปรแกรมหนึ่ง จริงๆแล้วมันเป็นsystemctlโปรแกรมของ systemd มันมีตัวแยกวิเคราะห์บรรทัดคำสั่งหลายคำสั่งสำหรับไวยากรณ์บรรทัดคำสั่งต่าง ๆ ของคำสั่งเหล่านั้นรวมถึงตัวของมันเอง แต่หลังจากนั้นช่องทางส่วนใหญ่จะกลายเป็นเส้นทางรหัสหนึ่งภายใน ไม่มีความแตกต่างระหว่างการใช้haltและตัวเลือกคำสั่งเพื่อเรียกใช้การกระทำและการใช้shutdownและตัวเลือกคำสั่งเพื่อเรียกใช้การกระทำเดียวกัน
systemd ไม่พิจารณาโหมดช่วยเหลือ (ซึ่งเป็นสิ่งที่คน systemd เปลี่ยนชื่อผู้ใช้โหมดเดียว ) เป็นสถานะระบบปิดและไม่สามารถเข้าถึงได้ด้วยคำสั่งใด ๆ เหล่านี้ ตัวเลือกน้อยเป็นเช่นเดียวกับshutdown nowpoweroff
BSD ส่วนใหญ่เก็บความหมายของยุค 80 haltและshutdownดังนั้นจึงไม่เหมือนกันมากในชุดเครื่องมือของพวกเขา haltและrebootเป็นหนึ่งโปรแกรมเดียว; และยังคงอยู่ในระดับต่ำทันทีและรุนแรง ในขณะที่shutdownและpoweroffหนึ่งโปรแกรมเดียวทำสิ่งที่นึกถึงทั้งหมดเช่นการปิดระบบตามกำหนดเวลาการเขียนwallข้อความการกระทำการบันทึกการปิดใช้งานการเข้าสู่ระบบและอื่น ๆ
ในชุดเครื่องมือ BSD shutdown/ poweroffสิ้นสุดการเรียกใช้halt/ rebootเพื่อแสดงการเปลี่ยนแปลงสถานะของระบบขั้นสุดท้าย (มักจะไม่ถูกต้องในปัจจุบัน) ได้รับภูมิปัญญาที่ " shutdownexecs halt/ reboot" ในความเป็นจริงยังคงถือใน NetBSD และ OpenBSD แต่ใน FreeBSD / TrueOS / DragonFlyBSD มันเป็นกรณีเฉพาะถ้าใช้-oตัวเลือก เมื่อวันที่ BSDs เหล่านี้ทั้งในโปรแกรมเหล่านี้ได้ตามปกติตราการเปลี่ยนแปลงสถานะของระบบขั้นสุดท้ายด้วยการส่งสัญญาณต่างๆ ( INT, USR1และUSR2) ในการประมวลผลที่ # 1 initทำการจัดการสถานะระบบทั้งหมดบนระบบเหล่านี้
ทั้งหมดของพวกเขาตัวเลือกน้อยshutdown nowจะไม่เทียบเท่ากับการใด ๆhalt, หรือreboot poweroffมันเปลี่ยนเป็นโหมดผู้ใช้คนเดียว BSD ซึ่งหนึ่งสามารถเปลี่ยนกลับไปเป็นโหมดผู้ใช้หลายคน
shutdown. คู่มือการใช้งานระบบการจัดการของ หน้าคู่มือ NetBSD 2011/11/04reboot,halt . หน้าคู่มือ OpenBSD 2016/09/03shutdown. หน้าคู่มือ FreeBSD 2016/09/21reboot, halt,fastbootfasthalt , หน้าคู่มือ FreeBSD 2017/03/19shutdown. คู่มือการใช้งานระบบการจัดการของ หน้าคู่มือ DragonFlyBSD 2016/09/29reboot, halt,fastbootfasthalt , คู่มือการใช้งานระบบการจัดการของ หน้าคู่มือ DragonFlyBSD 2016/09/29ในชุดเครื่องมือ Nosh จัดการระบบhalt, fasthalt, poweroff, fastpoweroff, rebootและfastbootมีทั้งหมดโปรแกรมหนึ่ง มันเป็นความเข้ากันได้แบบย้อนหลังที่โดยปกติจะเชื่อมโยงกับshutdownสิ่งที่ตรงกันข้ามกับภูมิปัญญาที่ได้รับ --forceตัวเลือกที่จะทำให้ห่วงโซ่การsystem-controlแทน
ดังนั้นจึงมีไม่แตกต่างกัน (ขาด--force) ระหว่างhaltคำสั่งและshutdownคำสั่ง (มีตัวเลือกที่เทียบเท่า) ในชุดนี้เป็นชุดของ "BSD / 5 ระบบการทำงานร่วมกัน" คำสั่งนี้เป็นเพียงชั้น shim shutdownบางกว่าด้านบนของ
shutdown. หน้าคู่มือเครื่องมือ โปรแกรมtelinit, init, reboot, halt, haltsys, powercycle, poweroff, … fastboot, fasthalt, fastpowercycle, fastpoweroff, … หน้าคู่มือเครื่องมือ โปรแกรมเช่นเดียวกับ nosh ในชุดเครื่องมือจัดการระบบพุ่งพรวดตรงกันข้ามกับภูมิปัญญา BSD ที่ได้รับจะถูกนำไปใช้ halt,, rebootและpoweroffเป็นหนึ่งโปรแกรมทั้งหมดที่เชื่อมโยงกับshutdown; ยกเว้นว่าใช้--forceตัวเลือกซึ่งทำให้reboot()ระบบเรียกใช้ตัวเอง
ดังนั้นอีกครั้งไม่มีความแตกต่าง (ขาด--force) ระหว่างhaltคำสั่งและshutdownคำสั่ง (พร้อมตัวเลือกเทียบเท่า) ในชุดเครื่องมือนี้ นอกจากนี้ยังมีอีกตัวเลือกน้อยshutdown now(ซึ่งไม่มีใครhalt, rebootหรือpoweroffสามารถท้ายกล่าวอ้างเช่นที่พวกเขาทั้งหมดตั้งค่าตัวเลือก) นำระบบเข้าสู่โหมดผู้เดียวมากกว่าปิดมันลง
shutdown หน้าคู่มือ Ubuntureboot(8) halt(8)poweroff (8) หน้าคู่มือ Ubuntuinit+rcอีกครั้งในชุดนี้ตรงข้ามของภูมิปัญญา BSD ได้รับใช้และhaltและrebootก็ห่วงโซ่shutdown- ถ้าระบบที่มีอยู่แล้วใน poweroff หรือหยุด "ทำงานระดับ" ซึ่งในกรณีนี้คำสั่งเหล่านี้จริงออกพระราชกำหนดการเปลี่ยนแปลงสถานะของระบบขั้นสุดท้าย โซ่หันไปshutdowninit
ดังนั้นอีกครั้งไม่มีความแตกต่าง (ยกเว้นว่าระบบได้ปิดตัวลงส่วนใหญ่แล้ว ) ระหว่างhaltและshutdownเพราะในอดีตเพียงแค่เรียกหลัง และใช่อีกตัวเลือกน้อยshutdown now(ซึ่งไม่มีใครhalt, rebootหรือpoweroffสามารถท้ายกล่าวอ้างเช่นที่พวกเขาทั้งหมดตั้งค่าตัวเลือก) นำระบบเข้าสู่โหมดผู้เดียวมากกว่าปิดมันลง
ฉันสงสัยว่าสิ่งนี้ขึ้นอยู่กับรุ่นของ UNIX / Linux ที่คุณใช้งานอยู่ บน Centos (และฉัน expec Linux อื่น ๆ ที่ทันสมัย) หยุดการโทร (ถ้าคุณไม่ได้อยู่ที่runlevel 0 หรือ 6) ดังนั้นระบบของคุณจะถูกปิดอย่างสมบูรณ์ บน Solaris 10 หยุดโหดร้ายมากขึ้นก็เพียงแค่วูบวาบแคชดิสก์และอำนาจนอกระบบ - ไม่พยายามที่จะทำเพื่อเรียกใช้สคริปต์หรือปิดSMFสิ่งอำนวยความสะดวก
สำหรับผู้ที่ใช้ AWS EC2: บน AWS shutdown หยุดอินสแตนซ์เมื่อhalt ยกเลิกมัน
ใน linux "halt" และ "reboot" เป็นนามแฝงของคำสั่ง shutdown - shutdown -hและshutdown -rตามลำดับ การปิด Bareword โดยทั่วไปจะถือว่า -h
aliasesอยู่ในความรู้สึกของนามแฝงเปลือก แต่ใช่haltพื้นเพียงเรียกร้องshutdown -hและวิ่งreboot shutdown -rโปรดทราบว่าถ้าคุณผ่าน-f(แรง) ตัวเลือกhaltหรือreboot, shutdownจะไม่เรียกว่า
sendmailคำสั่ง ณ จุดนี้ - เช่นเดียวกับ MTA มันไม่สำคัญว่าระบบ init ใดที่คุณใช้เพราะพวกเขาทั้งหมดจะรับรู้ทั้งสองshutdownและhaltเป็นเช่นนั้น
sendmailคำสั่งด้วย มันเหมือนกับsendmailคำสั่ง แต่ไม่ใช่ในแบบที่คุณคิด