pm-utils: Không có mạng trong kịch bản treo?


8

Tôi muốn đặt một tập lệnh /etc/pm/suspend.d/cần truy cập mạng (trong một thời gian rất ngắn) trước khi cho phép hệ thống tạm dừng. Tuy nhiên, ngay cả với các tập lệnh có tên "001_s Something" /etc/pm/suspend.d//usr/lib/pm-utils/sleep.d/tôi không nhận được bất kỳ quyền truy cập mạng nào. Có vẻ như điều này bị vô hiệu hóa trước khi các kịch bản được chạy.

Tại sao mạng bị vô hiệu hóa? Làm thế nào tôi có thể kích hoạt nó?

Ngoài ra, tôi không thể sử dụng pm-Suspend.log trong /var/log. Có vẻ như tập tin cho phần đình chỉ bị ghi đè ngay khi hệ thống được nối lại?

Sau đây đã được quan sát thấy trong 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]·

Tôi đang sử dụng Kiểm tra Debian với Gnome 3.

EDIT: Vấn đề không liên quan đến pm-utils. Theo như tôi biết, NetworkManager sẽ vô hiệu hóa mạng (theo nm-manager.c: do_s ngủ_wake). Tôi không biết làm thế nào để giải quyết điều này. Xem NetworkManager: mạng bị vô hiệu hóa khi gửi hệ thống đi ngủ


Thông tin thêm: Tôi đang sử dụng mạng không dây bằng NetworkManager.
C-Otto

Di chuyển thay mặt cho OP.
slhck

Có lẽ kịch bản của bạn bị chạy quá muộn, sau khi tắt mạng?
vonbrand

Tôi nghĩ vậy, vâng. Nhưng làm thế nào tôi có thể chạy nó sớm hơn?
C-Otto

Tôi có thể đã nhầm lẫn sleep.dvới suspend.dtrong câu hỏi, nhưng đây không phải là nguồn gốc của vấn đề.
C-Otto

Câu trả lời:


7

1. Quirks?

Đầu tiên tôi sẽ xác nhận rằng việc đình chỉ của bạn hoạt động chính xác. Hãy xem trang quirks và xác nhận rằng hệ thống treo của bạn hoạt động chính xác và không chỉ có vẻ như nó hoạt động đúng.

2. Tập lệnh 001_s Something của bạn có thực thi được không?

Kiểm tra để đảm bảo rằng 001_somethingtập lệnh của bạn có thể thực thi được!

% chmod +x 001_something

3. Tập lệnh 001_s Something của bạn có đúng không?

Kiểm tra để đảm bảo tập lệnh của bạn phù hợp với những gì pm-utilsđang mong đợi.

Kịch bản ví dụ

#!/bin/bash
case "$1" in
    hibernate|suspend)
        ACTION BEFORE SUSPEND/HIBERNATE
        ;;
    thaw|resume)
        ACTION AFTER RESUME
        ;;
    *)
        ;;
esac
exit $?

LƯU Ý: Bạn có đang cố gắng sử dụng mạng trong hibernate|suspendphần chính xác của câu lệnh case / switch không?

4. tập tin trong thư mục .d hoạt động (/etc/pm/suspend.d/ hoặc /usr/lib/pm-utils/s ngủ.d/)?

Tiếp theo, tôi sẽ xác nhận rằng 001_somethingtập lệnh của bạn trên thực tế đã được chọn bằng cách tạm dừng / ngủ đông một cách chính xác bằng cách nó chỉ đơn giản lặp lại với một tập tin một chuỗi để bạn biết rằng nó đang hoạt động.

echo "yup I'm working" > /tmp/pmck_`date +%Y-%T`.log

Sau đó, bạn sẽ thấy các tập tin như pmck_2013-16:08:11.logtrong /tmp.

5. / var / log?

Nếu thư mục .d ở trên đang hoạt động, tôi sẽ tạo một 001_somethingvà sao chép /var/log/pm-suspend.logtệp mà bạn nghĩ đang bị ghi đè lên một số tệp khác bên dưới /tmp, theo cách đó bạn ít nhất có thể xác nhận rằng việc ghi nhật ký là chính xác. Điều này có thể giúp bạn hiểu thêm về những gì đang xảy ra.

cp /var/log/pm-suspend.log /tmp/pmlg_`date +%Y-%T`.log

6. Số móc ngủ?

Ngoài ra, bạn có thể thay đổi tên của tệp hook của bạn thành 00-somethingthay vì 001_something? Không chắc chắn nhưng trang man chỉ ra những giá trị này.

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. Kết nối mạng?

Thêm phần sau vào 001_somethingtập lệnh của bạn :

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. Lỗi với pm-utils, HAL và Wheezy?

Tôi đã xem qua báo cáo lỗi debian này và tự hỏi liệu đây có phải là nguyên nhân của vấn đề của bạn. Lỗi này mô tả một vấn đề với HAL và pm-utils. Có vẻ như loại bỏ HAL khắc phục vấn đề mạng.

9. Thêm gỡ rối pm-utils gỡ lỗi

Ngoài ra, còn có liên kết này cung cấp lời khuyên cho việc tạm dừng / tiếp tục các vấn đề cụ thể đối với Debian. Có đề cập đến một cách để tăng ghi nhật ký của pm-utils bằng cách đặt một biến, PM_DEBUG=truetrong /usr/lib/pm-utils/pm-functionstệp.

đoạn trích

Kích hoạt gỡ lỗi cho các tiện ích tối

Nhật ký của quá trình đình chỉ và tiếp tục có trong tệp /var/log/pm-suspend.log. Nó chứa thông tin dài vừa phải theo mặc định. Có thể thêm thông tin để gỡ lỗi bằng cách chèn dòng xuất PM_DEBUG = true vào phần đầu của tệp / usr / lib / pm-utils / pm-Hàm.

Có lẽ điều này có thể hữu ích trong việc cung cấp cho bạn cái nhìn sâu sắc hơn về những gì đang diễn ra với pm-utils!

10. ACPI tắt mạng trước pm-utils?

Nếu vấn đề không xuất hiện pm-utils, có thể là do acpi. Khi bạn đóng nắp trên máy tính xách tay của bạn, một acpisự kiện được kích hoạt, sự kiện đó có một hành động liên quan đến nó.

Tệp SỰ KIỆN

% more /etc/acpi/events/lm_lid
event=button[ /]lid
action=/etc/acpi/actions/lm_lid.sh %e

Tập tin HÀNH ĐỘNG

% 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

Nhìn kỹ hơn laptop_modebạn sẽ thấy rằng công cụ này chịu trách nhiệm thực hiện nhiều việc khác nhau, một trong số đó là quản lý trạng thái của các thiết bị mạng của bạn.

chế độ máy tính xách tay duy trì một thư mục /etc/laptop-mode/conf.d, tương tự như các công cụ unix khác. Trong đó có các tập tin liên quan đến ethernet và các thiết bị mạng không dây.

Trong cấu hình chính. tập tin /etc/laptop-mode/laptop-mode.conflà khả năng bật tin nhắn dài dòng hơn. Có lẽ điều này sẽ làm sáng tỏ thêm về những gì đang xảy ra?

VERBOSE_OUTPUT=1

Tóm tắt những điều trên để thử dựa trên phản hồi của OP

1: Đình chỉ hoạt động khi có liên quan đến việc sử dụng pin và đèn LED ngủ trên máy tính xách tay của tôi. Nếu không, tôi không hiểu làm thế nào các trang web được đề cập sẽ giúp tôi tìm ra.

2: Nó là.

3: Có vẻ đúng.

4: Tôi nhận được những tập tin đó.

5: Tôi nhận được các tệp nhật ký tương ứng, nhưng chúng không hữu ích cho tôi.

6: 00 thay vì 001 không hiển thị bất kỳ sự khác biệt.

7: Những điều trong phần này chỉ kiểm tra kết nối mạng. Như đã nói trong câu hỏi của tôi, tôi không có kết nối mạng ngay khi tập lệnh được chạy. Thiết bị wlan0 không hoạt động. Các tệp nhật ký: http://paste.debian.net/231760 .

LƯU Ý: Tôi chưa cài đặt đào (thông báo lỗi. Trong nhật ký paste.debian.net), tuy nhiên rõ ràng là không có quyền truy cập mạng nào khả dụng (như đã nói). Tôi có thể thấy rằng nó bị hỏng bằng cách kiểm tra đầu ra của iwconfig, hiển thị liên kết ip, ping, ... Tập lệnh perl là tập lệnh được đề cập.

BTW, ngay sau khi dòng đầu tiên /usr/lib/pm-utils/bin/pm-actionđược thực thi (từ upowerd), mạng đã ngừng hoạt động.

8: hal đã được cài đặt, loại bỏ nó không thay đổi bất cứ điều gì.


Đánh số là quan trọng. Lần đầu tiên tôi cố gắng đặt tên cho kịch bản của mình là "001_blah.sh" và nó không được chọn. Nó chỉ được chọn sau khi tôi đổi tên thành "00_blah.sh". Cảm ơn câu trả lời chi tiết BTW.
sola
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.