เป็นไปได้ไหมที่จะหยุดคำสั่ง shutdown?


23

สมมติว่าคุณเพิ่งป้อนคำสั่งshutdown -h now(หรือสิ่งที่เทียบเท่า) มีอะไรที่คุณสามารถทำได้จริง ๆ (ถ้าคุณเร็วพอ) เพื่อป้องกันไม่ให้เครื่องหยุดทำงาน?


เมื่อคุณเรียกใช้shutdown -h nowฉันเชื่อว่าคุณสูญเสียการเข้าถึงบรรทัดคำสั่งทันทีคล้าย ๆ กันhalt -pดังนั้นจึงไม่มีอะไรที่คุณสามารถทำได้
เคน

@Ken: บน Ubuntu และ Centos ที่เชื่อมต่อผ่าน putty บรรทัดคำสั่งจะยังคงมีอยู่สองสามวินาที

ทำไมพูดว่า "ตอนนี้" ถ้าคุณไม่ได้หมายความว่า "ตอนนี้"?
Fred Nurk

คำตอบ:


22

คุณสามารถเรียกใช้shutdown -cเพื่อยกเลิกการปิดระบบที่กำลังทำงานอยู่ได้


1
ไม่เชื่อในตอนแรก แต่ใช่ โดยเฉพาะอย่างยิ่งctrl+c
Ken

2
@Ken: การปิดระบบ -c และ [Ctrl] + [c] แตกต่างกันอย่างสิ้นเชิง shutdown -c เป็นคำสั่งที่ยกเลิกการปิดระบบที่กำหนดไว้ก่อนหน้านี้ (แม้ "ตอนนี้" จะถูกกำหนดไว้ในแง่นี้ --- แต่การยกเลิกจะป้องกันไม่ให้รีบูตเป็นบิตของการแข่งขันในกรณีนั้น) [Ctrl] + [c] จะทำให้เทอร์มินัลของคุณสร้าง SIGINT (สัญญาณขัดจังหวะ) เพื่อเชื่อมต่อกระบวนการใดก็ได้ สิ่งนี้อาจใช้งานได้กับคำสั่งปิดระบบที่ทำงานอยู่ แต่มันค่อนข้างเป็นปัญหาสำหรับคำถามของคุณ
จิมเดนนิส

1
@ Jim เดนนิส: ผมทราบความแตกต่างระหว่างและctrc+c shutdown -cแต่เมื่อกำหนดความเร็วของ-now ตัวเลือกมากกว่ากำหนดพี่น้องctrl+cจะเป็นเส้นทางที่เร็วที่สุดไปยังจุดสิ้นสุด ฉันไม่เชื่อว่าคุณสามารถหยุดการหยุดทำงานได้อย่างน่าประหลาดใจยิ่งกว่านั้นคุณสามารถขัดจังหวะได้ แต่เห็นได้ชัดว่าคุณทำได้ แต่เป็นการแข่งขันตามที่คุณระบุไว้
Ken

13

หากคุณเร็วพอคุณสามารถออกinit 2(หรืออะไรก็ได้ที่คุณต้องการ) และนั่นอาจจะเป็นการหยุดการปิดระบบ สิ่งใดก็ตามที่เกี่ยวข้องกับการฆ่าคำสั่ง shutdown จะล้มเหลวเมื่อคำสั่งรันเร็วเกินไป

ฉันลองใช้สคริปต์ด้านล่างนี้และแม้จะไม่เร็วพอที่จะหยุดการปิดระบบ

#!/bin/bash
shutdown -h now
shutdown -c "Aborting Shutdown"

Broadcast message from iain@iain-ubuntu
        (/dev/pts/0) at 16:50 ...

The system is going down for halt NOW!
shutdown: Cannot find pid of running shutdown

ที่ไหนเป็นแบบโต้ตอบ

shutdown -h now
init 2 

ระบบยังคงอยู่


1

จากหน้า FreeBSD:

การปิดระบบตามกำหนดเวลาสามารถยกเลิกได้โดยการฆ่ากระบวนการปิด (SIGTERM ควรเพียงพอ)

ดังนั้นkillall shutdownการทำงานบน BSD เมื่อมีการปิดระบบที่กำหนด (เช่นshudown -h +5)

ฉันไม่คิดว่าเป็นไปได้ที่จะยกเลิกการปิดระบบทันที ( shutdown -h now) ในสถานการณ์จริง


0

สมมติว่าคุณส่งข้อความรีบูตหรือปิดระบบไปยังเทอร์มินัลทั้งหมดเพื่อจุดประสงค์ในการบำรุงรักษาที่ "เซิร์ฟเวอร์กำลังจะรีบูตหรือปิดระบบเพื่อการบำรุงรักษาภายใน 10 นาที"

คำสั่งชนิดนี้สามารถยกเลิกได้

เพียงกดCtrl+C

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