zoukankan      html  css  js  c++  java
  • Linux 下使用rtcwake实现定时休眠和唤醒设备

    查看是否安装rtcwake

    whereis rtcwake
    rtcwake: /usr/sbin/rtcwake /usr/share/man/man8/rtcwake.8.gz

    查看rtcwake帮助

    rtcwake --help
    Usage:
     rtcwake [options]
    
    Options:
     -d, --device <device>    select rtc device (rtc0|rtc1|...)
     -n, --dry-run            does everything, but suspend
     -l, --local              RTC uses local timezone
     -m, --mode <mode>        standby|mem|... sleep mode
     -s, --seconds <seconds>  seconds to sleep
     -t, --time <time_t>      time to wake
     -u, --utc                RTC uses UTC
     -v, --verbose            verbose messages
    
     -h, --help     display this help and exit
     -V, --version  output version information and exit
    
    For more details see rtcwake(8).

    使用方法

     standby

    普通待机模式,为默认选项,对应ACPI  state S1

     mem

    待机到内存,即内存之外把其他设备都进入低功耗模式,对应ACPI state S3

     disk

    待机到硬盘,即休眠,把电脑的当前状态保存到硬盘,几乎不消耗外部电源,对应ACPI state S4

    off 

    通过调用系统的关机命令来休眠, 对应ACPI state S5

    可以通过以下命令查阅当前系统支持的休眠模式

    cat /sys/power/state
    standby mem disk

    执行该命令的时候需要root权限

    1. 系统休眠后20seconds唤醒,加-v选项可以看到更多的打印信息

    sudo rtcwake -v -s 20 -m mem 或
    
    sudo rtcwake -v -s 20 -m standby

    打印信息:

    rtcwake -v -s 20 -m mem
    Using UTC time.
    delta   = 0
    tzone   = 0
    tzname  = UTC
    systime = 1393296617, (UTC) Tue Feb 25 02:50:17 2014
    rtctime = 1393296617, (UTC) Tue Feb 25 02:50:17 2014
    alarm 0, sys_time 1393296617, rtc_time 1393296617, seconds 20
    rtcwake: wakeup from "mem" using /dev/rtc0 at Tue Feb 25 02:50:38 2014
    suspend mode: mem; suspending system

    2. 系统在指定的时间醒来

    rtcwake -v -t `date -d 10:53 +%s` -m mem
    Using UTC time.
    delta   = 0
    tzone   = 0
    tzname  = UTC
    systime = 1393296754, (UTC) Tue Feb 25 02:52:34 2014
    rtctime = 1393296754, (UTC) Tue Feb 25 02:52:34 2014
    alarm 1393296780, sys_time 1393296754, rtc_time 1393296754, seconds 0
    rtcwake: wakeup from "mem" using /dev/rtc0 at Tue Feb 25 02:53:00 2014
    suspend mode: mem; suspending system
    rtcwake -v -t `date -d 10:54 +%s` -m standby
    Using UTC time.
    delta   = 0
    tzone   = 0
    tzname  = UTC
    systime = 1393296794, (UTC) Tue Feb 25 02:53:14 2014
    rtctime = 1393296794, (UTC) Tue Feb 25 02:53:14 2014
    alarm 1393296840, sys_time 1393296794, rtc_time 1393296794, seconds 0
    rtcwake: wakeup from "standby" using /dev/rtc0 at Tue Feb 25 02:54:00 2014
    suspend mode: standby; suspending system

    如果发现systime 和rtctime时间不一致,需要利用hwclock进行调整。


    原文链接:https://blog.csdn.net/bulreed/article/details/19907691

  • 相关阅读:
    浅谈Dynamic 关键字系列之三(下):ExpandoObject,DynamicObject,DynamicMetaObject
    完全详解Silverlight 下载文件
    在内部循环中Continue外部循环
    浅谈Dynamic 关键字系列之四:dynamic为什么比反射快
    Android学习笔记(三)基础知识(2)
    Android学习笔记(一) 使用选择部件
    Android学习笔记(四)时钟、时间
    每周一道数据结构(三)树、二叉树、最优二叉树
    Linux内核设计与实现笔记(二) 内存管理、进程地址空间
    Windows下Hadoop eclipse开发平台搭建
  • 原文地址:https://www.cnblogs.com/runtimeexception/p/12170200.html
Copyright © 2011-2022 走看看