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


81

ฉันมีปัญหาบางอย่างในการใช้งานแอปพลิเคชันเฉพาะอย่าง XBMC ถ้าฉันใช้ XBMC เป็นประจำฉันดูเหมือนจะไม่มีปัญหาใด ๆ แต่ถ้าฉันปล่อยไว้โดยไม่มีใครดูแลมานานกว่า 12 ชั่วโมงฉันต้องรีบูตเพื่อให้มันทำงานได้อีกครั้ง

ฉันรู้ว่าการรีบูตตามกำหนดเวลาไม่ใช่คำตอบแต่จนกว่าฉันจะสามารถหาปัญหาได้ฉันต้องกำหนดการรีบูตทุกเช้าเพื่อให้ภรรยาของฉันสามารถใช้งานได้ถ้าฉันไม่อยู่และไม่ได้ถูกโยนออกนอกหน้าต่าง :)

ผู้รับใด ๆ

คำตอบ:


133

ฉันจะใช้ cron (ควรติดตั้งไว้แล้ว):

แก้ไข crontab:

sudo crontab -e

ครั้งแรกที่คุณอาจต้องเลือกเครื่องมือแก้ไขที่คุณต้องการ (เช่นนาโน)

แทรกบรรทัดเช่น

0 4   *   *   *    /sbin/shutdown -r +5

ที่ส่วนลึกสุด. คำอธิบาย:

m      h    dom        mon   dow       command
minute hour dayOfMonth Month dayOfWeek commandToRun

ดังนั้นสาย

  0 4   *   *   *    /sbin/shutdown -r +5

จะรีบูตระบบของคุณทุกวันเวลา 4:05 น. (4:00 น. + 5 นาที)

Ctrl+ X, Y, Enterควรจะได้รับคุณออกจาก crontab (ถ้าใช้นาโน)

หมายเหตุ: คุณอาจต้องรันcrontab -eเป็นรูทเนื่องจากการปิดระบบจำเป็นต้องรูท crontab -eเปิดไฟล์ใน / tmp แทน crontab จริงเพื่อให้สามารถตรวจสอบข้อผิดพลาด crontab ใหม่ของคุณ หากไม่มีข้อผิดพลาด crontab ที่แท้จริงของคุณจะได้รับการอัปเดต


1
ขอบคุณสำหรับข้อมูล. สิ่งเดียวที่ฉันต้องทำคือเปลี่ยนคำสั่งเป็น / sbin / shutdown เพื่อให้มันใช้งานได้สำหรับฉัน

1
สิ่งนี้ไม่ได้ผลสำหรับฉัน ใช้ทั้งสองcrontab -eและsudo crontab -eบันทึกไฟล์ไปยังตำแหน่งชั่วคราวเมื่อคุณออกไป (เช่น /tmp/crontab.Y88XQl/crontab) และงานไม่ทำงาน ฉันถูกบังคับให้แก้ไข / etc / crontab โดยตรง
wal

@wal "crontab -e เปิดไฟล์ใน / tmp แทน crontab จริงเพื่อให้สามารถตรวจสอบ crontab ใหม่ของคุณเพื่อหาข้อผิดพลาดและป้องกันไม่ให้คุณเขียนทับ crontab ที่แท้จริงของคุณด้วยข้อผิดพลาดหากไม่มีข้อผิดพลาด crontab ที่แท้จริงของคุณจะ ได้รับการปรับปรุง " unix.stackexchange.com/questions/197504/…
Christh

14

การเพิ่มสิ่งนี้ไปยัง/etc/cron.daily/zz-rebootควรจะทำงาน:

#!/bin/sh
shutdown -r now

และsudo chmod a+x /etc/cron.daily/zz-reboot. คำนำหน้า "zz" จะบังคับให้เรียกใช้สคริปต์อื่นในไดเรกทอรีนั้นล่าสุด ตรวจสอบ/etc/crontabดูว่าเวลาใดของวันที่จะเกิดขึ้นจริง:

grep daily /etc/crontab | awk '{print $2 ":" $1}'

หากไม่สามารถใช้งานได้รายการ cron "ปกติ" ก็สามารถใช้งานได้เช่นกัน sudo crontab -e

MINUTE HOUR * * * shutdown -r now

และในที่สุดหากคุณต้องการรีบูตครั้งเดียวคุณสามารถใช้at:

echo "shutdown -r now" | sudo at 04:30

เท่าที่ผมรู้ว่านี้จะรีบูตระบบของคุณในเวลาเดียวกันคุณสร้างไฟล์นี้ทุกวันโปรดถูกต้องฉันหากฉันผิด
sBlatt

1
ไม่มาก: มันจะรีบูตวันละครั้งทุกครั้งที่ cron.daily ทำงานซึ่งคาดเดาไม่ได้สักนิด หากคุณยังไม่ได้anacronติดตั้งเวลาท้องถิ่นคือ 06:25 น. ซึ่งอาจไม่เป็นไร (หรืออาจแย่ถ้าคุณเป็นผู้ตื่นเช้า) หากคุณทำเช่นนั้นซึ่งฉันคิดว่าเป็นค่าเริ่มต้นอาจเป็น 10 นาทีหลังจากที่เปิดเครื่องเป็นครั้งแรกในแต่ละวันซึ่งจะทำให้โกรธ ไม่ว่าจะด้วยวิธีใดก็ตามcron.dailyไม่เหมาะสำหรับเรื่องนี้
poolie

cron.daily ทำงานทุกคืนเวลา 6:25 น. ในระบบของฉัน โดยปกติจะตั้งค่าเป็นนาทีแบบสุ่มระหว่างเวลา 06:00 - 06:59 น. ดู / etc / crontab ของคุณสำหรับเวลาในระบบของคุณ
elzapp

1
ปัญหาที่ใหญ่ที่สุดในการใช้ cron.daily สำหรับสิ่งนี้คือมันอาจรบกวนงานอื่น ๆ ใน cron.daily
elzapp

1

คุณควรสร้างสคริปต์โดยใช้คำแนะนำจาก Kees Cook ...

คุณสามารถคัดลอกและวางข้อมูลด้านล่างในตัวแก้ไขข้อความและสร้างzz-rebootไฟล์ในไดเรกทอรีที่แนะนำ

หลังจากนั้นอย่าลืมคลิกขวาที่ไฟล์และกำหนดสิทธิ์การดำเนินการ หากคุณรู้สึกอยากทำโดยใช้เทอร์มินัลเพียง:

sudo chmod +x /etc/cron.daily/zz-reboot

เพื่อทำความเข้าใจสิ่งที่คุณทำจำไว้ว่าใน/etcโฟลเดอร์ที่คุณมักพบแฟ้มการกำหนดค่าและมีคุณสามารถค้นหาcron.hourly, cron.dailyและโฟลเดอร์ cron อื่น ๆ Cron ดูแลการดำเนินการแอปพลิเคชันและสคริปต์ในเวลาที่กำหนด

หากคุณต้องการเข้มงวดเกี่ยวกับเวลารีบูตเพียงหลัก

sudo crontab -e

เพื่อให้คุณสามารถแก้ไขcrontabสำหรับผู้ใช้รูทได้

ถ้าคุณรู้สึกว่าทำมันได้ดีกว่าแบบกราฟิกคุณสามารถติดตั้งได้จาก Software Center gnome-schedule หากคุณต้องการแก้ไขgnome-scheduleสำหรับผู้ใช้รูตต้องแน่ใจว่าคุณรันจากเทอร์มินัล:

gksudo gnome-schedule

ขอให้สนุกกับการเล่น! :)

PS: จุดที่ดี sBlatt! ผมสงสัยว่าถ้ามีวิธีการบังคับใด ๆcron.dailyเวลาดำเนินการด้วยตนเอง


ใน / etc / crontab มีรายการที่จะปรับเวลา แต่ afaik หากคอมพิวเตอร์ไม่ทำงานในเวลานี้จะดำเนินการบางนาทีหลังจากที่คอมพิวเตอร์เริ่มทำงาน
sBlatt

1

ฉันทำงานกับ cronjobs เป็นเวลาประมาณหนึ่งเดือนในที่ทำงานและตั้งเวลา poweroff และรีบูต มันง่ายมาก ฉันรู้ว่าสิ่งนี้ถูกถามเมื่อ 5 ปีก่อน แต่ถ้าใครยังมีปัญหาคุณสามารถใช้วิธีนี้และคุณจะถูกตั้งค่า

เปิด terminal (ctrl + T)

sudo nano /etc/crontab

เลื่อนไปจนสุดด้านล่างแล้วป้อนคำสั่งด้านล่าง

00 6 * * * root reboot 

นี่เป็นชุดสำหรับการรีบูตเวลา 6 โมงทุกวันและกด Enter

หากคุณต้องการกำหนดเวลาเปิดปิดเวลา 23.00 น. ทุกวันคุณสามารถเข้าสู่

00 23 * * * root poweroff

ฉันยังคงต้องคิดหาวิธีการเพิ่มพลังให้กับเครื่องโดยใช้ cronjob เมื่อมันหยุดทำงาน ฉันจะแก้ไขคำตอบนี้เมื่อฉันเข้าใจ

ป.ล. นี่เป็นคำตอบแรกของฉันที่โพสต์ในทุกรูปแบบ หวังว่ามันจะช่วยให้ใครบางคน !! : D


3
มีคำตอบสำหรับเนื้อหาเดียวกันเมื่อ 5 ปีที่แล้วพร้อมรายละเอียดเพิ่มเติมและการตรวจสอบไวยากรณ์อัตโนมัติ (ผ่านcrontab -e)
David Foerster

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