Làm thế nào tôi có thể lên lịch khởi động lại hàng đêm?


81

Tôi đang gặp một số vấn đề định kỳ khi chạy một ứng dụng cụ thể, XBMC. Nếu tôi sử dụng XBMC thường xuyên, tôi dường như không gặp vấn đề gì nhưng nếu tôi không để ý trong hơn 12 giờ, tôi cần khởi động lại để nó hoạt động trở lại.

Tôi biết khởi động lại theo lịch trình KHÔNG phải là câu trả lời nhưng cho đến khi tôi có thể tìm ra vấn đề tôi cần lên lịch khởi động lại vào mỗi buổi sáng để vợ tôi có thể sử dụng nó nếu tôi đi và nó không bị ném ra ngoài cửa sổ :)

Có ai nhận không?

Câu trả lời:


133

Tôi sẽ sử dụng cron (nên đã được cài đặt):

Chỉnh sửa crontab:

sudo crontab -e

Lần đầu tiên bạn có thể phải chọn trình chỉnh sửa ưa thích của mình (như nano)

Chèn một dòng như

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

ở phía dưới Giải trình:

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

vì vậy dòng

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

sẽ khởi động lại hệ thống của bạn mỗi ngày vào lúc 4:05 sáng. (4:00 sáng + 5 phút)

Ctrl+ X, Y, EnterNên giúp bạn có được ra khỏi crontab (nếu sử dụng nano)

Lưu ý: bạn có thể phải chạy crontab -ebằng root, vì tắt máy cần root. crontab -emở một tệp trong / tmp thay vì crontab thực tế để nó có thể kiểm tra lỗi crontab mới của bạn. Nếu không có lỗi, thì crontab thực tế của bạn sẽ được cập nhật.


1
Cảm ơn bạn về thông tin. Điều duy nhất tôi phải làm là thay đổi lệnh thành / sbin / shutdown để nó hoạt động với tôi.

1
điều này đã không làm việc cho tôi. sử dụng cả hai crontab -esudo crontab -elưu tệp vào một vị trí tạm thời khi bạn thoát ra (ví dụ: /tmp/crontab.Y88XQl/crontab) và tác vụ không chạy. tôi đã buộc phải chỉnh sửa / etc / crontab trực tiếp
wal

@wal "crontab -e mở tệp trong / tmp thay vì crontab thực tế để nó có thể kiểm tra lỗi crontab mới của bạn và ngăn bạn ghi đè lên crontab thực tế của bạn với những lỗi đó. Nếu không có lỗi, thì crontab thực tế của bạn sẽ đã được cập nhật." unix.stackexchange.com/questions/197504/ móc
Christh

14

Thêm điều này để /etc/cron.daily/zz-rebootlàm việc:

#!/bin/sh
shutdown -r now

sudo chmod a+x /etc/cron.daily/zz-reboot. Tiền tố "zz" sẽ buộc nó chạy cuối cùng khỏi tất cả các tập lệnh khác trong thư mục đó. Kiểm tra /etc/crontabxem thời gian nào trong ngày sẽ thực sự xảy ra:

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

Nếu điều đó không hiệu quả, thì một mục cron "thông thường" cũng có thể hoạt động, thông qua sudo crontab -e

MINUTE HOUR * * * shutdown -r now

Và cuối cùng, nếu bạn chỉ muốn thực hiện khởi động lại một lần, bạn có thể sử dụng at:

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

theo như tôi biết điều này sẽ khởi động lại hệ thống của bạn cùng lúc bạn tạo tệp này mỗi ngày, vui lòng sửa cho tôi nếu tôi sai
sBlatt

1
Không hoàn toàn: nó sẽ khởi động lại một lần mỗi ngày vào bất cứ lúc nào cron.d Daily chạy, điều này hơi khó đoán. Nếu bạn chưa anacroncài đặt, đó là 06:25 giờ địa phương, điều này có thể ổn (hoặc có thể là khủng khiếp nếu bạn là người dậy sớm). Nếu bạn làm, mà tôi nghĩ là mặc định, nó có thể là 10 phút sau khi máy bật lần đầu tiên mỗi ngày, điều này sẽ gây phẫn nộ. Ở mức nào, cron.dailykhông phù hợp cho việc này.
poolie

cron.d Daily chạy mỗi đêm lúc 6:25 trên hệ thống của tôi. Điều này thường được đặt thành một phút ngẫu nhiên trong khoảng thời gian từ 06:00 đến 06:59. Xem / etc / crontab của bạn để biết thời gian trên hệ thống của bạn
elzapp

1
Vấn đề lớn nhất khi sử dụng cron.d Daily cho việc này là nó có thể can thiệp vào các công việc khác trong cron.d Daily.
elzapp

1

Bạn nên tạo một tập lệnh bằng cách sử dụng các hướng dẫn do Kees Cook đưa ra ...

Bạn chỉ có thể sao chép và dán thông tin bên dưới vào bất kỳ trình soạn thảo văn bản nào và tạo zz-reboottệp trong thư mục được đề xuất.

Sau đó, chỉ cần nhớ nhấp chuột phải vào tệp và gán quyền thực thi. Nếu bạn cảm thấy thích sử dụng thiết bị đầu cuối, chỉ cần:

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

Để hiểu rõ hơn về những gì bạn đang làm nhớ rằng trong /etcthư mục mà bạn thường thấy các file cấu hình và ở đó bạn có thể tìm thấy cron.hourly, cron.dailyvà thư mục cron khác. Cron đảm nhiệm việc thực thi các ứng dụng và tập lệnh tại một thời điểm nhất định.

Nếu bạn muốn nghiêm ngặt về thời gian khởi động lại chỉ là chữ số

sudo crontab -e

để bạn có thể chỉnh sửa crontabcho người dùng root.

Nếu bạn cảm thấy tốt hơn khi thực hiện đồ họa, bạn có thể cài đặt từ lịch trình gnome của Trung tâm phần mềm. Nếu bạn muốn sửa đổi gnome-schedulengười dùng root, hãy đảm bảo rằng bạn chạy nó từ thiết bị đầu cuối:

gksudo gnome-schedule

Vui chơi xung quanh! :)

ps: điểm tuyệt vời! Tôi đã tự hỏi nếu có cách nào để buộc cron.dailythời gian thực hiện bằng tay.


Trong / etc / crontab có một mục để điều chỉnh thời gian, nhưng afaik, nếu máy tính không hoạt động vào lúc này, nó sẽ thực thi vài phút sau khi máy tính khởi động
sBlatt

1

Tôi đã làm việc với các cronjobs khoảng một tháng tại nơi làm việc và lên lịch trình khởi động, và khởi động lại. Nó rất đơn giản. Tôi biết điều này đã được hỏi khoảng 5 năm trước, nhưng nếu bất cứ ai vẫn gặp vấn đề, bạn có thể sử dụng phương pháp này và bạn sẽ được thiết lập.

mở thiết bị đầu cuối (ctrl + T)

sudo nano /etc/crontab

cuộn tất cả xuống phía dưới và nhập lệnh bên dưới

00 6 * * * root reboot 

cái này được đặt để khởi động lại vào lúc 6 giờ sáng hàng ngày và nhấn enter

Nếu bạn muốn lên lịch tắt điện vào lúc 11 giờ tối hàng ngày, bạn có thể nhập

00 23 * * * root poweroff

Tôi vẫn cần tìm ra cách bật nguồn máy bằng cronjob khi máy bị hỏng. Tôi sẽ chỉnh sửa câu trả lời này khi tôi tìm ra nó.

PS đây là câu trả lời đầu tiên của tôi đăng trên bất kỳ hình thức nào; hy vọng nó sẽ giúp được ai đó !! :CƯỜI MỞ MIỆNG


3
Có một câu trả lời với cùng một nội dung từ 5 năm trước với chi tiết hơn và xác minh cú pháp tự động (thông qua crontab -e).
David foerster

1
Đừng quên khởi động lại cron:sudo /etc/init.d/cron restart
brcebn
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.