使用 cron 每晚关闭服务器并自动重启

使用 cron 每晚关闭服务器并自动重启

我的问题与以下问题有关:

每天重启服务器吗?

我想在晚上 10 点 15 分关闭我的服务器并在早上 6 点自动重启。

我在 crontab 中添加了以下行,但它只会在早上 6 点重新启动我的服务器,而且这还不起作用:

15 22 * * * root /sbin/shutdown -r +465

但是我该怎么做呢?有没有更好的应用程序?

谢谢。

答案1

你可以使用如下 cron 行

15 22 * * * root /usr/sbin/rtcwake -m off -s 22440

(22:15 -> 6 = 7h45 = 22440 秒(如果错误请编辑;))。

  • 22:15 关闭
  • 22440秒后重启。

概要

rtcwake [-hvVlua] [-d device] [-m standby_mode] {-t time_t|-s seconds}

描述

该程序用于进入系统睡眠状态,直到指定的唤醒时间。

它使用跨平台 Linux 接口进入系统睡眠状态,并在指定时间之前退出。它使用任何支持标准驱动程序模型唤醒标志的 RTC 框架驱动程序。

这通常与旧的 apmsleep 实用程序类似,用于从 ACPI S1(待机)或 S3(挂起到 RAM)等挂起状态唤醒。大多数平台都可以实现这些功能,而无需 BIOS、APM 或 ACPI 的类似功能。

在某些系统上,这也可以像 nvram-wakeup 一样使用,从 ACPI S4(挂起到磁盘)等状态唤醒。并非所有系统都有适合此类挂起模式的持久介质。

答案2

您的 cron 行发出shutdown命令安排 465 分钟后重新启动 - 这正是您所经历的。要在给定时间内立即关闭计算机,请修改 cron 行:

15 22 * * * root /sbin/shutdown -h now

不能安排启动计算机(不重启当它已经离开之前)使用 cron 或任何其他操作系统方法 – 只是因为操作系统在命令应该运行时没有运行。但是,您大多可以在固件 (BIOS) 设置中安排启动计算机。确切的说明取决于主板的固件。

Linux 计算机通常将系统时钟(BIOS 也使用)保持在UTC 时间,因此在 BIOS 中设置启动时间时要考虑到这一点。另外,不要忘记考虑夏令时如果它适用于您所在的位置。

答案3

感谢 Melebius 的意见。关机现在工作正常。我找到了一个解决方案,也找到了启动时遇到的问题(按需唤醒,而不是按时唤醒):我现在使用 WOL。(局域网唤醒)

  1. 硬件/BIOS:在电源部分,您必须启用 PCI 或 PCIE(板载)设备的开机功能。(不同 BIOS 有所不同)检查 BIOS 电池!这是我的问题。电池没电了,一个小时后 BIOS 被设置为默认值。

  2. 软件:我使用了 ethtool 并按照此手册操作:在 Ubuntu 服务器 18.04 上设置 wol

第二种解决方案是智能插头。它可以监控您的能源消耗,您可以使用开/关定时器。只需在 BIOS 中启用开机唤醒功能即可。如果 PC 通电,它会自动重启系统。

相关内容