pm-utils:掛起腳本中沒有網路?
在允許系統掛起之前,我想在
/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]·
我正在使用帶有 Gnome 3 的 Debian 測試。
編輯:問題與 pm-utils 無關。據我所知,NetworkManager 禁用網路(在 nm-manager.c:do_sleep_wake 中)。我還不知道如何解決這個問題。請參閱NetworkManager:發送系統睡眠時禁用網路
1. 怪癖?
首先,我會確認您的掛起功能正常。查看 quirks 頁面並確認您的掛起功能正常,而不僅僅是看起來工作正常。
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
in之類的文件/tmp
。5./var/log?
如果上面的**.d**目錄正在執行,我會創建一個
001_something
並讓它將/var/log/pm-suspend.log
您認為被覆蓋的文件複製到 .d 下的某個其他文件/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
提到了一種通過在/usr/lib/pm-utils/pm-functions
文件中設置變數來增加 pm-utils 日誌記錄的方法。摘抄
為 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
你會發現這個工具負責做各種各樣的事情,其中之一就是管理你的網路設備的狀態。筆記型電腦模式維護一個目錄,
/etc/laptop-mode/conf.d
,類似於其他 unix 工具。其中有與乙太網和無線網路設備相關的文件。在主配置中。文件,
/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 已安裝,刪除它不會改變任何內容。