
正文
linux命令休眠唤醒 linux待机唤醒
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
Linux内核睡眠唤醒状态
Linux内核支持四种系统睡眠状态即: mem、standby、freeze and disk 。
可通过文件 /sys/power/state 进行读写访问,区别如下:
在 RockPI 4A 单板 Debian 系统 Linux 4.4 内核中,查看电源状态,仅支持 freeze和mem 两种。
原因:
1、 Platform 驱动只实现了 mem 类型的 suspend
2、只有在 hibernation 可用时,才支持 STD
1、 psci 初始化流程
suspend_set_ops() 函数赋值数组 pm_states 实现如下:
2、power state显示
/sys/power/state 文件显示的内容,通过 state_show() 函数实现,该函数最终显示数组 pm_states 的内容。
参考:
Documentation/power/states.txt
相关问答
Q1: linux无读者硬盘不能休眠
hd-idle无论怎样设置都无法使用硬盘在空闲时休眠,实在找不到原因。在查找相关资料时发现在linux操作系统还有个叫hdparm的硬盘控制软件,然后在OPENWRT软件搜索果真有这个软件,然后就安装试试。不想真能让我的硬盘在设置好的空闲时间后进入省电模式也可以说是休眠模式吧!给出我的安装使用过程。注:我的路由(HG255D刷OPENWRT)装有迅雷固件、个人博客、aria2、百度同步+常用共享组件!使用还是可以的负载不算很高。之前有人说装迅雷固件后不能休眠,但我的可以休眠。不能休眠的可以试试这个软件...
OPENWRT路由上安装与设置:
一、安装hdparm
opkg update
opkg install hdparm
二、执行命令:
hdparm -S 60 /dev/sda (放到开机启动项就可以每次开机都生效!)
hdparm -y /dev/sda (这个命令是立即休眠,测试硬盘是否休眠成功。)
说明:hdparm -S 60 /dev/sda 设置超时值(5分钟)使硬盘进入休眠模式(省电模式)(这个 S数值/12=分钟); /dev/sda 为挂载的硬盘路径,ls /dev/sda*查看你的盘符。
三、执行完hdparm -S 60 /dev/sda 这个命令时你的路由已经设置为5分钟休眠了。(注:5分钟硬盘无操作时省电模式,休眠时接到读写命令会自动唤醒进入工作模式)**Linux hdparm 命令**
四、hdparm功能说明:显示与设定硬盘的参数。
语法:hdparm -CfghiIqtTvyYZ-A 0或1-d 0或1-K 0或1-n 0或1-P -S -W 0或1[设备]
补充说明:hdparm可检测,显示与设定IDE或SCSI硬盘的参数。
测试各硬盘读取速度判断硬盘故障
在服务端命令窗口中执行如下命令
hdparm -t /dev/hda (IDE硬盘)
hdparm -t /dev/sda (SATA、SCSI、硬RAID卡阵列)
hdparm -t /dev/md0 (软RAID设备)
测试结果在空载情况下应 40M/s ,在负载情况下平均应 20M/s 为正常,如测试结果极低则需要进一步使用硬盘专用检测工具测试是否为硬盘故障。
参数:
-a 设定读取文件时,预先存入块区的分区数,若不加上选项,则显示目前的设定。
-A0或1 启动或关闭读取文件时的快取功能。
-c 设定IDE32位I/O模式。
-C 检测IDE硬盘的电源管理模式。
-d0或1 设定磁盘的DMA模式。
-f 将内存缓冲区的数据写入硬盘,并清楚缓冲区。
-g 显示硬盘的磁轨,磁头,磁区等参数。
-h 显示帮助。
-i 显示硬盘的硬件规格信息,这些信息是在开机时由硬盘本身所提供。
-I 直接读取硬盘所提供的硬件规格信息。
-k0或1 重设硬盘时,保留-dmu参数的设定。
-K0或1 重设硬盘时,保留-APSWXZ参数的设定。
-m 设定硬盘多重分区存取的分区数。
-n0或1 忽略硬盘写入时所发生的错误。
-p 设定硬盘的PIO模式。
-P 设定硬盘内部快取的分区数。
-q 在执行后续的参数时,不在屏幕上显示任何信息。
-r0或1 设定硬盘的读写模式。
-S 设定硬盘进入省电模式前的等待时间。
-t 评估硬盘的读取效率。
-T 平谷硬盘快取的读取效率。
-u0或1 在硬盘存取时,允许其他中断要求同时执行。
-v 显示硬盘的相关设定。
-W0或1 设定硬盘的写入快取。
-X 设定硬盘的传输模式。
-y 使IDE硬盘进入省电模式。
-Y 使IDE硬盘进入睡眠模式。
Q2: Linux系统下如何使硬盘进入休眠状态?
在linux下linux命令休眠唤醒,我喜欢用命令让系统进入休眠linux命令休眠唤醒:
$ echo mem | sudo tee /sys/power/state
当然,不用每次都要敲这么一长串,可以把它加入到一个脚本中。 再将该脚本命令加入到/etc/sudoers文件,就可以避免每次都需要输入用户密码了。
man hdparm
hdparm -Y /dev/hd*linux命令休眠唤醒:使硬盘进入睡眠模式;
hdparm -y /dev/hd*:使硬盘进入省电模式;
hdparm -S[num] /dev/hd*:设置超时值使硬盘进入睡眠模式;
唤醒硬盘hdparm好像没有相应参数,实际上linux命令休眠唤醒你去操作硬盘就会自动唤醒硬盘,使用ioctl有个参数可以唤醒硬盘,你可以查看硬盘操作的相应头文件。
具体看hdparm的源代码,实际是使用ioctl操作硬盘相应寄存器。
Q3: Linux网络唤醒
在Linux下linux命令休眠唤醒,当机器处于睡眠或待机状态时linux命令休眠唤醒,想通过网络进行唤醒(WOL,wake on lan)时,可以通过如下相关命令来实现linux命令休眠唤醒:
在A机(嵌入式设备)上,让其睡眠,可以使用如下命令:
ethtool -s eth0 wol g
echo standby /sys/power/state 或echo mem /sys/power/state
对于echo到state里面linux命令休眠唤醒的内容,可以cat下state,就知道可以设置什么值了,而eth0可以根据实际需要通过哪个网口来唤醒设置。
在B机上(嵌入式设备或PC),唤醒A时需先知道Alinux命令休眠唤醒的MAC地址,才可以通过局域网进行唤醒,唤醒时使用如下命令:
ether-wake -i eth0 XX:XX:XX:XX:XX:XX
对于eth0可以根据实际设置,必须是跟A机连接到同一网段的网卡接口,而XX:XX:XX:XX:XX:XX则是A机的MAC地址。
对于上面用到的所有命令,要根据实际看有没有,没有则需要安装或交叉编译移植下,还有要注意电源管理部分内容,看能不能提供相关操作。
关于WOL,可以参考如下网址了解:
关于睡眠、待机等概念,可以参考如下网址了解:
Q4: Linux 自动唤醒
最近做无线网络在系统多次休眠唤醒后是否正常linux命令休眠唤醒的测试linux命令休眠唤醒,但每次休眠后都需要手动点击键盘来唤醒系统,显而易见linux命令休眠唤醒的这种方法需要人来值守,很不放便。
此时便想是否有做自动唤醒的程序,毕竟这种需求也挺正常的,应该有人已经做过linux命令休眠唤醒了。因此就开始查找自动唤醒的方法,果然就发现了 rtcwake 这个程序,这个程序是让系统进入休眠模式并在指定的时间后唤醒。立刻便觉得这个程序很神奇,然后就去看它的源码来找出它的实现方式,这边发现了本文的主题 RTC 子系统。
RTC 子系统在目录 /sys/class/rtc/ 下,会根据设备创建对应的目录,需要在内核中开启支持,配置如下linux命令休眠唤醒:
debian/ubuntu 的系统可以在 /boot/config-$(uname -r) 查看内核的编译选项, archlinux 可以在 /proc/config.gz 查看。
RTC 目录下的文件含义可以在 sysfs-class-rtc 中查看。
RTC 目录中的 wakealarm 文件内容便是下次触发唤醒时间的时间,默认这个文件是没有值的。文件的内容需要设置是时间的秒数,可以向下面这样设置:
这就表示在 1 minute 后触发唤醒事件。
所以做休眠唤醒测试的流程如下:
Q5: Linux内核睡眠唤醒调试
本文基于 RockPI 4A 单板 Debian 系统 Linux4.4 内核介绍下睡眠唤醒( suspend/resume )的一些调试方法。
1、关闭串口睡眠
在Linux内核睡眠过程中,会先调用 suspend_console() 函数使串口进入睡眠状态,这样会导致后续设备驱动的睡眠过程不可见。可以在boot启动参数中增加 no_console_suspend 参数,显示设备驱动睡眠日志。
2、修改串口日志等级
修改串口日志打印等级,显示更多调试信息。
3、打开设备睡眠唤醒时间
设置 pm_print_times 参数,可以显示设备驱动睡眠唤醒时间,方便调试时查看哪个函数处理占用时间过长。
在调试Linux内核睡眠唤醒功能时,可以使用 RTC 做唤醒源,在系统睡眠5秒后,自动唤醒系统。
在 arch/arm64/configs/rockchip_linux_defconfig 文件中配置宏 CONFIG_PM_TEST_SUSPEND 。
唤醒日志如下:
linux命令休眠唤醒的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux待机唤醒、linux命令休眠唤醒的信息别忘了在本站进行查找喔。







