Linux

pm-utils:掛起腳本中沒有網路?

  • February 8, 2013

在允許系統掛起之前,我想在/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|suspendcase/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.login之類的文件/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 已安裝,刪除它不會改變任何內容。

引用自:https://unix.stackexchange.com/questions/62157