ปิดในวันที่ที่ระบุ


11

ฉันรู้ว่าคุณสามารถกำหนดเวลาปิดเครื่องตามเวลาที่กำหนดได้shutdown -h 21:45และคุณไม่ควรใช้ crontabs สำหรับสิ่งต่าง ๆ เนื่องจากลักษณะที่ซ้ำซ้อน ฉันจะกำหนดปิดระบบสำหรับวันที่เฉพาะเช่น 31 สิงหาคมเวลา 20:00 น. ได้อย่างไร

คำตอบ:


7

Ubuntu รุ่นล่าสุดใช้ systemd และเมื่อไม่ได้ติดตั้งหรือไม่ใช้งานตัวกำหนดการธรรมดาatdและที่เกี่ยวข้องatสำหรับคำสั่งแบบใช้ครั้งเดียวsystemd-runหรือไม่ใช้คำสั่งแบบใช้ครั้งเดียว ซึ่งค่อนข้างง่ายกว่าการสร้างด้วยตนเองsystemd timer:

 systemd-run --on-calendar="2019-08-31 20:00:00 CET" /sbin/shutdown now

2
ประชดคือการเริ่มต้นบริการทั้งหมดเพื่อทำสิ่งนี้เกือบจะไม่จำเป็น กลไกการปิดระบบของ systemd นั้นรองรับจุดตามเวลาที่กำหนด shutdownเครื่องมือบรรทัดคำสั่งของมันก็ไม่ได้ให้ความสามารถในการเข้าถึงนี้เพราะมันไม่ได้ขึ้นอยู่กับหุ้นที่มีบรรทัดคำสั่งของการ bsd ขณะที่ผมเขียนไว้ในคำตอบอื่นคุณที่ต้องการนี้อาจพยายามชักจูงคน systemd ที่จะทำให้พวกเขาshutdownเป็นเครื่องมือที่มีความสามารถมากขึ้นด้วยไวยากรณ์ของทศวรรษที่ผ่านมายืนแทนที่จะไปรอบ ๆ systemd-runบ้านด้วย
JdeBP

ฉันได้รับข้อมูลปฏิทินไม่ถูกต้อง: 2019-08-31 20:00:00 CET
อัปโหลด

12

atคำสั่งอย่างใดอย่างหนึ่งการตั้งเวลาปิดการประหารชีวิตในอนาคต

เช่น

% at 8pm Aug 31
at> echo hello
at> <EOT>
job 161 at Sat Aug 31 20:00:00 2019

("<EOT>" ถูกสร้างขึ้นโดยการกด control-D)

% atq
161     Sat Aug 31 20:00:00 2019 a sweh

คุณสามารถใส่shutdownคำสั่งของคุณที่นี่


ใช่ ฉันลืมไปแล้วatเมื่อฉันโพสต์ - atมีความหมายโดยทั่วไปสำหรับเรื่องนี้ถึงแม้ว่าใน บริษัท วิธีการที่ยอมรับอาจเป็นatหรือcronขึ้นอยู่กับอนุสัญญาที่เกี่ยวข้องกับการจัดการการกำหนดค่า / การปรับใช้
flow2k

มันไม่ได้เทียบเท่าอย่างแน่นอนทราบ unix.stackexchange.com/q/465322/5132
JdeBP

atecho "echo yup > $(tty)" | at nowนอกจากนี้ยังสามารถที่จะใช้คำสั่งจากท่อ:
mosvy

7

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

/sbin/shutdown +$(( ( $( date -d "30 may 2019 13:15" +%s ) - $( date +%s ) ) / 60 + 1 ))

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


3

คุณใช้shutdownคำสั่งที่ดีกว่า

shutdownคำสั่งvan Smoorenburg, Upstart และ systemd ไม่อนุญาตการระบุวันที่ แต่การ bsd คำสั่งยิงค่าวันที่ในข้อมูลจำเพาะของเวลาที่จะปิดตัวลงในรูปแบบshutdown yymmddhhmmนี่เป็นกรณีที่เกิดขึ้นตั้งแต่ 4BSD และยังคงเป็นเช่นนั้นกับ FreeBSD และ OpenBSD NetBSD ccyymmddhhmmขยายไปยัง

เนื่องจากชุดเครื่องมือ nosh นั้นยังสามารถใช้งานได้บนBSD ฉันจึงให้shutdownความสามารถแบบเดียวกันกับคำสั่งของฉันโดยขยายเป็นCCYYMMDDHHMMNetBSD และเนื่องจากชุดเครื่องมือ nosh นั้นยังสามารถใช้งานบน Linux ได้ซึ่งทำให้ Linux มีคำสั่งปิดที่ใช้วันที่

มันแน่นอนทำงานร่วมกับ system-managerNosh มันยังทำงานได้กับระบบอื่น ๆ มันส่งสัญญาณไปยังโพรเซส 1 เพื่อออกกฎหมายและผู้จัดการสัญญาณอื่น ๆ ก็เข้าใจเช่นเดียวกันsystemdซึ่งสามารถปิดการใช้งานได้

คุณสามารถใช้มันหรือเครื่องมือเช่นนั้น หรือคุณอาจจะพยายามที่จะชักชวนให้ผู้เขียนของลินุกซ์อื่น ๆโปรแกรมที่จะขยายเครื่องมือของพวกเขายังจะเป็นความสามารถในขณะที่การ bsdshutdownshutdown

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

  • Jonathan de Boyne Pollard (2018) shutdown. หน้าคู่มือเครื่องมือ โปรแกรม
  • Jonathan de Boyne Pollard (2018) system-manager. หน้าคู่มือเครื่องมือ โปรแกรม
  • shutdown. คู่มือการใช้งานระบบการจัดการของ หน้าคู่มือ NetBSD 2011/11/04
  • shutdown. ผู้จัดการระบบ FreeBSD คู่มือการใช้งาน 2018/01/01
  • shutdown. หน้าคู่มือ OpenBSD 2015/01/21
  • /unix//a/465337/5132


-4

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

0 0 31 8 ? 2019  shutdown

ระวัง: ข้างต้นไม่ใช่ไวยากรณ์ cron มาตรฐาน


2
1. สิ่งนี้ไม่พูด 20:00 น. มันบอกว่าเที่ยงคืน 2. ฉันไม่เคยเห็น cronjob ที่มีเขตข้อมูล SIX สำหรับช่วงเวลานั้น คุณอ้างอิง cron อะไร
สัญลักษณ์ตัวแทน

2
ไม่มีyearฟิลด์ในcrontabกำหนดการ
Seamus

ฉันรู้ภายหลังว่าไวยากรณ์นี้ไม่ใช่ "cron มาตรฐาน" ดังนั้นฉันจึงเห็นด้วยไม่ควรใช้ค่าใบหน้า OP ดูเหมือนจะแปลว่ามีการลงโทษตามประสิทธิภาพที่เกี่ยวข้องกับการใช้ cron ดังนั้นในคำตอบของฉันฉันพยายามชี้แจง - ไม่มีความไร้ประสิทธิภาพอย่างแท้จริงเกี่ยวกับการดำเนินการของ cron ที่ไม่เหมาะสมสำหรับงานครั้งเดียว นี่คือสิ่งที่คุณคิดเช่นกัน?
flow2k
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.