Tôi muốn lên lịch khởi động lại Ubuntu của mình sau mỗi 30 phút. Có bất kỳ lệnh hoặc một cách đồ họa để làm điều đó?
Tôi muốn lên lịch khởi động lại Ubuntu của mình sau mỗi 30 phút. Có bất kỳ lệnh hoặc một cách đồ họa để làm điều đó?
Câu trả lời:
Cách tốt nhất để làm điều này sẽ phụ thuộc vào lý do tại sao bạn muốn Ubuntu khởi động lại sau mỗi nửa giờ.
Vì vậy, tôi khuyên bạn nên chỉnh sửa câu hỏi của bạn để giải thích lý do tại sao bạn muốn làm điều này.
Giả sử mọi người có thể đang sử dụng máy, dù là cục bộ hay từ xa, tốt nhất là tránh khởi động lại Ubuntu từ bên dưới mà không có bất kỳ cảnh báo nào. Do đó, thay vì lên lịch cho reboot
lệnh, tôi khuyên bạn nên lập lịch cho shutdown
lệnh để nó cảnh báo người dùng.
Để lên lịch tắt máy cứ sau nửa giờ với cảnh báo 5 phút trước đó, hãy thêm điều này vào /etc/crontab
:
#minute hour mday month wday user command
*/30 * * * * root shutdown -r +5
Bạn thực sự không phải thêm dòng nắm tay, đó là một nhận xét. Tôi đã bao gồm nó cho rõ ràng - một cái gì đó giống như nó đã có.
-r
) năm phút sau khi ( +5
) lệnh chạy. Nó chạy mỗi cứ sau nửa giờ ( */30
). Xem man cron
và man 5 crontab
.+5
thành thứ khác để thay đổi thời gian người dùng có bao lâu sau khi được cảnh báo về việc khởi động lại.0,30
dưới phút cũng sẽ làm việc, nếu bạn thích điều đó. (Tương tự, nếu cứ sau 20 phút, bạn có thể viết */20
hoặc 0,20,40
.)/sbin
là trong PATH
biến được chỉ định gần đầu /etc/crontab
. Nếu không, shutdown
(dưới command
) sẽ phải được gọi là /sbin/shutdown
.Lệnh sẽ luôn chạy trên mốc nửa giờ, nếu máy hoạt động và chạy vào thời điểm đó . Điều này sẽ khiến việc tắt máy được thông báo cứ sau nửa giờ và được thực hiện vào lúc 5 phút 35 phút trước giờ.
sudo shutdown -c
.shutdown
nhưng sẽ được áp dụng như nhau nếu bạn đang lên lịch reboot
.) Trong trường hợp đó, vui lòng chỉnh sửa câu hỏi của bạn để giải thích nhu cầu cụ thể của bạn. (Tôi khuyên bạn nên anacron
làm điều này, nhưng khoảng thời gian của bạn quá ngắn.)Bạn có thể muốn thiết lập tính năng này để quản trị viên dễ dàng tạm dừng tất cả các lần khởi động lại theo lịch tự động:
#minute hour mday month wday user command
*/30 * * * * root [ -e /etc/noautoreboot ] || shutdown -r +5
Lịch trình này khởi động lại theo cùng một cách - cứ sau nửa giờ, với cảnh báo năm phút - ngoại trừ việc nó sẽ không lên lịch khởi động lại nếu một tệp có tên noautoreboot
tồn tại /etc
.
Tập tin kiểm soát này có thể được tạo bởi quản trị viên với:
sudo touch /etc/noautoreboot
Nó có thể bị xóa bằng:
sudo rm /etc/noautoreboot
Lưu ý rằng đó có phải là tập tin tồn tại hay không , không phải là những gì nó chứa.
Nếu khởi động lại được lên lịch và người dùng được cảnh báo, thì tệp được tạo, khởi động lại (ngay lập tức sắp tới) sẽ vẫn xảy ra.
Cái này hoạt động ra sao? Nó sử dụng một ngắn mạch -evaluated hoặc nhà điều hành ( ||
) là viết tắt cho:
Nếu
/etc/noautoreboot
không tồn tại, hãy chạyshutdown -r +5
.
Câu trả lời này giải thích cách thức ngắn mạch và và hoặc các nhà khai thác có thể thực hiện if
- then
logic. Để giải thích ngắn gọn, trực quan và không chính thức, bạn có thể đọc lệnh theo cách này:
/etc/noautoreboot
tồn tại Hoặc, chạyshutdown -r +5
.
Xem man [
để xem thử nghiệm chính nó được thực hiện như thế nào.
Tôi thích làm điều này bằng cách nói với Trình quản lý phiên chúng tôi muốn khởi động lại. Điều này có thể được thực hiện mà không có quyền root và chúng tôi nhận được một cửa sổ đẹp cảnh báo chúng tôi rằng hệ thống sẽ được khởi động lại - chúng tôi có thể hủy khởi động lại nếu muốn.
Cài đặt gnome-schedule
từ Trung tâm phần mềm Ubuntu. Nếu bạn không muốn cài đặt thêm bất cứ thứ gì, hãy thực hiện theo cách thức Terminal Terminal.
Mở gnome-schedule
từ dấu gạch ngang, tạo một tác vụ lặp lại mới và đặt các tùy chọn sau:
dbus-send --print-reply --dest="org.gnome.SessionManager" /org/gnome/SessionManager org.gnome.SessionManager.Reboot
Để các tùy chọn khác ở giá trị mặc định của chúng. Nhấp vào Thêm .
Chạy từ thiết bị đầu cuối:
crontab -e
Thêm dòng này:
0,30 * * * * DISPLAY=:0 dbus-send --print-reply --dest="org.gnome.SessionManager" /org/gnome/SessionManager org.gnome.SessionManager.Reboot
Cứu thoát. Giả sử bạn đang sử dụng nano
(cái mặc định), nhấn Ctrl + o và Ctrl + x .
Vui lòng lưu ý rằng điều này sẽ không hoạt động nếu HIỂN THỊ của bạn thực sự khác biệt :0
và đó là lý do phương pháp này không được ưa thích. Nhưng, thành thật mà nói, nếu bạn khởi động lại máy tính của mình sau mỗi 30 phút, thì HIỂN THỊ của bạn rất có thể sẽ luôn như vậy :0
.
Cả hai phương pháp được giải thích ở trên phụ thuộc vào một số thành phần gnome, được tìm thấy cả trên phiên Gnome và Unity. Nếu bạn muốn thực hiện việc này trên các môi trường khác (chẳng hạn như KDE của Kubfox, LXDE của Kubfox ...), tốt hơn bạn nên thay thế lệnh bằng môi trường này thay thế:
dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart
Điều này sẽ không yêu cầu xác nhận và tất nhiên sẽ khởi động lại ngay lập tức, nhưng sẽ hoạt động trên tất cả các môi trường, giả sử bạn chưa gỡ cài đặt ConsoleKit theo cách thủ công.
Chạy sudo crontab -e
từ dòng lệnh và thêm dòng này vào tệp:
0,30 * * * * reboot
Điều này báo cho hệ thống chạy lệnh reboot
sau mỗi 30 phút với quyền root. Để biết tổng quan về cú pháp thời gian, xem tại đây: http://linuxmoz.com/crontab-syntax-tutorial/
reboot
phải được chạy như root
, và điều này thêm nó vào crontab cá nhân của người dùng, vì vậy nó chạy như người dùng không root. (Điều tương tự với sudo reboot
cũng sẽ không hoạt động vì sudo
sẽ cố gắng nhắc mật khẩu và không thành công.) /etc/crontab
Nên được sử dụng cho việc này thay vào đó (xin lưu ý cú pháp của nó hơi khác nhau).
sudo crontab -e
và sau đó tạo một mục cron.
Sử dụng cron
để sắp xếp công việc cứ sau 30 phút. Chỉ công việc đó vào một tập lệnh shell mà đơn giản là có
reboot
trong đó.
Vì cron
chạy bằng root, bạn không cần phải làm gì đặc biệt về quyền.
Có, tôi thực sự không bao giờ trên bất kỳ hệ thống nào của mình cho phép crontabs dựa trên người dùng (Có nhiều cách tốt hơn để cho phép người dùng thực hiện các tác vụ theo lịch trình của người dùng) cron được thiết kế ngay từ đầu hoàn toàn để tự động hóa hệ thống và không cho người dùng lên lịch thông thường nhiệm vụ. Những thứ như luân chuyển log (vẫn còn xảy ra ngày hôm nay)
Khởi động lại PHẢI được chạy như root để hoạt động chính xác, giải pháp thay thế là đặt bit dính của nó, để khi chạy như một người dùng thông thường, nó thực sự hoạt động như root và hoạt động như mong đợi, nhưng khi đó bạn sẽ mở máy chủ của mình để cho phép thường xuyên người dùng để khởi động lại nó theo ý muốn.
Bạn thậm chí có thể tự động hóa cuộc gọi đến SUDO, nhưng tôi cần đào sâu vào cuộc gọi đó, không chắc bạn có thể tự động hóa nhu cầu mật khẩu với SUDO không (tôi không sử dụng nó thường xuyên, tôi chỉ muốn thả thẳng vào thư mục gốc vỏ sử dụng SU)
Nếu bạn thiết lập nó trong crontab trên toàn hệ thống thì mọi thứ đều được chạy dưới quyền root, vì vậy câu lệnh của tôi là chính xác (tôi chỉ bỏ qua đề cập rằng nên sử dụng hệ thống rộng một hệ thống)
Đối với câu hỏi của bạn "Tại sao bọc nó trong một kịch bản?" cũng tại sao không? Nếu OP đặt nó trong tập lệnh shell, thì đến một lúc nào đó trong tương lai cần thêm vào tập lệnh, anh ta chỉ cần thêm vào tập lệnh, thay vì phải mở crontab xác định vị trí công việc, loại bỏ nó, thay thế bằng tập lệnh shell, sau đó viết một kịch bản với cái cũ + mới.
Hơn 20 năm làm Quản trị viên / Nhà phát triển Sys làm việc với các hệ thống từ thời Ultrix / Solaris và thậm chí VAX đã dạy tôi một điểm chính.
Nếu bạn có thể làm cho nó dễ dàng hơn lúc ban đầu, thì nó vẫn dễ dàng cho thời gian sống của nó.
Tôi thực sự không có được thái độ "Tối giản" này mà rất nhiều quản trị viên hệ thống thời hiện đại có, trong đó làm càng ít càng tốt là chìa khóa để thành công. Hầu hết các máy chủ ngày nay dễ dàng hơn gấp 20 lần so với bất kỳ thứ gì tôi từng bắt đầu và loại kịch bản này (Gói trong các tập lệnh shell) được khuyến nghị thực hành sau đó, vì vậy thực sự không có gì phải bàn cãi khi không thực hiện ngay bây giờ.
Trừ khi bạn thực sự muốn sử dụng Unix / Linux, trong trường hợp đó, gắn thẻ tất cả vào mục cron và kết nối mọi thứ theo cách nó nên được thực hiện :-)
Tuy nhiên, tôi thực hiện lạc đề và cũng hiểu rằng nhiều người ngày nay bị ném vào tận cùng và bảo phải làm mọi thứ hoạt động, vì vậy họ thiếu thời gian (và thường là thiên hướng) để ngồi xuống và tìm hiểu về các kỹ thuật mới (hoặc cũ trong trường hợp này) hoặc thậm chí muốn chơi với những thứ này ngoài công việc.
Cá nhân tôi, có một máy chủ duy nhất trong số những máy chủ mà tôi điều hành hoàn toàn dành riêng cho tôi để chơi, vì vậy tôi có thể kiểm tra những thứ như thế này ... tốt hơn là A hoặc B, vì vậy không phải là không có lý do mà tôi khuyên bạn nên điều này.