前言
事情是这般的,我有一台颇为老旧的华硕笔记本 K55,前些日子装上了 Ubuntu 系统,打算将其用作个人服务器,主要用于执行一些自动化任务和脚本。然而,用了几日之后,我发觉其耗电量似乎偏大,虽说只是一点小消耗,但积少成多,一年下来都够开一个年费视频会员了……
仅仅是为了完成一些自动化任务,如此耗费着实不太划算。仔细思量:其实大部分时间我并不需要它一直处于开机状态,尤其是在晚上和白天的大部分非任务执行时段。这般想着,我便着手进行配置,让它在我需要之时自动唤醒,在不需要的时候自动进入休眠状态。作为 Ubuntu 小白的我经过一番研究和实践,总算找到了一套相对简易且有效的解决办法。今日在此记录下来分享给大家,期望能够为有类似需求的伙伴们提供些许帮助。
背景与需求
在自动化脚本执行的时间段内唤醒系统使其正常运行,其余时间则让其进入休眠状态,以此来降低能耗。以下是具体的时间段(自动唤醒与休眠):
- 23:55 - 00:25 正常运行,完成午夜的自动化任务。
- 03:55 - 04:30 自动唤醒处理凌晨的自动化任务。
- 08:55 - 12:30 自动唤醒处理早上的自动化任务。
为达成这一目标,我编写了一个简易的脚本,并通过 crontab
配置了自动化任务。接下来,我会详尽地讲解整个配置过程。
一、编写定时唤醒脚本
首先,我们需要编写一个脚本,用于设定系统在特定时间段内的唤醒时间。这个脚本乃是整个自动化唤醒的核心部分。我们将其命名为 set_wake_suspend.sh
,并把它存放在 /opt/script/
目录下。
脚本内容如下:
#!/bin/bash
# 23:55 - 00:25 时间段
sudo rtcwake -m no -l -t $(date +%s -d '23:55 today') # 唤醒时间为 23:55
# 03:55 - 04:30 时间段
sudo rtcwake -m no -l -t $(date +%s -d '03:55 today') # 唤醒时间为 03:55
# 08:55 - 12:30 时间段
sudo rtcwake -m no -l -t $(date +%s -d '08:55 today') # 唤醒时间为 08:55
脚本解析:
- 在
23:55
、03:55
和08:55
三个时间点分别设置唤醒时间,确保系统在这些时段前自动唤醒。 - 通过
rtcwake
命令,系统能够在设定的时间点自动从休眠中唤醒。
脚本执行权限设置:
为了能够顺利执行,我们需要为这个脚本赋予执行权限:
sudo chmod +x /opt/script/set_wake_suspend.sh
二、免密码执行 sudo 命令
由于脚本中的 rtcwake
命令需要以 sudo
权限运行,而我们的默认账户为 ubuntu
,那么我们需要对 sudoers
文件进行配置,让 ubuntu
用户能够在无需输入密码的情况下运行该脚本。
具体步骤如下:
-
打开
sudoers
文件编辑界面:sudo visudo
-
在文件中添加以下内容:
ubuntu ALL=(ALL) NOPASSWD: /opt/script/set_wake_suspend.sh
这样做的目的:
- 允许
ubuntu
用户无需密码即可执行/opt/script/set_wake_suspend.sh
脚本中的所有命令。
三、配置 crontab 实现自动化
最后,我们需要通过 crontab
来安排定时任务,以确保系统在正确的时间段内运行,并在其他时间自动进入休眠状态。
编辑 crontab 文件:
sudo crontab -e
添加以下定时任务:
# 每次休眠之前先设置好下一次唤醒的时间
24 0 * * * /opt/script/set_wake_suspend.sh
25 0 * * * /usr/bin/systemctl suspend
29 4 * * * /opt/script/set_wake_suspend.sh
30 4 * * * /usr/bin/systemctl suspend
29 12 * * * /opt/script/set_wake_suspend.sh
30 12 * * * /usr/bin/systemctl suspend
crontab 解析:
- 每次在系统即将休眠之前,运行
set_wake_suspend.sh
脚本,设置好下一次的唤醒时间。 - 在指定的结束时间,系统自动进入休眠状态。
结语
经过这样一番配置,现在我的 Ubuntu 系统可以在规定的时间段自动运行,不需要运行的时候就乖乖进入休眠状态,完全符合我的初期需求。
最后希望这篇文章能对你有所助益!倘若你也有类似的需求,不妨尝试一下这个方法。当然,如果你有更优的方案或建议,欢迎在评论区分享,相互交流学习。我们一起成长进步!
标签:脚本,suspend,55,休眠,set,wake,Ubuntu,唤醒 From: https://blog.csdn.net/u010042702/article/details/141868048