开机时间超过30分钟时,请重新启动计算机

时间:2018-09-30 18:17:22

标签: linux bash uptime

我目前正在通过正常运行时间进行控制。 如果正常运行时间大于1小时,计算机将重新启动。

但是我不知道如何控制计算机是否一天或一天​​以上,因为目前我只控制小时。

是否可以通过正常运行时间来控制几天,几小时和几分钟? 开机时间大于1小时时,我需要重新启动计算机。 如果时间是1天0个小时,则会失败。

对不起,我的解释是,它是一个执行一系列操作的脚本,而alfinal存在此函数,它负责控制此参数。

感谢阅读我

2 个答案:

答案 0 :(得分:2)

不确定我是否完全理解您的问题。

如果您希望计算机在一定时间后始终重启,这是非常不寻常的,请使用cron。将其添加到/etc/crontab(或者,如果您的计算机上有一个/etc/cron.d目录,您也可以创建一个具有以下内容的文件/etc/cron.d/reboot):

@reboot    root    sleep 1800; /sbin/reboot

(自适应reboot的路径以匹配您的系统; 1800是30分钟的秒数,将其更改为所需的任何延迟)


另一方面,您可能正在编写将重新引导服务器的脚本,并且如果它在正常运行时间超过30分钟之前运行,则可能希望使其停止工作。

然后,我了解您在解析uptime的结果时遇到了困难,您应该使用/proc/uptime来以秒为单位提供正常运行时间:

#!/bin/sh
not_before=1800             # Number of seconds - adapt to your needs
uptime=$(cut -d . -f 1 /proc/uptime)

[ "$uptime" -ge "$not_before" ] && exec reboot
echo "Sorry, only $uptime s of uptime; you must wait $((not_before - uptime)) seconds" >&2
exit 1

答案 1 :(得分:1)

如果要在脚本中执行此操作,请使用uptime | grep "天“ to determine whether to execute things (in an if condition), then do anything you want inside the if`的结果。

使该脚本可执行,并将其放入crontab中,每隔5分钟左右运行一次。

有关Cron的更多信息:https://wiki.archlinux.org/index.php/Cron