use*_*520 17 command-line ssh debian power-management
我有一台只能通过 SSH 访问的机器,我几天前才将它更新到 Debian 10。自更新以来,它似乎在不活动时会进入睡眠状态。这在以前的更新中从未发生过,例如从 7 到 8 或从 8 到 9。似乎睡眠设置已恢复为默认状态。如何在命令行中查看和编辑电源和睡眠设置?非常感谢任何指导。谢谢!
Ste*_*itt 24
gdm3升级到 Debian 10 后,我遇到了这个问题:每当计算机停留在初始登录屏幕时,它会在一段时间后进入睡眠状态。
为了解决这个问题,我必须在运行gdm3会话时编辑 GNOME 的电源设置;这些存储在 中/etc/gdm3/greeter.dconf-defaults,要编辑的行是文件末尾“自动挂起”部分中的行:
# Automatic suspend
# =================
[org/gnome/settings-daemon/plugins/power]
# - Time inactive in seconds before suspending with AC power
# 1200=20 minutes, 0=never
# sleep-inactive-ac-timeout=1200
# - What to do after sleep-inactive-ac-timeout
# 'blank', 'suspend', 'shutdown', 'hibernate', 'interactive' or 'nothing'
sleep-inactive-ac-type='blank'
# - As above but when on battery
# sleep-inactive-battery-timeout=1200
# sleep-inactive-battery-type='suspend'
Run Code Online (Sandbox Code Playgroud)
具体来说,我改sleep-inactive-ac-type到'blank'。尽管它的名字,这不是一个应该复制的模板文件;必须在/etc/gdm3/greeter.dconf-defaults文件本身中进行更改。重新启动gdm3服务后会考虑这些更改。
我不必对 systemd 或 logind 设置进行任何更改;这意味着如果我愿意,我仍然可以手动挂起系统。
Ahm*_*sna 16
您可以根据需要尝试以下操作:
禁用挂起和休眠:
sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
Run Code Online (Sandbox Code Playgroud)
要重新启用休眠和挂起,请使用以下命令:
sudo systemctl unmask sleep.target suspend.target hibernate.target hybrid-sleep.target
Run Code Online (Sandbox Code Playgroud)
如果您只想在盖子关闭时防止暂停,您可以在 中设置以下选项/etc/systemd/logind.conf:
[Login]
HandleLidSwitch=ignore
HandleLidSwitchDocked=ignore
Run Code Online (Sandbox Code Playgroud)
重新启动服务或重新启动您的机器
systemctl restart systemd-logind.service
Run Code Online (Sandbox Code Playgroud)
小智 6
情况既棘手又愚蠢。我尝试了很多变体来猜测为什么它不起作用。
解决方案:(**在笔记本电脑 HP Elitebook 上使用 GNOME 在 Debian 10 上测试并运行)有两个greeter.dconf-defaults文件 First in/etc/gdm3/greeter.dconf-defaults和 secondary in /usr/share/gdm/greeter.dconf-defaults.
主要思想是两个文件必须相同!从根目录编辑/etc/gdm3/greeter.dconf-defaults并取消注释下面的一些行!
寻找
# sleep-inactive-ac-timeout=1200 #--default
sleep-inactive-ac-timeout=0 # new
sleep-inactive-ac-type='blank'
# - As above but when on battery
sleep-inactive-battery-timeout=0
sleep-inactive-battery-type='blank'
Run Code Online (Sandbox Code Playgroud)
只需保存它并复制到路径/usr/share/gdm/greeter.dconf-defaults
并重新启动即可。
请注意,这些文件必须相同!
PS我认为这是一个错误,因为在您编辑后/etc/gdm3/greeter.dconf-defaults, dpkg-reconfigure gdm3 --doesn 无法正常工作(应该更改/usr/share/gdm/greeter.dconf-defaults)。
显然,“挂起事件处理”有两层:
A)执行挂起操作的部分(从技术上讲,计算机进入睡眠状态)和
B) 决定何时需要暂停并要求发生暂停操作的部分。
在幕后,有暂停操作的“实现”。但是,如果人们出去吃午饭,幕后的“非交互式内核”不太可能监视用户活动并暂停系统......
桌面环境 OTOH 很容易关注用户交互并在超时后“放松”。
由 @Stephen Kitt 建议并由 @Ivan 最终确定的解决方案解决了桌面环境主动决定系统何时厌倦唤醒的问题。更具体地说:它处理 GDM =“显示管理器”阶段。显示管理器相当于Xwindows中的“winlogon”,即用户登录之前的环境。在其他地方,人们指出,如果不进行进一步配置,一旦用户登录到图形桌面,系统仍然可以进入睡眠状态超时。我会通过“X 会话接管”(或窗口管理器或其他)来解释这一点。这可能是您可以通过登录桌面会话中的“设置”应用程序进行配置的部分,即“电源”对话框有一个特定的小部件来启用/禁用超时挂起。
在幕后,事实证明 systemd 也占领了这个游乐场。但是,我发现消息来源不建议屏蔽相关的
sleep.target、、和- 据报道suspend.target,这可能会产生不利的副作用。hibernate.targethybrid-sleep.target
可能有更好的方法:编辑/etc/systemd/sleep.conf并激活以下两行:
AllowSuspend=no
AllowHibernation=no
Run Code Online (Sandbox Code Playgroud)
不确定要重新启动哪个 systemd 服务才能使新配置生效。我建议你重新启动整个 Linux 机器。
也可以看看
man systemd-sleep
man systemd-sleep.conf
Run Code Online (Sandbox Code Playgroud)
如果系统中仍然有 acpid,您可以尝试启用其调试模式并将事件记录到 syslog - 编辑/etc/default/acpid并输入
OPTIONS="-d -l"
Run Code Online (Sandbox Code Playgroud)
接下来你需要
systemctl restart acpid
Run Code Online (Sandbox Code Playgroud)
然后你也可以
grep acpid /var/log/daemon.log
Run Code Online (Sandbox Code Playgroud)
...然而,整个行动过程(acpid)如今似乎基本上没有实际意义。现在有趣的事情发生在 systemd 中,acpid 可能只适合运行自定义 shell 命令来响应 ACPI 按钮等。理论上,您可以收集挂起事件的“事件名称”,然后制定一条 acpid 规则来“删除”该事件,但对我来说,对于这是否具有防止事件发生的实际效果,尚无定论。导致实际的暂停操作。