ฉันรู้ว่าคุณสามารถกำหนดเวลาปิดเครื่องตามเวลาที่กำหนดได้shutdown -h 21:45
และคุณไม่ควรใช้ crontabs สำหรับสิ่งต่าง ๆ เนื่องจากลักษณะที่ซ้ำซ้อน ฉันจะกำหนดปิดระบบสำหรับวันที่เฉพาะเช่น 31 สิงหาคมเวลา 20:00 น. ได้อย่างไร
ฉันรู้ว่าคุณสามารถกำหนดเวลาปิดเครื่องตามเวลาที่กำหนดได้shutdown -h 21:45
และคุณไม่ควรใช้ crontabs สำหรับสิ่งต่าง ๆ เนื่องจากลักษณะที่ซ้ำซ้อน ฉันจะกำหนดปิดระบบสำหรับวันที่เฉพาะเช่น 31 สิงหาคมเวลา 20:00 น. ได้อย่างไร
คำตอบ:
Ubuntu รุ่นล่าสุดใช้ systemd และเมื่อไม่ได้ติดตั้งหรือไม่ใช้งานตัวกำหนดการธรรมดาatd
และที่เกี่ยวข้องat
สำหรับคำสั่งแบบใช้ครั้งเดียวsystemd-run
หรือไม่ใช้คำสั่งแบบใช้ครั้งเดียว ซึ่งค่อนข้างง่ายกว่าการสร้างด้วยตนเองsystemd timer
:
systemd-run --on-calendar="2019-08-31 20:00:00 CET" /sbin/shutdown now
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
ขึ้นอยู่กับอนุสัญญาที่เกี่ยวข้องกับการจัดการการกำหนดค่า / การปรับใช้
at
echo "echo yup > $(tty)" | at now
นอกจากนี้ยังสามารถที่จะใช้คำสั่งจากท่อ:
ในขณะที่at
เป็นวิธีที่ชัดเจนในการทำเช่นนี้ฉันคิดว่ามันจะอยู่รอดได้เมื่อปิดเครื่องดังนั้นหากเครื่องรีบูตก่อนที่จะปิดเครื่องตามกำหนดเวลามันอาจปิดเครื่องอีกครั้งตามเวลาที่กำหนด ดังนั้นเมื่อใช้ bash และ GNU เราจึงสามารถปิดการใช้งานล่าช้าได้
/sbin/shutdown +$(( ( $( date -d "30 may 2019 13:15" +%s ) - $( date +%s ) ) / 60 + 1 ))
หมายเหตุ: นี่ถูกต้องเพียงหนึ่งนาที มันทำงานได้โดยการแปลงเวลาที่กำหนดและตอนนี้ถึงวินาทีตั้งแต่ UNIX ยุคคำนวณความแตกต่างแปลงเป็นนาทีแล้วใช้สิ่งนี้เป็นความล่าช้าในการปิด มันจะทำงานไม่ถูกต้องหากเวลาที่กำหนดไว้ในอดีต
คุณใช้shutdown
คำสั่งที่ดีกว่า
shutdown
คำสั่งvan Smoorenburg, Upstart และ systemd ไม่อนุญาตการระบุวันที่ แต่การ bsd คำสั่งยิงค่าวันที่ในข้อมูลจำเพาะของเวลาที่จะปิดตัวลงในรูปแบบshutdown
yymmddhhmm
นี่เป็นกรณีที่เกิดขึ้นตั้งแต่ 4BSD และยังคงเป็นเช่นนั้นกับ FreeBSD และ OpenBSD NetBSD ccyymmddhhmm
ขยายไปยัง
เนื่องจากชุดเครื่องมือ nosh นั้นยังสามารถใช้งานได้บนBSD ฉันจึงให้shutdown
ความสามารถแบบเดียวกันกับคำสั่งของฉันโดยขยายเป็นCCYYMMDDHHMM
NetBSD และเนื่องจากชุดเครื่องมือ nosh นั้นยังสามารถใช้งานบน Linux ได้ซึ่งทำให้ Linux มีคำสั่งปิดที่ใช้วันที่
มันแน่นอนทำงานร่วมกับ system-manager
Nosh มันยังทำงานได้กับระบบอื่น ๆ มันส่งสัญญาณไปยังโพรเซส 1 เพื่อออกกฎหมายและผู้จัดการสัญญาณอื่น ๆ ก็เข้าใจเช่นเดียวกันsystemd
ซึ่งสามารถปิดการใช้งานได้
คุณสามารถใช้มันหรือเครื่องมือเช่นนั้น หรือคุณอาจจะพยายามที่จะชักชวนให้ผู้เขียนของลินุกซ์อื่น ๆโปรแกรมที่จะขยายเครื่องมือของพวกเขายังจะเป็นความสามารถในขณะที่การ bsdshutdown
shutdown
shutdown
. หน้าคู่มือเครื่องมือ โปรแกรมsystem-manager
. หน้าคู่มือเครื่องมือ โปรแกรมshutdown
. คู่มือการใช้งานระบบการจัดการของ หน้าคู่มือ NetBSD 2011/11/04shutdown
. ผู้จัดการระบบ FreeBSD คู่มือการใช้งาน 2018/01/01shutdown
. หน้าคู่มือ OpenBSD 2015/01/21ในการทำงานเฉพาะปีนี้:
0 20 31 8 * test $(/bin/date +\%Y) = "2019" && /sbin/shutdown now
ในการทำงานทุก ๆ ปี:
0 20 31 8 * /sbin/shutdown now
อาจมีตัวเลือกในการป้อนปีให้กับshutdown
คำสั่ง แต่ cron สามารถใช้เพื่อเรียกใช้คำสั่งเพียงครั้งเดียวในเวลาที่ระบุ สำหรับตัวอย่างของคุณลอง
0 0 31 8 ? 2019 shutdown
ระวัง: ข้างต้นไม่ใช่ไวยากรณ์ cron มาตรฐาน
year
ฟิลด์ในcrontab
กำหนดการ
shutdown
เครื่องมือบรรทัดคำสั่งของมันก็ไม่ได้ให้ความสามารถในการเข้าถึงนี้เพราะมันไม่ได้ขึ้นอยู่กับหุ้นที่มีบรรทัดคำสั่งของการ bsd ขณะที่ผมเขียนไว้ในคำตอบอื่นคุณที่ต้องการนี้อาจพยายามชักจูงคน systemd ที่จะทำให้พวกเขาshutdown
เป็นเครื่องมือที่มีความสามารถมากขึ้นด้วยไวยากรณ์ของทศวรรษที่ผ่านมายืนแทนที่จะไปรอบ ๆsystemd-run
บ้านด้วย