关闭linux服务器并在特定时间自动开启

JLW*_*LWK 8 server command-line shutdown cron rtc

我有一个作业,讲师要我创建一个 bash 脚本,以便在晚上 11 点关闭服务器并在早上 6 点打开它。我可以通过使用来做到这一点sudo shutdown -h 23:00并且它有效。但问题是我不知道如何在早上 6 点自动打开它,我找不到任何可以做到这一点的命令。任何帮助,将不胜感激。

Syl*_*eau 10

首先,您需要检查是否可以使用RTC唤醒警报来唤醒系统:

sudo sh -c "echo 0 > /sys/class/rtc/rtc0/wakealarm"
sudo sh -c "echo `date '+%s' -d '+ 3 minutes'` > /sys/class/rtc/rtc0/wakealarm"
cat /sys/class/rtc/rtc0/wakealarm
Run Code Online (Sandbox Code Playgroud)

现在检查:

cat /proc/driver/rtc
Run Code Online (Sandbox Code Playgroud)

这应该返回一个参数列表。检查alrm_time未来 3 分钟和alrm_date今天。

如果它工作正常,请创建一个/usr/local/sbin/shutwake脚本:

#!/bin/bash 
sh -c "echo 0 > /sys/class/rtc/rtc0/wakealarm" 
sh -c "echo `date '+%s' -d '+ 7 hours'` > /sys/class/rtc/rtc0/wakealarm" 
shutdown -h now
Run Code Online (Sandbox Code Playgroud)

最后编辑您的用户crontab,键入crontab -e并添加以下行:

0 23 * * * /usr/local/sbin/shutwake
Run Code Online (Sandbox Code Playgroud)