首页 > 系统相关 >在 Ubuntu 中实现定时唤醒与自动休眠

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

时间:2024-09-03 17:52:44浏览次数:13  
标签:脚本 suspend 55 休眠 set wake Ubuntu 唤醒

前言

事情是这般的,我有一台颇为老旧的华硕笔记本 K55,前些日子装上了 Ubuntu 系统,打算将其用作个人服务器,主要用于执行一些自动化任务和脚本。然而,用了几日之后,我发觉其耗电量似乎偏大,虽说只是一点小消耗,但积少成多,一年下来都够开一个年费视频会员了……

仅仅是为了完成一些自动化任务,如此耗费着实不太划算。仔细思量:其实大部分时间我并不需要它一直处于开机状态,尤其是在晚上和白天的大部分非任务执行时段。这般想着,我便着手进行配置,让它在我需要之时自动唤醒,在不需要的时候自动进入休眠状态。作为 Ubuntu 小白的我经过一番研究和实践,总算找到了一套相对简易且有效的解决办法。今日在此记录下来分享给大家,期望能够为有类似需求的伙伴们提供些许帮助。


背景与需求

在自动化脚本执行的时间段内唤醒系统使其正常运行,其余时间则让其进入休眠状态,以此来降低能耗。以下是具体的时间段(自动唤醒与休眠):

  1. 23:55 - 00:25 正常运行,完成午夜的自动化任务。
  2. 03:55 - 04:30 自动唤醒处理凌晨的自动化任务。
  3. 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 用户能够在无需输入密码的情况下运行该脚本。

具体步骤如下:

  1. 打开 sudoers 文件编辑界面:

    sudo visudo
    
  2. 在文件中添加以下内容:

    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

相关文章

  • 【北京迅为】《stm32mp157开发板嵌入式linux开发指南》第五章 Ubuntu使用apt-get下载
         iTOP-STM32MP157开发板是基于意法半导体STARM双Cortex-A7核加单Cortex-M4核的一款多核异构处理器。Cortex-A7内核提供对开源操作系统Linux的支持,借助Linux系统庞大而丰富的软件组件处理复杂应用。M4内核上运行对于实时性要求严格的应用。         开......
  • ubuntu下载离线包
    ubuntu22.04.041.新系统更新包下载#下载系统更新包到指定目录,创建下载目录(如果尚未存在):mkdir-p/tmp/upgrade#设置APT配置文件以指定下载目录,创建或编辑APT配置文件,例如:cat>/etc/apt/apt.conf.d/99local<<EOFDir::Cache{archives"/tmp/upgrade";};EOF#下载......
  • ROS 入门-如何在Ubuntu系统中安装不同版本的ROS并编写基本示例
    引言在当今快速发展的科技时代,机器人技术正以前所未有的速度改变着我们的生活。从工业生产线上的自动化装配,到家庭中的智能助手,再到医疗领域的精密手术,机器人无处不在。然而,随着机器人应用范围的不断扩展,如何高效地开发和部署复杂的机器人系统成为了亟待解决的问题。正是在......
  • ubuntu重新分配根目录存储空间-将根目录空间缩小腾出给别的位置
    我有个1t的固态,上面装了双系统,分了四分之一给windows,四分之三给ubuntu,现在出了黑神话悟空,我想玩一玩,黑神话悟空需要130g的存储,但是我的windows空间只剩50g,而且我又不想使用机械硬盘,毕竟太慢了。于是,我想把我的ubuntu再分出四分之一给windows,相当于两个系统各占一半的空间。经过......
  • Ubuntu Server 24.04 LTS 安装 Docker 与 Docker Compose
    参考https://www.sysgeek.cn/install-docker-ubuntu/(主要参考)https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/(清华镜像站)https://blog.csdn.net/dragonstrong/article/details/118915771(ubuntu设置代理,需要梯子开启局域网访问,并指定端口号)https://blog.csdn.ne......
  • 运维系列&AI系列&Lenovo-G双系统系列(前传-装之前搜索的):ubuntu正确安装显卡驱动的姿势
    ubuntu正确安装显卡驱动的姿势ubuntu正确安装显卡驱动的姿势1.ubuntu16.04默认安装了第三方开源的驱动程序nouveau,安装nvidia显卡驱动首先需要禁用nouveau,不然会碰到冲突的问题,导致无法安装nvidia显卡驱动。2.在英伟达的官网上查找你自己电脑的显卡型号然后下载相应的......
  • Ubuntu Tips
    Git相关error:RPCfailed;curl56GnuTLSrecverror(-24):Decryptionhasfailed.https://stackoverflow.com/questions/38378914/how-to-fix-git-error-rpc-failed-curl-56-gnutlsgitconfig--globalhttp.postBuffer1048576000gitconfig--globalhttps.postBuffer1......
  • Ubuntu Snap 介绍
    UbuntuSnapsUbuntuSnaps是Ubuntu的母公司Canonical于2016年4月发布Ubuntu16.04LTS(LongTermSupport,长期支持版)时引入的一种容器化的软件包格式。自Ubuntu16.04LTS起,Ubuntu操作系统可以同时支持Snap及Debian这两种格式的安装包。与传统的dpkg/apt有着很大......
  • 在Ubuntu系统上使用Docker部署.NET 6程序
    基础用法1.安装Docker首先,确保你的Ubuntu系统上安装了Docker。可以通过以下命令安装Docker:sudoaptupdatesudoaptinstalldocker.io安装完成后,启动Docker并设置为开机自启:sudosystemctlstartdockersudosystemctlenabledocker 2.创建.NET6应用程序如果你......
  • VMware虚拟机安装的Ubuntu,桥接方式静态ip,内网可以访问,ping外网不可用
    1.环境说明系统:Ubuntu24.04环境:VMware下桥接静态IP设置2.问题:pingwww.baidu.com报错[~]pingwww.baidu.comping:www.baidu.com:Temporaryfailureinnameresolution3.解决办法(1)利用route-n命令查询网......