Eli*_*gan 31
执行此操作的最佳方法取决于您希望 Ubuntu 每半小时重启一次的原因。
所以我建议编辑你的问题来解释你为什么要这样做。
假设人们可能在本地或远程使用这台机器,最好避免在没有任何警告的情况下从他们下面重新启动 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 cron
和man 5 crontab
。+5
为其他内容以更改用户在收到重新启动警告后的时间。0,30
如果您愿意,在分钟下也可以使用。(同样,如果每 20 分钟一次,您可以写*/20
或0,20,40
。)/sbin
的PATH
变量中/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
将其他选项保留为默认值。单击添加。
从终端运行:
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+o和Ctrl+x。
请注意,如果您的 DISPLAY 实际上与 不同:0
,这将不起作用,这就是不首选此方法的原因。但是,老实说,如果您每 30 分钟重新启动一次计算机,那么您的 DISPLAY 很可能总是:0
.
上面解释的两种方法都依赖于一些 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。
sudo crontab -e
从命令行运行并将此行添加到文件中:
0,30 * * * * reboot
这告诉系统以reboot
root 身份每 30 分钟运行一次命令。有关时间语法的概述,请参见此处:http : //linuxmoz.com/crontab-syntax-tutorial/