图形方式 - 首选方法

图形方式 - 首选方法

我想安排每 30 分钟重启一次 Ubuntu。有什么命令或图形化方式可以实现吗?

答案1

最好的方法取决于为什么您希望 Ubuntu 每半小时重启一次。

因此我建议编辑你的问题来解释你为什么希望这样做。

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

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

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

#minute hour    mday    month   wday    user    command
*/30    *       *       *       *       root    shutdown -r +5

实际上,您不必添加第一行,这是一条注释。我将其包含在内是为了清晰起见——它已经在那里了。

  • 这将安排系统在命令运行-r五分钟后( )停机并重新启动+5( )。它每隔半小时运行一次(*/30)。请参阅man cronman 5 crontab
  • 更改+5为其他内容来改变用户在收到重启警告后的等待时间。
  • 0,30如果您愿意,每 1 分钟也可以。(类似地,如果是每 20 分钟,您可以写成*/200,20,40。)
  • 确保在顶部附近指定的变量/sbin中。否则,(在PATH/etc/crontabshutdowncommand) 将必须被调用为/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

noautoreboot此计划重启以相同的方式进行 - 每半小时一次,提前五分钟发出警告 - 但如果中存在名为 的文件,它将不会安排重启/etc

  • 管理员可以使用以下命令创建此控制文件:

      sudo touch /etc/noautoreboot
    
  • 可以使用以下方法删除:

      sudo rm /etc/noautoreboot
    
  • 请注意文件是否存在,重要的不是它包含什么。

  • 如果已安排重启并且用户收到警告,然后文件创建后,(即将发生的)重新启动仍会发生。

  • 这是如何工作的?它使用短路-评估或者运算符 ( ||) 的简写形式为:

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

    这个答案解释短路或者运算符可以执行if-then逻辑。对于简短、直观且非常不正式的解释,您可以这样阅读该命令:

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

    man [了解测试本身是如何进行的。

答案2

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

图形方式 - 首选方法

从 Ubuntu 软件中心安装gnome-schedule。如果您不想安装任何其他东西,请通过终端方式进行安装。

gnome-schedule从仪表板打开,创建一个新的重复任务,并设置以下选项:

  • 简介:随心所欲
  • 命令:dbus-send --print-reply --dest="org.gnome.SessionManager" /org/gnome/SessionManager org.gnome.SessionManager.Reboot
  • 选择十、应用就在命令下方。
  • 时间和日期,高级:
    • 分钟:0.30

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


终端方式 - 无需额外的软件

从终端运行:

crontab -e

添加此行:

0,30 * * * * DISPLAY=:0 dbus-send --print-reply --dest="org.gnome.SessionManager" /org/gnome/SessionManager org.gnome.SessionManager.Reboot

保存并退出。假设您正在使用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

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

答案3

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

0,30 * * * * reboot

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

相关内容