Cuando suspendo mi computadora portátil, NetworkManagerdeshabilita 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 cifsmonturas, 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.dno 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.dy 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-umountpara 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
umountymount commanddeberí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-utilsdebería estar disponible en todas las distribuciones principales y probablemente esté instalado de forma predeterminada.$NA"no corresponde",$DXestá "deshabilitado" y$NX"no es ejecutable" . Vea lahook_exit_statusfunción en el script pm-functionssystem connectionpropiedad. 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.Managerinterfaz sería:Inhibit(what, who, why, mode)what:sleeposhutdown:sleepwho:unmount_cifso como llames tu guiónwhy:unmounting cifs X before suspend ...o equivalentemode:delaypara inhibir por un máx. de 5 s (predeterminado) oblockpara bloquear indefinidamente (recomendaría el primero. Si su script se detiene, su computadora portátil nunca se irá a dormir).PrepareForSleep, que regresaTruecuando está a punto de suspender o hibernar yFalseal reanudar y descongelar)PrepareForShutdown, que regresaTruecuando está a punto de apagarse y debería regresarFalsecuando se vuelve a encender (en cambio, también regresaFalseal mismo tiempo que regresa,Truelo que no tiene sentido para mí, por lo que simplemente ignoraría laFalseparte aquí; probablemente ya tenga algún tipo de script de montaje automático en el sistema de todos modos, ¿no?)Trueseñ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á enblockmodo)Falseseñ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
logindAPI de D-Bus .fuente
Podría intentar averiguar por qué
nmestá cerrando los dispositivos:Cuando (como en mi caso (Fedora 20))
systemdestá 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
PrepareForSleepseñ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