Cuando suspendo mi computadora portátil, NetworkManager
deshabilita la red inalámbrica (in nm-manager.c:do_sleep_wake
).
Sin embargo, me encantaría seguir usando la red por un tiempo muy corto (para desmontar cifs
monturas, que de lo contrario harán que mi sistema sea inutilizable cuando se reanude).
¿Cómo puedo hacer que NetworkManager
no deshabilite mi red? ¿Es posible esperar unos segundos (o hasta que se active algo o se libere un bloqueo)?
Relacionado: pm-utils: ¿No hay red en los scripts de suspensión?
registro de depuración:
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
EDITAR: para que quede claro, tener secuencias de comandos /etc/pm/sleep.d
no ayuda, ya que la red ya está desactivada tan pronto como se ejecuta una secuencia de comandos.
networkmanager
power-management
C-Otto
fuente
fuente
gnome-control-center
.Respuestas:
No sé si es estándar, pero en Ubuntu hay secuencias de comandos que se ejecutan antes de suspender / después de reanudar
/etc/pm/sleep.d
y continuar/usr/lib/pm-utils/sleep.d
. En mi sistema parece que la red está cerrada por/usr/lib/pm-utils/sleep.d/60_wpa_supplicant
.Puede escribir un script, por ejemplo,
/etc/pm/sleep.d/10-umount
para desmontar sus recursos compartidos antes de suspenderlos. La estructura de estos scripts es así:Tenga en cuenta que si el script devuelve un error genérico, la suspensión se cancela, así que tenga cuidado con esto (especialmente si usted, como yo, lo usa para cerrar la tapa y guardar la computadora portátil ...). Para escribir cosas más complejas, gracias a Samuel Peter por su comentario:
Incluso podría volver a montarlos después de reanudar automáticamente; desde aquí encontré que:
Poner en el mismo script el
umount
ymount command
debería funcionar (en suspensión se ejecuta antes de apagar la red y en el curriculum vitae después de eso).El enlace en su pregunta es revelador; Es mi interpretación que si NetworkManager apaga la red antes de que se ejecuten los scripts en el nivel 00-50, es un error --- al menos si la conexión está marcada como conexión del sistema (en Configuración de red -> Opciones -> Identidad - > Poner a disposición de otro usuario).
fuente
pm-utils
debería estar disponible en todas las distribuciones principales y probablemente esté instalado de forma predeterminada.$NA
"no corresponde",$DX
está "deshabilitado" y$NX
"no es ejecutable" . Vea lahook_exit_status
función en el script pm-functionssystem connection
propiedad. EDITAR: Ya era unsystem connection
.Sobre la base de lo que dijo @ensc, podría escuchar esa señal D-Bus (sesión del sistema). El flujo de trabajo general con la
org.freedesktop.login1.Manager
interfaz sería:Inhibit(what, who, why, mode)
what
:sleep
oshutdown:sleep
who
:unmount_cifs
o como llames tu guiónwhy
:unmounting cifs X before suspend ...
o equivalentemode
:delay
para inhibir por un máx. de 5 s (predeterminado) oblock
para bloquear indefinidamente (recomendaría el primero. Si su script se detiene, su computadora portátil nunca se irá a dormir).PrepareForSleep
, que regresaTrue
cuando está a punto de suspender o hibernar yFalse
al reanudar y descongelar)PrepareForShutdown
, que regresaTrue
cuando está a punto de apagarse y debería regresarFalse
cuando se vuelve a encender (en cambio, también regresaFalse
al mismo tiempo que regresa,True
lo que no tiene sentido para mí, por lo que simplemente ignoraría laFalse
parte aquí; probablemente ya tenga algún tipo de script de montaje automático en el sistema de todos modos, ¿no?)True
señal (es decir, desmontar), suelta el bloqueo cerrando el descriptor de archivo (devuelto porInhibit(...)
), de modo que la máquina pueda ir a dormir o apagarse lo más rápido posible sin esperar los 5 segundos completos ( o incluso indefinidamente cuando está enblock
modo)False
señal (reanudar / descongelar) volviendo a montar (tal vez primero esperando a que la red vuelva aInhibit(...)
encenderse) y luego crear un nuevo bloqueo con (para la próxima suspensión o apagado)En Python (2.7) esto podría verse así:
En este Gist encontrará mi envoltorio alrededor de Pidgin para desconectar las cuentas de mensajería instantánea en el modo de suspensión y apagado, utilizando exactamente el mismo enfoque.
Consulte también la documentación oficial de freedesktop sobre Inhibitor Locks y la
logind
API de D-Bus .fuente
Podría intentar averiguar por qué
nm
está cerrando los dispositivos:Cuando (como en mi caso (Fedora 20))
systemd
está activando la señal, puede negar su entrega en la configuración de dbus:Desafortunadamente, estas reglas no son muy finas y bloquearán la
PrepareForSleep
señal para otros procesos también.fuente
Intente apagar el servicio antes de suspenderlo y comience nuevamente después de reanudar. Como eso:
http://oleeekchoff.blogspot.ie/2012/05/restart-modulesservices-after.html
fuente