Ketika saya menangguhkan buku catatan saya, NetworkManager
menonaktifkan jaringan nirkabel (dalam nm-manager.c:do_sleep_wake
).
Namun, saya ingin tetap menggunakan jaringan untuk waktu yang sangat singkat (untuk melepas cifs
mount, yang jika tidak membuat sistem saya tidak dapat digunakan saat melanjutkan).
Bagaimana saya bisa membuat NetworkManager
tidak menonaktifkan jaringan saya? Apakah mungkin untuk menunggu beberapa detik (atau sampai sesuatu dipicu; atau kunci dilepaskan)?
Terkait: pm-utils: Tidak ada jaringan dalam skrip yang ditangguhkan?
log debug:
Feb 8 10:03:23 zenbook NetworkManager[3606]: <debug> [1360314203.373226] [nm-manager.c:3391] upower_sleeping_cb(): Received UPower sleeping signal
Feb 8 10:03:23 zenbook NetworkManager[3606]: <info> sleep requested (sleeping: no enabled: yes)
Feb 8 10:03:23 zenbook NetworkManager[3606]: <info> sleeping or disabling...
Feb 8 10:03:23 zenbook NetworkManager[3606]: <info> (wlan0): now unmanaged
EDIT: Untuk membuatnya lebih jelas, memiliki skrip dalam /etc/pm/sleep.d
tidak membantu karena jaringan sudah dinonaktifkan segera setelah skrip dieksekusi.
networkmanager
power-management
C-Otto
sumber
sumber
gnome-control-center
.Jawaban:
Saya tidak tahu apakah itu standar, tetapi di Ubuntu ada skrip yang dijalankan sebelum menunda / setelah melanjutkan masuk
/etc/pm/sleep.d
dan masuk/usr/lib/pm-utils/sleep.d
. Dalam sistem saya tampaknya jaringan dimatikan/usr/lib/pm-utils/sleep.d/60_wpa_supplicant
.Anda dapat menulis skrip misalnya
/etc/pm/sleep.d/10-umount
untuk meng-unmount saham Anda sebelum ditangguhkan. Struktur skrip ini adalah seperti itu:Perhatikan bahwa jika skrip mengembalikan kesalahan umum, penangguhan dibatalkan, jadi berhati-hatilah (terutama Anda, seperti saya, gunakan untuk menutup penutup dan menyimpan laptop ...). Untuk menulis hal-hal yang lebih kompleks, terima kasih kepada Samuel Peter untuk komentarnya:
Anda bahkan dapat mengirim ulang setelah resume secara otomatis; dari sini saya menemukan bahwa:
Jadi memasukkan skrip yang sama
umount
danmount command
harus bekerja (dalam menangguhkan itu dijalankan sebelum mematikan jaringan, dan melanjutkan setelah itu).The link dalam pertanyaan Anda adalah mengungkapkan; itu adalah interpretasi saya bahwa jika NetworkManager mematikan jaringan sebelum skrip pada level 00-50 dijalankan itu adalah bug --- setidaknya jika koneksi ditandai sebagai koneksi sistem (dalam Pengaturan Jaringan -> Pilihan -> Identitas - > Jadikan tersedia untuk pengguna lain).
sumber
pm-utils
harus tersedia di semua distro utama dan mungkin diinstal secara default.$NA
"tidak berlaku",$DX
"dinonaktifkan", dan$NX
"tidak dapat dieksekusi" . Lihathook_exit_status
fungsi dalam skrip pm-functionsystem connection
properti. EDIT: Itu sudah asystem connection
.Berdasarkan apa yang dikatakan @ensc, Anda bisa mendengarkan sendiri sinyal D-Bus (sesi sistem). Alur kerja umum dengan
org.freedesktop.login1.Manager
antarmuka adalah:Inhibit(what, who, why, mode)
what
:sleep
ataushutdown:sleep
who
:unmount_cifs
atau apa pun yang Anda sebut skrip Andawhy
:unmounting cifs X before suspend ...
atau setaramode
:delay
untuk menghambat secara maksimal. 5s (default) ataublock
untuk memblokir tanpa batas waktu (saya akan merekomendasikan yang pertama. Jika skrip Anda berhenti, notebook Anda tidak akan pernah tidur.)PrepareForSleep
, yang kembaliTrue
saat akan ditangguhkan atau hibernasi danFalse
saat melanjutkan dan mencairkan)PrepareForShutdown
, yang kembaliTrue
ketika hendak dimatikan dan harus kembaliFalse
ketika dinyalakan kembali (sebagai gantinya juga kembaliFalse
pada saat yang sama ia kembaliTrue
yang tidak masuk akal bagi saya, jadi saya hanya akan mengabaikanFalse
bagian di sini; Anda mungkin sudah memiliki beberapa jenis skrip automounting pada sistem mulai, bukan?)True
sinyal (mis. unmount) Anda melepaskan kunci dengan menutup file descriptor (dikembalikan olehInhibit(...)
), sehingga mesin dapat tidur atau mati secepat mungkin tanpa menunggu 5s keseluruhan ( atau bahkan tanpa batas waktu dalamblock
mode)False
sinyal (melanjutkan / mencairkan) dengan remounting (mungkin pertama-tama menunggu jaringan kembali) dan kemudian membuat kunci baru denganInhibit(...)
(untuk sleep atau shutdown berikutnya)Dalam Python (2.7) ini bisa terlihat seperti:
Dalam Gist ini Anda akan menemukan pembungkus saya di sekitar Pidgin untuk memutuskan hubungan akun IM saat tidur dan mati, menggunakan pendekatan yang persis sama.
Lihat juga dokumentasi resmi freedesktop tentang Inhibitor Locks dan
logind
D-Bus API .sumber
Anda bisa mencoba mencari tahu mengapa
nm
mematikan perangkat:Ketika (seperti dalam kasus saya (Fedora 20)),
systemd
memicu sinyal, Anda dapat menolak pengirimannya dalam konfigurasi dbus:Sayangnya, aturan ini tidak berbutir halus dan akan memblokir
PrepareForSleep
sinyal untuk proses lain juga.sumber
Cobalah untuk mematikan layanan sebelum menangguhkan dan mulai lagi setelah melanjutkan. Seperti itu:
http://oleeekchoff.blogspot.ie/2012/05/restart-modulesservices-after.html
sumber