อะไรคือความแตกต่างระหว่างการปิดระบบเวลา 18:00 น. และเวลาปิด 18:00 น.


30

at 18:00 shutdown nowและshutdown 18:00พวกเขาเริ่มบริการเดียวกันหรือไม่ พวกเขาทำงานในลักษณะเดียวกันหรือไม่

คำตอบ:


48

at 18:00 shutdown nowสร้างงาน "at" ซึ่งดำเนินการในเวลาที่กำหนดโดยatdaemon หรือcrondaemon ขึ้นอยู่กับระบบของคุณ

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

ผลลัพธ์สุทธิในกรณีส่วนใหญ่จะเหมือนกัน: ระบบจะปิดเวลา 18:00 น

ความแตกต่างอย่างหนึ่งคือถ้าคุณใช้atงานจะถูกจัดเก็บและหากระบบปิดด้วยวิธีอื่นก่อน 18:00 นเมื่อบูตอีกครั้งงานจะยังคงรอให้ทำงาน หากเวลาผ่านไปแล้วการปิดระบบจะดำเนินการทันทีซึ่งอาจเป็นสิ่งที่ไม่คาดคิด

ความแตกต่างอีกอย่างก็คือshutdown 18:00จะสร้าง/run/nologinไฟล์ 5 นาทีก่อนเวลาที่กำหนดเพื่อป้องกันไม่ให้ผู้อื่นลงชื่อเข้าใช้หลังจากนั้น ข้อความออกอากาศจะถูกส่งไปยังคำเตือนผู้ใช้ที่เข้าสู่ระบบว่าระบบกำลังจะปิด

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


1
" shutdown 18:00เริ่มกระบวนการในเชลล์ของคุณที่รอ" ถ้าคุณออกจากระบบก่อนหน้า
RonJohn

1
@RonJohn: แล้วมันก็ขึ้นอยู่กับว่าคุณใช้nohupหรือdisownหรืออะไรก็ตามถ้าเข้าออกได้ตามปกติฆ่าทำงานกระบวนการพื้นหลัง ระบบที่ต่างกันสามารถมีค่าเริ่มต้นต่างกัน (ฉันสมมติว่ามีsudo shutdownกระบวนการที่ยังทำงานอยู่ แต่มันเป็นเพียงการส่งสัญญาณinitเพื่อเริ่มตัวจับเวลาปิดซึ่งจริง ๆ แล้วอาจเป็นสิ่งที่เกิดขึ้น แต่ฉันไม่ได้ตรวจสอบเมื่อเร็ว ๆ นี้โอ้ แต่ @JdeBP มีให้ดูคำตอบนั้น )
Peter Cordes

เป็นไปได้หรือไม่ที่จะตั้งค่าatเพื่อใช้งานผ่านcronแทนที่จะเป็นatd?
terdon

3
มีผู้ดูแลเพชรที่ยังไม่ได้อ่านเป็นวิธีการขอ (-: คุณจะพบว่าคำถามนี้ถูกถามสี่ปีที่ผ่านมาที่unix.stackexchange.com/questions/147643 .
JdeBP

"ข้อความออกอากาศจะถูกส่งไปเตือนผู้ใช้ที่ล็อกอินว่าระบบกำลังจะปิด" ฉันจะบอกว่านี่เป็นข้อแตกต่างที่สำคัญที่สุดในเซิร์ฟเวอร์ที่มีผู้ใช้จำนวนมากฉันจะเน้นให้มากขึ้นในคำตอบนี้
JiK

23

และตอนนี้คำตอบ systemd

หากคุณมี CentOS 7 คุณมีระบบปฏิบัติการ systemd และคำตอบนั้นแตกต่างกัน

at 18:00 shutdown nowยังคงกำหนดเวลาผ่านatระบบย่อย แต่shutdownคำสั่งนั้นรวมถึงคำสั่งที่คุณเรียกใช้โดยตรงshutdown 18:00นั้นแตกต่างกัน มันเป็นsystemctlโปรแกรม ของ systemd systemctlทำสิ่งที่แตกต่าง

ก่อนอื่นsystemctlส่งคำขอปิดระบบตามกำหนดเวลาเพื่อประมวลผลโดยdæmonซึ่งค่อนข้างคล้ายกับในatกรณี นี่เป็น systemd dæmon แต่โดยเฉพาะlogind( systemd-shutdownddæmonถูกลบออกจาก systemd ในเดือนพฤษภาคม 2558 ซึ่งการเปลี่ยนแปลงมีตั้งแต่ผ่านไปจนถึงรุ่นย่อยรุ่นที่ใหม่กว่าของ CentOS 7) ไม่ใช่atระบบย่อย systemctlพูดโปรโตคอลภายในไปยังนายหน้า (ทั้งระบบ) logindแบบบัสซึ่งในทางกลับกันสื่อสารกับ

เช่นเดียวกับในatกรณีที่ไม่มีshutdownกระบวนการนั่งนับถอยหลังและวางไข่wallข้อความ ดังนั้นหนึ่งสามารถออกจากระบบและสิ่งนี้จะไม่ส่งผลกระทบต่อตารางเวลาและการยกเลิกไม่ง่ายเหมือนเพียงขัดจังหวะ / ฆ่ากระบวนการพื้นหน้าของเซสชันการเข้าสู่ระบบ atเช่นเดียวกับ

มีคงมีข้อความแตกต่างจากในatกรณี logindแต่พวกเขาจะออกโดย นอกจากนี้ยังแตกต่างจากatกรณีงานที่กำหนดไม่ได้ยังคงมีอยู่ทั่วเตะของระบบเพื่อปิดจริงยกเลิกการกำหนดหนึ่ง มีเป็นแฟ้มในระบบแฟ้ม แต่ก็อยู่ภายใต้/run/systemd/shutdownซึ่งเป็นพื้นที่เก็บข้อมูลไม่ถาวร

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

อ่านเพิ่มเติม

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