ฉันจะกำหนดเวลาการรีบูตใน Linux ได้อย่างไร


38

ฉันใหม่ใน Linux และฉันต้องการกำหนดเวลาการรีบูตเวลาเที่ยงคืน ฉันควรทำอย่างไร

การแก้ไข:

  • ฉันขอโทษฉันไม่ได้ใส่รายละเอียดที่สมบูรณ์ ฉันต้องการรีบูตทุกวันเสาร์ที่ 3 ของเดือนเวลา 23:30 น.

  • ฉันไม่รู้ว่ามีอะไรผิดปกติ แต่ฉันไม่สามารถหา crontab ได้ สิ่งที่ฉันมีคือcron.d; cron.daily; cron.weekly; cron.monthly;

ฉันขอโทษสำหรับคำถาม noob กรุณาช่วยฉัน ขอบคุณ


2
คำถามที่แท้จริงคือเหตุผลที่คุณต้องการทำสิ่งนี้เป็นประจำมีแอปพลิเคชันที่รั่วหรืออะไร หากคุณกำลังกำหนดเวลาการรีบูตปกติเพื่อแก้ปัญหาคุณอาจมีปัญหาที่ใหญ่กว่า ...
JamesHannah

1
คุณต้องการให้รีบูตทุกคืนหรือไม่
Matt Simmons

4
ฉันไม่ได้ลงคะแนนเพราะเป็นการตัดสินใจเชิงนโยบาย (และฉันคิดว่าการรีบูตทุกคืนนั้นค่อนข้างมาก) แต่การรีบูตเครื่องข้ามโครงสร้างพื้นฐานเป็นประจำเป็นวิธีที่ดีในการรับรองว่าเครื่องมีเมล็ดทันสมัยและบริการทั้งหมดที่ทำงานอยู่ ได้รับการติดตั้งแล้ว ฉันได้ยินการ จำกัด เวลาอัพไทม์ 3 เดือนว่าเป็นจุดกลางที่ดี
Matt Simmons

หากนี่คือความคิดเห็นเกี่ยวกับคำถามมากกว่าคำตอบฉันจะโหวตมัน ที่จริงฉันจะเปลี่ยนใจเพราะคำถามนั้นคลุมเครือว่านี่เป็นครั้งเดียวหรือเป็นเรื่องปกติ :)
intuited

3
/etc/crontabรายการ30 23 15-21 * 6 /sbin/shutdown -r nowจะเริ่มต้นใหม่เวลา 23:30 น. ในวันเสาร์ที่ 3 ของทุกเดือน
Chris S

คำตอบ:


45

พิมพ์shutdown -r 0:00และมันจะรีบูตเวลาเที่ยงคืน

หากคุณต้องการรีบูตทุกคืนให้เพิ่มรายการ cron โดยใช้ crontab -e เป็นรูทเพื่อให้ปิดเครื่อง - r ทุกเที่ยงคืน

@midnight shutdown -r now

3
nowอาร์กิวเมนต์เวลามีผลบังคับใช้คุณสามารถใช้
Tobu

ไม่ ... ถ้าเขาต้องการคำสั่งครั้งเดียวและต้องการพิมพ์คำสั่งตอนนี้เขาควรจะเพิ่มเวลา!
รัศมี

3
@ ไม่ต้องใช้อาร์กิวเมนต์เวลาเช่นnowในบรรทัด crontab
Dennis Williamson

Oups ใช่ขอโทษฉันอ่านความคิดเห็นของ Tobu ผิดและคิดว่า 0:00 ไม่มีประโยชน์ในคำสั่งแรก ... ฉันแก้ไขเพื่อแก้ไข (และคำตอบของ Massimo ด้วย)
รัศมี

ฉันสนใจที่จะทราบว่า@{command}มีตัวแปรอื่นใดบ้าง
เกร็ก

16

crontabการใช้

http://en.wikipedia.org/wiki/Crontab

การเพิ่มรายการนี้ใน / etc / crontab ควรทำ:

0 0 * * * /sbin/shutdown -r now

3
shutdownต้องการอาร์กิวเมนต์เวลาเช่นnow
Dennis Williamson

1
นี่จะทำการรีบูตทุกคืน ฉันไม่แน่ใจว่านี่คือสิ่งที่เขาต้องการหรือไม่
cstamas

1
คำถามเดิมทำให้ดูเหมือนว่าเขาต้องการให้รีบูตทุกคืน ที่จริงแล้วเขาต้องการให้มันรีบูตทุกวันเสาร์ที่ 3 ซึ่งยังคงง่ายที่สุดด้วย crontab
Chris S

ฉันไม่รู้ว่ามีอะไรผิดปกติ แต่ฉันไม่พบ crontab .. ? สิ่งที่ฉันมีคือ cron.d; cron.daily; cron.weekly; cron.monthly; ฉันขอโทษสำหรับคำถาม noob กรุณาช่วยฉัน ขอบคุณ
klauriens

ขึ้นอยู่กับการกระจายที่คุณใช้ แต่โดยทั่วไปคุณควรหาไฟล์ชื่อ "crontab" ในไดเรกทอรี / etc ของระบบ คุณควรตรวจสอบ crontab ปัจจุบันโดยใช้คำสั่ง "crontab -l" และแก้ไขโดยใช้ "crontab -e"
Massimo

12

อีกทางเลือกหนึ่งคือคำสั่งatมีอยู่ใน Linux หลายรุ่น ดู man page สำหรับข้อมูลเพิ่มเติม แต่ไวยากรณ์ทั่วไปสำหรับวัตถุประสงค์ของคุณคือ:

echo "reboot" | ณ 0000 มิ.ย. 27

ในการอ้างอิงหน้าคน OS X:

at - รันคำสั่งในเวลาที่กำหนด

เสียงเหมือนสิ่งที่เรากำลังพูดถึง ;)


1

เท่าที่ฉันรู้คุณไม่สามารถใช้ cron เพื่อกำหนดเวลางานสำหรับ "วันศุกร์สุดท้ายของแต่ละเดือน" หรือ "วันพฤหัสบดีที่สามในแต่ละเดือน" สิ่งที่คุณสามารถทำได้ แต่น่าเกลียดก็คือให้สคริปต์รันทุกวันเสาร์เวลา 23:30 น. แล้วให้สคริปต์นี้พิจารณาว่าวันเสาร์นี้เป็นวันเสาร์ที่สามของสัปดาห์ (สามารถทำได้โดยใช้วันที่และคำสั่ง cal) .

ฉันหวังว่านี่จะช่วยได้. ฉันไม่พบวิธีแก้ไขปัญหาอย่างละเอียดในปัญหานี้ ฉันพบกระทู้นี้เนื่องจากฉันค้นหาวิธีแก้ไขปัญหาเดียวกัน


1
ความคิดเห็นด้านบนของ "30 23 15-21 * 6 / sbin / shutdown -r ตอนนี้" จะทำงาน โดยทั่วไปจะทำงานเฉพาะในสัปดาห์ที่สามของเดือน แต่เมื่อเป็นวันเสาร์
Sirex

ฉันไม่คิดว่าสาย cron นี้ทำงานได้ตามที่คุณคิด
ervingsb

ฉันสร้างสองบรรทัดต่อไปนี้: "30 23 1-7 * 4 date" และ "30 23 1-7 * 3 วันที่" เมื่อคืนฉันได้รับจดหมายสองฉบับบอกว่า: "พุธ 7 มีนาคม 23:30:02 CET 2012"
ervingsb

ฟิลด์สุดท้ายตรงกับวันในสัปดาห์โดยไม่มีศูนย์ในวันอาทิตย์ cronjob 4 ไม่ควรจับคู่ในวันพุธ
Sirex

นั่นคือสิ่งที่ฉันหมายถึง กฎที่คุณเขียนไม่ได้หมายความว่าคุณคิดว่ามันหมายถึงอะไร มันจะเริ่มงานทุกวันเป็นเวลาหนึ่งสัปดาห์ ไม่ว่าในวันทำงาน
ervingsb

0

1) ที่ประเภทบรรทัดคำสั่ง 2) เมื่อคุณทราบว่า cd อยู่ที่รีบูต (ปกติ / sbin / reboot) ลงในหนึ่งในไดเรกทอรีใน /etc/cron.daily, /etc/cron.weekly, / etc / cron ฯลฯ ทุกชั่วโมง ... เช่นwhich reboot
cd /etc/cron.weekly

3) สร้างไฟล์ (ใช้ nano หรือ vim) เรียกมันว่า zzreboot และเพิ่มบรรทัดต่อไปนี้:

#! / bin / sh
/ sbin / reboot

เหตุผลที่คุณต้องการเรียกไฟล์ zzwhething คือเพื่อให้แน่ใจว่าเป็นงานสุดท้ายที่ถูกเรียกใช้หลังจากงานอื่น ๆ ทั้งหมด เพื่อให้แน่ใจว่าได้ทำls -lในไดเรกทอรีและตรวจสอบว่าเป็นไฟล์สุดท้าย

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