我的问题与以下问题有关:
我想在晚上 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。(局域网唤醒)
硬件/BIOS:在电源部分,您必须启用 PCI 或 PCIE(板载)设备的开机功能。(不同 BIOS 有所不同)检查 BIOS 电池!这是我的问题。电池没电了,一个小时后 BIOS 被设置为默认值。
软件:我使用了 ethtool 并按照此手册操作:在 Ubuntu 服务器 18.04 上设置 wol
第二种解决方案是智能插头。它可以监控您的能源消耗,您可以使用开/关定时器。只需在 BIOS 中启用开机唤醒功能即可。如果 PC 通电,它会自动重启系统。