我想/etc/pm/suspend.d/
在允许系统挂起之前放置一个需要网络访问(非常短的时间)的脚本。但是,即使使用名为“001_something”的脚本,我/etc/pm/suspend.d/
也/usr/lib/pm-utils/sleep.d/
无法获得任何网络访问权限。看来这在脚本运行之前被禁用了。
为什么网络被禁用?我怎样才能启用它?
另外,我无法在/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]·
我正在使用 Debian 测试和 Gnome 3。
编辑:该问题与 pm-utils 无关。据我所知,NetworkManager 禁用网络(在 nm-manager.c:do_sleep_wake 中)。我还不知道如何解决这个问题。看NetworkManager:使系统进入睡眠状态时禁用网络
答案1
1. 怪癖?
首先我会确认您的暂停功能正常。查看怪癖页面并确认您的暂停功能正常,而不仅仅是看起来正常。
2. 您的 001_something 脚本可执行吗?
检查以确保您的001_something
脚本可执行!
% chmod +x 001_something
3. 您的 001_something 脚本看起来正确吗?
检查以确保您的脚本符合pm-utils
预期。
示例脚本
#!/bin/bash
case "$1" in
hibernate|suspend)
ACTION BEFORE SUSPEND/HIBERNATE
;;
thaw|resume)
ACTION AFTER RESUME
;;
*)
;;
esac
exit $?
笔记:您是否将使用网络的尝试放在hibernate|suspend
case/switch 语句的正确部分中?
4. .d 目录中的文件是否正常工作(/etc/pm/suspend.d/ 或 /usr/lib/pm-utils/sleep.d/)?
接下来,我将确认您的001_something
脚本实际上已被挂起/休眠正确地获取,只需将其简单地回显到文件中的某个字符串,以便您知道它正在工作。
echo "yup I'm working" > /tmp/pmck_`date +%Y-%T`.log
pmck_2013-16:08:11.log
然后您应该会看到诸如/tmp
.
5. /var/log?
如果以上情况.d目录正在运行,我会创建一个001_something
并将/var/log/pm-suspend.log
您认为被覆盖的文件复制到 下的其他文件中/tmp
,这样您至少可以确认日志记录是正确的。这可能会让您对正在发生的事情有更深入的了解。
cp /var/log/pm-suspend.log /tmp/pmlg_`date +%Y-%T`.log
6.睡眠挂钩数量?
您还可以将挂钩文件的名称更改为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.
7. 网络连接?
将以下内容添加到您的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
8. pm-utils、HAL 和 Wheezy 的错误?
我碰到这个 Debian 错误报告并想知道这是否可能是您问题的原因。该错误描述了 HAL 和 pm-utils 的问题。听起来删除 HAL 可以解决网络问题。
9. 更详细的 pm-utils 调试
另外还有这个链接它提供了针对 Debian 特定的暂停/恢复问题的建议。提到了一种通过PM_DEBUG=true
在文件中设置变量来增加 pm-utils 日志记录的方法/usr/lib/pm-utils/pm-functions
。
摘抄
启用 pm-utils 调试
挂起和恢复进程的日志位于文件/var/log/pm-suspend.log 中。默认情况下,它包含相当详细的信息。通过将行 export PM_DEBUG=true 插入到文件 /usr/lib/pm-utils/pm-functions 的开头,可以启用更多信息以进行调试。
也许这可能有助于让您更深入地了解 pm-utils 的情况!
10. ACPI 在 之前关闭网络pm-utils
?
如果问题似乎不是由 引起的pm-utils
,则可能是由于 引起的acpi
。当您合上笔记本电脑的盖子时,acpi
会触发一个事件,该事件有一个与之关联的操作。
事件文件
% more /etc/acpi/events/lm_lid
event=button[ /]lid
action=/etc/acpi/actions/lm_lid.sh %e
行动文件
% 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
仔细观察,laptop_mode
您会发现该工具负责执行多种操作,其中之一是管理网络设备的状态。
laptop-mode 维护一个目录/etc/laptop-mode/conf.d
,类似于其他 UNIX 工具。其中有与以太网和无线网络设备相关的文件。
在主配置中。 file, /etc/laptop-mode/laptop-mode.conf
, 是打开更详细消息传递的能力。也许这会为正在发生的事情提供一些额外的线索?
VERBOSE_OUTPUT=1
根据OP的反馈总结上述要尝试的事情
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 已安装,删除它不会改变任何东西。