如何每30分钟自动重启?

use*_*498 15 cron restart

我想每 30 分钟安排一次重启我的 Ubuntu。是否有任何命令或图形方式来执行此操作?

Eli*_*gan 31

执行此操作的最佳方法取决于您希望 Ubuntu 每半小时重启一次的原因

所以我建议编辑你的问题来解释你为什么要这样做。

每 30 分钟重启一次,并在每次重启前警告用户:

假设人们可能在本地或远程使用这台机器,最好避免在没有任何警告的情况下从他们下面重新启动 Ubuntu。因此,reboot我建议不要调度命令,而是建议调度shutdown命令,以便它警告用户。

要每半小时安排一次关机并在 5 分钟前发出警告,请将其添加到/etc/crontab

#minute hour    mday    month   wday    user    command
*/30    *       *       *       *       root    shutdown -r +5
Run Code Online (Sandbox Code Playgroud)

您实际上不必添加第一行,即注释。为清楚起见,我已将其包括在内——它已经存在了。

  • 这将安排系统-r在 ( +5) 命令运行后五分钟关闭以重新启动 ( ) 。它每隔半小时运行一次 ( */30)。见man cronman 5 crontab
  • 更改+5为其他内容以更改用户在收到重新启动警告后的时间。
  • 0,30如果您愿意,在分钟下也可以使用。(同样,如果每 20 分钟一次,您可以写*/200,20,40。)
  • 确保位于 顶部附近指定/sbinPATH变量中/etc/crontab。否则,shutdown(under command) 将必须被调用为/sbin/shutdown

如果机器在那个时候启动并运行,该命令将始终在半小时标记处运行。这将导致每半小时宣布一次关闭,并在每小时 5 分钟和 35 分钟后执行。

  • 这里的一个好处是管理员可以使用sudo shutdown -c.
  • 如果计算机在预定命令运行的特定时间关闭,它将不会运行。如果这不足以满足您的需求,则您必须以不同的方式安排重新启动。(这不是特定于 的使用,shutdown但如果您正在安排 ,则同样适用reboot。)在这种情况下,请编辑您的问题以解释您的特定需求。(我建议anacron这样做,但您的时间间隔太短了。)

使管理员更容易完全防止自动重启:

您可能希望进行设置,以便管理员轻松挂起所有自动安排的重启:

#minute hour    mday    month   wday    user    command
*/30    *       *       *       *       root    [ -e /etc/noautoreboot ] || shutdown -r +5
Run Code Online (Sandbox Code Playgroud)

这以相同的方式安排重新启动——每半小时一次,有五分钟的警告——除了如果名为的文件noautoreboot存在于/etc.

  • 这个控制文件可以由管理员创建:

      sudo touch /etc/noautoreboot
    
    Run Code Online (Sandbox Code Playgroud)
  • 可以通过以下方式删除:

      sudo rm /etc/noautoreboot
    
    Run Code Online (Sandbox Code Playgroud)
  • 请注意,重要的是文件是否存在,而不是它包含的内容。

  • 如果计划重新启动并警告用户,创建该文件,(即将到来的)重新启动仍将发生。

  • 这是如何运作的?它采用一个短路-evaluated运营商(||),其简写:

    如果 /etc/noautoreboot不存在,请运行shutdown -r +5

    这个答案解释了短路运算符如何执行if-then逻辑。要获得简短、直观且高度非正式的解释,您可以通过以下方式阅读命令:

    /etc/noautoreboot存在!或者,运行shutdown -r +5

    查看man [以了解测试本身是如何执行的。


Jor*_*Lis 12

我喜欢通过告诉会话管理器我们想要重新启动来这样做。这可以在没有 root 权限的情况下完成,我们会得到一个很好的窗口,警告我们系统将重新启动 - 如果我们愿意,甚至我们可以取消重新启动。

图形方式 - 首选方法

gnome-schedule从 Ubuntu 软件中心安装。如果您不想安装任何额外的东西,请使用终端方式。

gnome-schedule从破折号打开,创建一个新的重复任务,并设置这些选项:

  • 简介:随便你
  • 命令: dbus-send --print-reply --dest="org.gnome.SessionManager" /org/gnome/SessionManager org.gnome.SessionManager.Reboot
  • 选择命令正下方的X 应用程序
  • 时间和日期,高级:
    • 分钟:0,30

将其他选项保留为默认值。单击添加


终端方式 - 无需额外软件

从终端运行:

crontab -e
Run Code Online (Sandbox Code Playgroud)

添加这一行:

0,30 * * * * DISPLAY=:0 dbus-send --print-reply --dest="org.gnome.SessionManager" /org/gnome/SessionManager org.gnome.SessionManager.Reboot
Run Code Online (Sandbox Code Playgroud)

保存并退出。假设您正在使用nano(默认),请按Ctrl+oCtrl+x

请注意,如果您的 DISPLAY 实际上与 不同:0,这将不起作用,这就是不首选此方法的原因。但是,老实说,如果您每 30 分钟重新启动一次计算机,那么您的 DISPLAY 很可能总是:0.

不使用 Gnome 或 Unity?

上面解释的两种方法都依赖于一些 gnome 组件,可以在 Gnome 会话和 Unity 上找到。如果您想在其他环境(例如 Kubuntu 的 KDE、Kubuntu 的 LXDE...)上执行此操作,您最好将命令替换为以下命令:

dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart
Run Code Online (Sandbox Code Playgroud)

这不会要求确认,并且会立即重新启动,但可以在所有环境中使用,当然,假设您没有手动卸载 ConsoleKit。


Kev*_*hen 7

sudo crontab -e从命令行运行并将此行添加到文件中:

0,30 * * * * reboot

这告诉系统以rebootroot 身份每 30 分钟运行一次命令。有关时间语法的概述,请参见此处:http : //linuxmoz.com/crontab-syntax-tutorial/

  • 这不起作用,因为`reboot` 必须以`root` 身份运行,这会将其添加到用户的个人crontab 中,因此它以非root 用户身份运行。(同样的事情与 `sudo reboot` 也不起作用,因为 `sudo` 会尝试提示输入密码并失败。)应该使用 `/etc/crontab` 代替(请注意它的语法略有不同)。 (3认同)