Ubuntu中实现定时唤醒与自动休眠功能

 更新时间:2024年09月04日 08:25:26   作者:是阿标吖  
在自动化脚本执行的时间段内唤醒系统使其正常运行,其余时间则让其进入休眠状态,以此来降低能耗,为达成这一目标,我编写了一个简易的脚本,并通过 crontab 配置了自动化任务,接下来,我会详尽地讲解整个配置过程,需要的朋友可以参考下

前言

事情是这般的,我有一台颇为老旧的华硕笔记本 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:5503:5508: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 系统可以在规定的时间段自动运行,不需要运行的时候就乖乖进入休眠状态,完全符合我的初期需求。

到此这篇关于Ubuntu中实现定时唤醒与自动休眠功能的文章就介绍到这了,更多相关Ubuntu唤醒与休眠内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • PHP脚本内存泄露导致Apache频繁宕机解决方法

    PHP脚本内存泄露导致Apache频繁宕机解决方法

    这篇文章主要介绍了PHP脚本内存泄露导致Apache频繁宕机解决方法,本文的原因是因为MaxRequestsPerChild参数没有配置正确,配置MaxRequestsPerChild后解决了本文中的问题,需要的朋友可以参考下
    2014-09-09
  • linux 程序安装目录/opt目录和/usr/local目录的区别

    linux 程序安装目录/opt目录和/usr/local目录的区别

    这篇文章主要介绍了linux 程序安装目录/opt目录和/usr/local目录的区别,需要的朋友可以参考下
    2018-06-06
  • 虚拟机克隆linux centos6.5系统网卡配置图文教程

    虚拟机克隆linux centos6.5系统网卡配置图文教程

    这篇文章主要为大家详细介绍了虚拟机克隆linux centos6.5系统网卡配置的图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • Linux配置IP地址的三种实现方式

    Linux配置IP地址的三种实现方式

    这篇文章主要介绍了Linux配置IP地址的三种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-03-03
  • Centos修改DNS重启或重启network服务后丢失问题解决方法

    Centos修改DNS重启或重启network服务后丢失问题解决方法

    这篇文章主要介绍了Centos修改DNS重启或重启network服务后丢失问题解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • Apache服务器必备基本安全设置

    Apache服务器必备基本安全设置

    这篇文章主要介绍了Apache服务器必备基本安全设置,需要的朋友可以参考下
    2014-03-03
  • Centos安装php高版本

    Centos安装php高版本

    PHP(超文本预处理器)是一种通用开源脚本语言。主要适用于Web开发领域。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多,使代码运行更快。
    2016-05-05
  • Linux查看文件夹大小以及删除大量文件方法

    Linux查看文件夹大小以及删除大量文件方法

    有时候Linux主机磁盘占用过多,需要进行手动清理,一方面是查看文件夹占用大小,另一方面是进行文件的高效删除,所以本文介绍了Linux查看文件夹大小以及删除大量文件方法,需要的朋友可以参考下
    2024-09-09
  • linux中设置nexus开机自启动的方法

    linux中设置nexus开机自启动的方法

    这篇文章主要介绍了linux中设置nexus开机自启动的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-02-02
  • Ubuntu下各种压缩与解压的方式小结

    Ubuntu下各种压缩与解压的方式小结

    这篇文章主要给大家介绍了在Ubuntu系统下各种压缩与解压的方式,其中包括.tar、.gz、.bz2、.bz、.Z、.tgz、.zip、.rar以及.lha等各个的解压与压缩方法,每一种都给出了示例代码,需要的朋友可以参考学习,一起来看看吧。
    2017-04-04

最新评论