Làm thế nào để khởi động lại cứ sau 30 phút tự động?


14

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 đó?


12
Tôi chỉ tò mò: mục đích khởi động lại sau mỗi 30 phút là gì?
Rafał Cieślak

Câu trả lời:


30

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.

Khởi động lại sau mỗi 30 phút và cảnh báo người dùng trước mỗi lần khởi động lại:

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 rebootlệnh, tôi khuyên bạn nên lập lịch cho shutdownlệ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ó.

  • Điều này sẽ lên lịch cho hệ thống ngừng hoạt động để khởi động lại ( -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 cronman 5 crontab.
  • Thay đổi +5thà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,30dướ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 */20hoặc 0,20,40.)
  • Hãy chắc chắn /sbinlà trong PATHbiế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ờ.

  • Một lợi ích ở đây là quản trị viên có thể hủy việc tắt máy vừa được công bố sudo shutdown -c.
  • Nếu máy tính không hoạt động trong thời gian cụ thể khi lệnh được lên lịch sẽ chạy, nó sẽ không chạy. Nếu điều đó không phù hợp với nhu cầu của bạn, bạn sẽ phải lên lịch khởi động lại theo cách khác. (Điều này không cụ thể đối với việc sử dụng shutdownnhư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 anacronlàm điều này, nhưng khoảng thời gian của bạn quá ngắn.)

Giúp quản trị viên dễ dàng ngăn chặn việc khởi động lại tự động hơ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 noautoreboottồ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ạy shutdown -r +5.

    Câu trả lời này giải thích cách thức ngắn mạch hoặc các nhà khai thác có thể thực hiện if- thenlogic. Để 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/noautoreboottồn tại Hoặc, chạy shutdown -r +5.

    Xem man [để xem thử nghiệm chính nó được thực hiện như thế nào.


12

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.

Phương pháp đồ họa - Phương pháp ưa thích

Cài đặt gnome-scheduletừ 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-scheduletừ 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:

  • Mô tả: Bất cứ điều gì bạn muốn
  • Chỉ huy: dbus-send --print-reply --dest="org.gnome.SessionManager" /org/gnome/SessionManager org.gnome.SessionManager.Reboot
  • Chọn ứng dụng X ngay bên dưới lệnh.
  • Thời gian và ngày, Nâng cao:
    • Phút: 0,30

Để các tùy chọn khác ở giá trị mặc định của chúng. Nhấp vào Thêm .


The Terminal Way - Không cần phần mềm bổ sung

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 + oCtrl + 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 :0và đó 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.

Không sử dụng Gnome hay Unity?

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.


6

Chạy sudo crontab -etừ 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 rebootsau 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/


3
Điều này sẽ không hoạt động, như rebootphả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 rebootcũng sẽ không hoạt động vì sudosẽ cố gắng nhắc mật khẩu và không thành công.) /etc/crontabNê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).
Eliah Kagan

1
Bạn có thể phát hành sudo crontab -evà sau đó tạo một mục cron.
Tass

-3

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 đó.

cronchạy bằng root, bạn không cần phải làm gì đặc biệt về quyền.

Cập nhật

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.


Xem cập nhật của tôi .. bạn có thể trả lại cho tôi 1 điểm ngay bây giờ nếu bạn muốn ;-)
Shawty

Hãy thử lại ... hãy kiên nhẫn ...
Shawty

2
Điều này bây giờ không còn là một câu trả lời nữa! (Ngoài ra, bạn đang nhầm lẫn giữa bit dínhbit setuid .)
Eliah Kagan

Vâng, đó là một câu trả lời, tôi đã gõ nó, thêm nó vào như một câu trả lời do đó nó là một câu trả lời !!!
choàng
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.