C-O*_*tto 8 linux debian power-management
我想/etc/pm/suspend.d/在允许系统挂起之前放置一个需要网络访问(非常短的时间)的脚本。但是,即使使用名为“001_something”的脚本/etc/pm/suspend.d/,/usr/lib/pm-utils/sleep.d/我也无法访问任何网络。这似乎在脚本运行之前被禁用。
为什么网络被禁用?我怎样才能启用它?
另外,我无法使用 pm-suspend.log in /var/log。似乎一旦系统恢复,挂起部分的文件就会被覆盖?
在 中观察到以下情况daemon.log:
Feb 7 22:09:04 zenbook NetworkManager[3606]: <info> sleep requested (sleeping: no enabled: yes)·
Feb 7 22:09:04 zenbook NetworkManager[3606]: <info> sleeping or disabling...·
Feb 7 22:09:04 zenbook NetworkManager[3606]: <info> (wlan0): now unmanaged·
Feb 7 22:09:04 zenbook NetworkManager[3606]: <info> (wlan0): device state change: activated -> unmanaged (reason 'sleeping') [100 10 37]·
Feb 7 22:09:04 zenbook NetworkManager[3606]: <info> (wlan0): deactivating device (reason 'sleeping') [37]·
Run Code Online (Sandbox Code Playgroud)
我正在使用带有 Gnome 3 的 Debian 测试。
编辑:问题与 pm-utils 无关。据我所知,NetworkManager 禁用网络(在 nm-manager.c:do_sleep_wake 中)。我还不知道如何解决这个问题。请参阅NetworkManager:发送系统进入睡眠状态时禁用网络
首先,我会确认您的挂起功能正常。查看 quirks 页面并确认您的挂起功能正常运行,而不仅仅是看起来运行正常。
检查以确保您的001_something脚本是可执行的!
% chmod +x 001_something
Run Code Online (Sandbox Code Playgroud)
检查以确保您的脚本符合pm-utils预期。
示例脚本
#!/bin/bash
case "$1" in
hibernate|suspend)
ACTION BEFORE SUSPEND/HIBERNATE
;;
thaw|resume)
ACTION AFTER RESUME
;;
*)
;;
esac
exit $?
Run Code Online (Sandbox Code Playgroud)
注意:您是否hibernate|suspend在 case/switch 语句的正确部分尝试使用网络?
接下来,我将确认您的001_something脚本实际上被挂起/休眠正确接收,方法是让它简单地将某个字符串回显到文件中,以便您知道它正在工作。
echo "yup I'm working" > /tmp/pmck_`date +%Y-%T`.log
Run Code Online (Sandbox Code Playgroud)
然后,您应该会看到诸如pmck_2013-16:08:11.login 的文件/tmp。
如果上面的.d目录正在运行,我会制作一个001_something并将/var/log/pm-suspend.log您认为被覆盖的文件复制到 下的其他文件中/tmp,这样您至少可以确认日志记录是正确的。这可能会让您更深入地了解正在发生的事情。
cp /var/log/pm-suspend.log /tmp/pmlg_`date +%Y-%T`.log
Run Code Online (Sandbox Code Playgroud)
您也可以将钩子文件的名称更改00-something为001_something? 不确定,但手册页指示了这些值。
SLEEP HOOK ORDERING CONVENTION
00 - 49
User and most package supplied hooks. If a hook assumes that all of the usual services and userspace infrastructure
is still running, it should be here.
50 - 74
Service handling hooks. Hooks that start or stop a service belong in this range. At or before 50, hooks can assume
that all services are still enabled.
75 - 89
Module and non-core hardware handling. If a hook needs to load/unload a module, or if it needs to place non-video
hardware that would otherwise break suspend or hibernate into a safe state, it belongs in this range. At or before
75, hooks can assume all modules are still loaded.
90 - 99
Reserved for critical suspend hooks.
Run Code Online (Sandbox Code Playgroud)
将以下内容添加到您的001_something脚本中:
TMP=/tmp/pmip_`date +%Y-%T`.log
# network status?
ip link show > $TMP
# dns working?
dig google.com +answer >> $TMP
# can we ping google?
ping -c 5 www.google.com >> $TMP
Run Code Online (Sandbox Code Playgroud)
我遇到了这个 debian 错误报告,想知道这是否可能是您的问题的原因。该错误描述了 HAL 和 pm-utils 的问题。听起来像删除 HAL 修复了网络问题。
此外,还有这个链接,它为特定于 Debian 的挂起/恢复问题提供建议。提到了一种通过PM_DEBUG=true在/usr/lib/pm-utils/pm-functions文件中设置变量来增加 pm-utils 日志记录的方法。
摘抄
为 pm-utils 启用调试
挂起和恢复进程的日志在文件/var/log/pm-suspend.log 中。默认情况下,它包含适度冗长的信息。可以通过在文件 /usr/lib/pm-utils/pm-functions 的开头插入 line export PM_DEBUG=true 来启用更多信息以进行调试。
也许这可能有助于让您更深入地了解 pm-utils 正在发生的事情!
pm-utils?如果问题似乎与 无关pm-utils,则可能是由于acpi。当您合上笔记本电脑的盖子时,acpi会触发一个事件,该事件具有与之关联的操作。
% more /etc/acpi/events/lm_lid
event=button[ /]lid
action=/etc/acpi/actions/lm_lid.sh %e
Run Code Online (Sandbox Code Playgroud)
% more /etc/acpi/actions/lm_lid.sh
#! /bin/sh
test -f /usr/sbin/laptop_mode || exit 0
# lid button pressed/released event handler
/usr/sbin/laptop_mode auto
Run Code Online (Sandbox Code Playgroud)
仔细观察,laptop_mode您会发现该工具负责做各种事情,其中之一是管理网络设备的状态。
notebook-mode 维护一个目录,/etc/laptop-mode/conf.d,类似于其他 unix 工具。其中有与以太网和无线网络设备相关的文件。
在主要配置中。文件, /etc/laptop-mode/laptop-mode.conf, 是打开更详细的消息传递的能力。也许这会进一步说明正在发生的事情?
VERBOSE_OUTPUT=1
Run Code Online (Sandbox Code Playgroud)
1:就电池使用情况和笔记本上的睡眠 LED 而言,暂停有效。否则我不明白提到的网页应该如何帮助我找出答案。
2:是的。
3:看起来是正确的。
4:我得到了那些文件。
5:我得到了相应的日志文件,但这些对我没有帮助。
6: 00 而不是 001 没有显示任何区别。
7:本节中的内容仅测试网络连接。正如我的问题中所说,脚本一运行我就没有网络连接。wlan0 设备已关闭。日志文件:http : //paste.debian.net/231760。
注意:我没有安装 dig(paste.debian.net 日志中的错误消息),但是很明显没有可用的网络访问(如上所述)。我可以通过检查 iwconfig、ip link show、ping 的输出来看到它已关闭…… perl 脚本是有问题的脚本。
顺便说一句,只要/usr/lib/pm-utils/bin/pm-action执行第一行(来自 upowerd),网络就已经关闭。
8: hal 已安装,删除它不会改变任何内容。