如何每30分钟自动重启?


14

我想安排每30分钟重启一次Ubuntu。有任何命令或图形方式可以做到吗?


12
我很好奇:每30分钟重启一次的目的是什么?
2013年

Answers:


30

最好的方法取决于原因您要每半小时重新启动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如果您愿意的话,不到一分钟也可以使用。(类似地,如果每20分钟写一次*/200,20,40。)
  • 确保位于顶部附近指定/sbinPATH变量中/etc/crontab。否则,shutdown(下的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

此计划以每半小时一次的方式进行重新引导,警告时间为五分钟,不同之处在于,如果noautoreboot存在名为的文件,则不会安排重新引导/etc

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

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

    sudo rm /etc/noautoreboot
    
  • 请注意,重要的是文件是否存在不是文件所包含的内容。

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

  • 这是如何运作的?它使用短路评估运算符(||)作为以下各项的简写:

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

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

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

    请参阅man [以查看测试本身是如何执行的。


12

我喜欢通过告诉会话管理器我们要重启来做到这一点。这可以在没有root权限的情况下完成,并且我们会看到一个漂亮的窗口,警告我们系统将要重新启动-即使我们愿意,也可以取消重新启动。

图形方式-首选方法

安装 gnome-schedule从Ubuntu软件中心。如果您不想安装其他任何东西,请执行Terminal Way。

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

  • 说明:随你想要
  • 命令: dbus-send --print-reply --dest="org.gnome.SessionManager" /org/gnome/SessionManager org.gnome.SessionManager.Reboot
  • 选择X应用在命令下面。
  • 时间和日期,高级:
    • 分钟: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。


6

运行sudo crontab -e命令行,这行添加到文件:

0,30 * * * * reboot

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


3
这将无法正常reboot运行,因为必须以方式运行root,并将其添加到用户的个人crontab中,因此它将以该非root用户身份运行。(与相同的东西sudo reboot也将不起作用,因为sudo它将尝试提示输入密码并失败。)/etc/crontab应对此进行替代(请注意,其语法略有不同)。
伊利亚·卡根

1
您可以发出sudo crontab -e然后创建一个cron条目。
塔斯(Tass)2013年

-3

用于cron每30分钟安排一次作业。将该工作指向一个简单的shell脚本

reboot

在里面。

以来 cron是以root身份运行的,因此就权限而言,您不需要做任何特殊的事情。

更新资料

是的,我确实这样做,实际上我从来没有在任何系统上允许基于用户的crontabs(有更好的方法允许用户执行用户级的计划任务)cron从一开始就设计纯粹是为了系统自动化,而不是供用户计划普通的任务。日志旋转之类的事情(今天仍然发生)

重新启动必须以root身份运行才能正常工作,另一种方法是设置它的粘性位,以便当以普通用户身份运行时,它实际上以root身份运行并按预期运行,但是这样做之后,您需要打开服务器以允许正常运行用户可以随意重新启动它。

您甚至可以自动执行一次SUDO调用,但我需要深入研究这一点,不确定是否可以使用SUDO来自动输入密码(我不经常使用它,我更喜欢直接输入root使用SU的外壳)

如果在系统范围的crontab中进行设置,那么所有内容都将以root身份运行,因此我的说法是准确的(我只是忽略了应该使用系统范围的内容)

至于您的问题“为什么要用脚本包装?” 好吧,为什么不呢?如果OP将其放在shell脚本中,那么将来需要添加到该脚本中,他只需将其添加到脚本中,而不必打开crontab定位该作业,将其删除,然后将其替换为shell脚本,然后用新旧代码编写脚本。

作为系统管理员/开发人员,使用可追溯到Ultrix / Solaris甚至VAX的系统已有20多年的经验,它教会了我一个重点。

如果您可以从一开始就使它变得更容易,那么一生中仍然很容易。

我真的没有现代许多系统管理员所拥有的“简约”态度,在这种情况下,尽可能少地做是成功的关键。如今,大多数服务器的功能都比我刚开始使用的任何服务器都要强大20倍以上,因此建议在这种情况下(使用Shell脚本包装),因此现在没有理由不这样做。

除非您真的想使用Unix / Linux硬核,否则将其标记在cron条目上,并按照应做的方式将所有内容通过管道传输:-)

但是,我确实离题了,也了解到,如今有很多人陷入困境,被告知要使事情行之有效,因此他们没有时间(通常是倾向)坐下来学习新技术(或甚至在工作以外都想玩这些东西。

我个人而言,在我运行的服务器中只有一台服务器专门用于我的游戏,因此我可以测试类似的东西……最好是A或B,因此我不无理由建议任何一个这个。


请参阅我的更新。.如果您愿意,您现在可以给我1分;-)
shawty 2013年

再试一次……请耐心等待……
shawty 2013年

2
现在这根本不再是答案!(此外,您还会混淆粘性位setuid位。)
Eliah Kagan 2013年

是的,这是一个答案,我输入了它,并将其添加为答案,因此它是一个答案!!!
2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.