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


11

ใช้เทอร์มินัลหรือไฟล์ทุบตีฉันจะกำหนดค่า Ubuntu ให้รีบูตทุกวันได้อย่างไร (พูดเช่น) 03:00

กล่าวอีกนัยหนึ่งฉันต้องการกำหนดการรีบูตอัตโนมัติผ่านเทอร์มินัล

ฉันไม่สามารถค้นหาสิ่งที่เกี่ยวข้องกับสิ่งนี้ใน Google หรือ AskUbuntu และฉันก็ค่อนข้างใหม่สำหรับ Ubuntu โดยทั่วไป (เพิ่งได้รับ Raspberry Pi ใหม่ของฉัน)

คำตอบ:


13

แก้ไขรายการ crontab โดยใช้crontab -eคำสั่ง (โดยค่าเริ่มต้นสิ่งนี้จะแก้ไขผู้ใช้ที่เข้าสู่ระบบในปัจจุบัน crontab) และเพิ่มบรรทัดต่อไปนี้:

0 3 * * * echo $PASSWD | sudo -S reboot
#change $PASSWD with your password

บันทึกไฟล์และตรวจสอบรายการ crontab crontab -lใหม่ที่มี

หากคุณต้องการใช้เท่านั้น:

0 3 * * * sudo reboot

ในฐานะที่เป็น crontab สิ่งนี้จะไม่ทำงานตามปกติและคุณควรตรวจสอบโพสต์นี้เพื่อดูว่าคุณจะทำให้มันทำงานได้อย่างไร

หรือเพิ่ม crontab อย่างง่ายเข้ากับไฟล์ crontab ของผู้ใช้รูทที่เสนอพา ธ ที่สมบูรณ์สำหรับrebootคำสั่งโดยใช้sudo crontab -e:

0 3 * * * /sbin/reboot

คุณไม่สามารถใส่สิ่งนี้ลงใน crontab ของรูทและไม่ต้องกังวลเกี่ยวกับecho $PASSWD
Dan

ฉันไม่รู้เรื่องนี้ นี่เป็นข้อผิดพลาดของ cron หรือเป็นเรื่องปกติหรือไม่ ฉันหมายความว่าถ้าคุณแก้ไข crontab เป็น root แล้วงานจะดำเนินการก็ต่อเมื่อคุณเข้าสู่ระบบในฐานะ root หรือไม่ ฉันคิดว่ามันผิด (หรือควรเป็น)
NickTux

@ RaduRădeanuนั่นไม่จริง cronjobs รูทจะทำงานโดยไม่ต้องล็อกอินในฐานะรูท
OrangeTux

@OrangeTux คุณมีสิทธิ์ขอโทษที่ฉันพูดเพราะฉันทดสอบโดยไม่ต้องให้เส้นทางที่สมบูรณ์สำหรับrebootคำสั่ง มิฉะนั้นจะไม่ทำงาน ดูการแก้ไขใหม่ของฉัน
Radu Rădeanu

@NikTh ผมผิดให้ดูที่ความคิดเห็นดังกล่าวข้างต้น
Radu Rădeanu

1

โปรดทราบว่าการใส่รหัสผ่านแบบข้อความของคุณในไฟล์ข้อความไม่ใช่ความคิดที่ดีดังนั้นจึงเป็นการดีที่สุดที่จะให้งานนี้ทำงานเป็นรูทจากการเริ่มต้น โดยปกติแล้วแทนที่จะแก้ไข crontab รากของผ่านทางcrontabคำสั่งซึ่งออกรายการในสถานที่ที่ค่อนข้างคลุมเครือฉันชอบที่จะใส่พวกเขาอย่างชัดเจนใน/var/spool/cron/crontabs /etc/cron.dรายการใน cron.d จะถูกเรียกใช้เป็นรายการ crontab ของระบบและถือว่าเป็นไฟล์กำหนดค่าดังนั้นพวกเขาจึงควรอยู่รอดการรีบูตระบบอัปเดตและอัปเกรดและคุณสามารถระบุผู้ใช้ที่กำลังรันอยู่ได้อย่างชัดเจน:

echo "0 3 * * * root /sbin/shutdown -h 5 'System will reboot in 5 minutes'" | sudo tee /etc/cron.d/reboot-at-3-am

หากคุณไม่ต้องการเวลาเฉพาะ แต่ต้องการให้ระบบรีบูตวันละครั้งเพิ่มการปฏิบัติการหรือสคริปต์ใน /etc/cron.dailyและมันจะทำงานโดยอัตโนมัติในเวลาที่กำหนดไว้ (เวลาระบบ 6:25 AM ตามค่าเริ่มต้น):

echo "/sbin/shutdown -h 5 'System will reboot in 5 minutes'" | sudo tee /etc/cron.daily/reboot-me

สังเกตว่าแทนที่จะรีบูตระบบโดยไม่มีการเตือนฉันตั้งเตือน 5 นาทีดังนั้นถ้าใครเข้าสู่ระบบพวกเขามีโอกาสบันทึกงานของพวกเขาหรือแม้กระทั่งหยุดการทำงานด้วยการหยุดsudo shutdown -cแทนที่จะดึงระบบ ออกจากใต้พวกเขา คุณสามารถปรับเปลี่ยนสิ่งเหล่านี้ได้หากคุณต้องการให้คำเตือนที่มากขึ้น (ตัวอย่างเช่นใช้shutdown -h 60และเรียกใช้คำสั่งเวลา 2:00 น. และคุณจะได้รับคำเตือน 1 ชั่วโมงแก่ผู้ใช้)

นี่ขึ้นอยู่กับประสบการณ์ที่ผ่านมาของฉัน; เมื่อถึงจุดหนึ่งคุณจะเข้าสู่ระบบในการทำงานเมื่อรายการ crontab ทำงานและหากเพิ่งรีบูตโดยไม่มีการเตือนคุณจะเป็นแพนด้าที่น่าเศร้ามาก


-1

ทำไมคุณต้องการ - หรือต้องทำเช่นนี้? ในขณะที่มันค่อนข้างง่ายที่จะทำมีวิธีแก้ปัญหาที่ดีกว่ากับ Linux ซึ่งไม่เกี่ยวข้องกับการรีบูต ซึ่งแตกต่างจาก Windows ระบบปฏิบัติการที่ใช้ Linux ไม่ต้องรีบูตเครื่องเกือบทุกอย่างยกเว้นการอัพเกรดเคอร์เนล

หากคุณอธิบายสิ่งที่คุณพยายามจะบรรลุเราอาจช่วยคุณได้ดีกว่า


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