Quando suspendo o notebook, NetworkManager
desativa a rede sem fio (entrada nm-manager.c:do_sleep_wake
).
No entanto, eu adoraria continuar usando a rede por um período muito curto (para desmontar cifs
montagens, que de outra forma tornariam meu sistema inutilizável ao reiniciar).
Como posso fazer para NetworkManager
não desativar minha rede? É possível esperar alguns segundos (ou até que algo seja acionado; ou um bloqueio seja liberado)?
Relacionado: pm-utils: Nenhuma rede nos scripts de suspensão?
log de depuração:
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: Para deixar claro, ter scripts /etc/pm/sleep.d
não ajuda, pois a rede já está desativada assim que um script é executado.
networkmanager
power-management
C-Otto
fonte
fonte
gnome-control-center
.Respostas:
Eu não sei se é padrão, mas no Ubuntu existem scripts que são executados antes da suspensão / após a retomada no
/etc/pm/sleep.d
e dentro/usr/lib/pm-utils/sleep.d
. No meu sistema parece que a rede está desligada/usr/lib/pm-utils/sleep.d/60_wpa_supplicant
.Você pode escrever um script, por exemplo,
/etc/pm/sleep.d/10-umount
para desmontar seus compartilhamentos antes de suspender. A estrutura desses scripts é assim:Observe que, se o script retornar um erro genérico, a suspensão será abortada; portanto, cuide disso (especialmente se você, como eu, usa para fechar a tampa e guardar o laptop ...). Para escrever coisas mais complexas, obrigado a Samuel Peter por seu comentário:
Você pode até remontá-los após retomar automaticamente; a partir daqui , descobri que:
Então, colocar no mesmo script do
umount
emount command
deve funcionar (em suspendê-lo é executado antes de desligar da rede, e no currículo depois disso).O link na sua pergunta é revelador; Minha interpretação é que, se o NetworkManager encerra a rede antes da execução dos scripts no nível 00-50, é um erro - pelo menos se a conexão estiver marcada como uma conexão do sistema (em Configurações de rede -> Opções -> Identidade - > Disponibilizar para outro usuário).
fonte
pm-utils
deve estar disponível em todas as distros principais e provavelmente está instalado por padrão.$NA
é "não aplicável",$DX
está "desativado" e$NX
"não é executável" . Veja ahook_exit_status
função no script pm-functionssystem connection
propriedade. EDIT: Já era umsystem connection
.Com base no que o @ensc disse, você pode ouvir o sinal D-Bus (sessão do sistema). O fluxo de trabalho geral com a
org.freedesktop.login1.Manager
interface seria:Inhibit(what, who, why, mode)
what
:sleep
oushutdown:sleep
who
:unmount_cifs
ou o que você chamar de seu scriptwhy
:unmounting cifs X before suspend ...
ou equivalentemode
:delay
para inibir no máximo. de 5s (padrão) oublock
para bloquear indefinidamente (eu recomendaria o primeiro. Se o seu script parar, o seu notebook nunca irá dormir).PrepareForSleep
, que retornaTrue
quando está prestes a suspender ou hibernar eFalse
ao retomar e descongelar)PrepareForShutdown
, que retornaTrue
quando está prestes a desligar e deve retornarFalse
ao ligar novamente (em vez disso, também retornaFalse
ao mesmo tempo em que retorna, oTrue
que não faz sentido para mim, então eu ignoraria aFalse
parte aqui; provavelmente você já tem algum tipo de script de montagem automática no sistema iniciar de qualquer maneira, não é?)True
sinal (ou seja, desmontar), solte a trava fechando o descritor de arquivo (retornado porInhibit(...)
), para que a máquina entre no modo de suspensão ou desligamento o mais rápido possível sem esperar pelos 5s inteiros ( ou indefinidamente quando noblock
modo)False
sinal (retomar / descongelar) remontando (talvez primeiro aguardando a rede voltar a ligar) e, em seguida, crie um novo bloqueio comInhibit(...)
(para a próxima suspensão ou desligamento)No Python (2.7), isso pode se parecer com:
No presente Síntese você vai encontrar o meu invólucro em torno Pidgin para desconectar IM contas sobre o sono e desligamento, usando exatamente a mesma abordagem.
Consulte também a documentação oficial do freedesktop sobre bloqueios de inibidores e a
logind
API D-Bus .fonte
Você pode tentar descobrir por que
nm
está desligando os dispositivos:Quando (como no meu caso (Fedora 20))
systemd
está disparando o sinal, você pode negar sua entrega na configuração do dbus:Infelizmente, essas regras não são muito refinadas e também bloquearão o
PrepareForSleep
sinal para outros processos.fonte
Tente desligar o serviço antes de suspender e reinicie após o resumo. Curtiu isso:
http://oleeekchoff.blogspot.ie/2012/05/restart-modulesservices-after.html
fonte