从命令行检查睡眠设置?

从命令行检查睡眠设置?

Linux (Debian) 机器上的 sleep 是如何工作的?我通常不使用带有键盘和鼠标的盒子。我通常通过 SSH 连接到它。它是否处于睡眠状态,但当我连接到它时“醒来”?

如果我正在运行网络服务器怎么办?它会休眠直到 GET 请求到达,然后醒来,还是会在休眠时忽略传入的数据包?

我有一个我不想暂停的后台进程。如何从命令行检查睡眠设置是什么?

“电源管理”能力如何决定何时休眠、何时不休眠?它是否会查看正在运行的进程,并根据这些进程的内容以某种方式决定休眠?

答案1

这是一个很大的话题。从...开始ACPI高级配置和电源接口)。自 2000 年代初以来,它就随 Linux 提供。

简而言之,它是通过 BIOS 进行管理的,BIOS 可以配置为检查连接到计算机的设备上的活动,并使用它来触发 CPU 唤醒。

可以在网络活动时唤醒(尽管典型的 Debian 系统可能没有为此进行配置)。对于相关主题,请参阅

答案2

正如 Thomas Dickey 所说,电源管理是一个相当多层次的事情。他主要涵盖了低级/硬件接口方面,但我认为您对更高级别的安排更感兴趣。

在用户视角的最底层,有一个powermgmt-base包,它只包含一些脚本,如/sbin/acpi_available/sbin/apm_available/usr/bin/on_ac_power,可用于确定其他脚本中的当前电源状态和一般 ACPI/APM 功能。

最重要的是upower,它通常是用户会话和电源管理框架之间的现代接口。它通过 D-Bus 进行通信。它使用包中的工具和脚本pm-utils来实际触发电源管理操作,例如挂起到 RAM 或睡眠,并使用 PolicyKit(包policykit-1)来决定允许谁和/或什么来发出此类操作的命令。

除此之外upower,还有gnome-power-manager(Gnome)、powerdevil(KDE)或sleepd(以上都不是/可选)实际上会根据需要触发电源管理操作。

pm-utils包可以使用各种包中的许多工具(例如hibernateuswsusp、等ethtool)来执行其操作。它还具有许多用于定制的钩子:这些钩子可用于在睡眠/唤醒时执行操作,或停止不需要的睡眠操作。hdparmcpufrequtils

通常,Web 服务器在等待客户端时不会在电源管理意义上休眠:尽管如此,它肯定会在 CPU 降频的情况下空闲,而无事可做。从睡眠模式唤醒需要一些时间,这可能会导致 Web 服务出现过多的额外延迟。但如果您特别需要,您的网卡可能会在检测到流量时将您的系统从睡眠模式(甚至完全关闭)唤醒:查看ethtool <network interface> | grep Wake-on您的网卡支持哪些唤醒功能。

upower --dump将列出电源管理了解的所有电池、显示器和其他相关内容:在我的桌面上,它甚至了解我的无线鼠标的电池状态。

如果您的系统不包含gnome-power-managerpowerdevilsleepd,那么我认为它在任何情况下都不会自动进入睡眠状态(笔记本电脑/UPS 电池电量可能严重不足除外)。这些组件可以根据其配置的电源策略决定自行使系统进入睡眠状态。您应该查看这些组件的文档,无论它们中的哪一个适用于您的系统。

相关内容