Como desligar o Ubuntu após (2 horas) de inatividade?

6

Em execução: Xubuntu 14.04 32bit.

Eu li vários desatualizados, não trabalhando, trabalhando de forma diferente, e quero respostas aqui e em outros lugares. Eu tinha um script que resultou em desligar meu laptop no momento da inicialização depois de configurá-lo para iniciar automaticamente.

Eu também tentei instalar o complexshutdown apesar de essa ferramenta ter falecido em 2011 e ter um bug no Lauchpad que sua opção exata não está disponível. Nem sequer instalado em 14.04 aqui.

Então, se eu posso fazer essa pergunta novamente sem ser punido com "duplicado de" ...

Eu estou procurando um simples script direto que seja realmente testado e funcionando que eu possa colocar no autostart que não esteja fazendo nada além de verificar a atividade (mouse / teclado) e desligar meu laptop se não houver nenhum por 2 horas .

Obrigado.

    
por redanimalwar 03.04.2014 / 11:32

4 respostas

6

Esta é provavelmente a melhor solução. Não há necessidade de ajustes de tela e execução.

Instale sudo apt-get install xprintidle

Coloque este script em autostart:

#!/bin/bash

idletime=$((1000*60*60*2)) # 2 hours in milliseconds

while true; do
    idle='xprintidle'
    echo $idle
    if (( $idle > $idletime )); then
        #sudo shutdown -P now
        dbus-send --system --print-reply --dest=org.freedesktop.login1 /org/freedesktop/login1 "org.freedesktop.login1.Manager.PowerOff" boolean:true
    fi
    sleep 1
done

Os comentários e a resposta do @Jobin me levaram a me investigar novamente e eu realmente encontrei um script inacabado com xprinttime , mas sem nenhum loop no script. Provavelmente não terminei isso porque meu conhecimento de linux / bash não era bom na época. Eu também coloquei o script que eu tinha em rc.local ou algo parecido que acionou o desligamento na inicialização. Obrigado ao @Jobin pelo lembrete de como adicionar aplicativos de inicialização no XFCE, eu já sabia disso mas ... e créditos pelo dbus, nunca vi isso, melhor então shutdown já que não requer root.

    
por redanimalwar 05.05.2014 / 23:17
6

Depois de ter olhado para várias opções de desligamento após um certo tempo de inatividade, parece que xautolock é a maneira mais fácil. Todos os créditos para Sparhawk por mencionar sobre xautolock .

Obrigado ao Sneetsher por apontar para o xscreensaver. Usando o xscreensaver, eu poderia especificar manualmente o que fazer depois de um certo tempo de inatividade. Para usar o xscreensaver, você precisa instalá-lo usando:

sudo apt-get install xscreensaver

ou instale-o no centro de software e execute-o uma vez usando:

xscreensaver-demo

ou digite "xscreensaver" no painel e abra "Screensaver".

Isso criará um arquivo ~/.xscreensaver . Abra e pesquise a linha:

programs:                                                                     \

e adicione:

dbus-send --system --print-reply --dest=org.freedesktop.login1 /org/freedesktop/login1 "org.freedesktop.login1.Manager.PowerOff" boolean:true \n\

logo abaixo do

programs:                                                                     \

linha.

Você pode especificar o tempo após o qual o desligamento deve ser acionado alterando a linha que começa com timout . Modifique-o para

timeout:        2:00:00

para desligar depois de duas horas.

Dê uma olhada no meu arquivo .xscreensaver aqui .

Isso deve desligar sua máquina após duas horas de inatividade ou qualquer horário especificado no script.

Notas:

  • Dê uma olhada em esta pergunta para ver como adicionar xscreensaver na inicialização.

  • Eu tentei usar o desligamento complexo, mas o bug aqui parece me afetar, então não podia acontecer. Caso contrário, um aplicativo gráfico estaria disponível para isso.

  • Isso pode ser conseguido usando xautolock, no entanto, como redanimalwar apontou, um tempo de espera maior que 1 hora não é possível sem modificar seu código-fonte e recompilar.

por jobin 05.05.2014 / 13:46
2

Este é o meu script simplificado, isso requer que você instale o pacote "xprintidle" e modifique o comando shutdown para que seja possível executar sem sudo / senha.

sudo chmod u+s /sbin/shutdown
sudo apt-get install xprintidle

Script

#!/bin/bash
idletime=$((15*60*1000)) # 15 min in milliseconds
idle=0

while [ $idle -lt $idletime ];do
    idle='xprintidle'
    sleep 1
done
shutdown -P now
    
por Krypstocken 17.02.2016 / 08:34
1

Script @redanimalwar modificado para avisar o usuário e dar uma chance de cancelar o desligamento. Para testes, está usando 3 segundos e uma mensagem simples. Por favor, ajuste para o seu gosto. HTH.

#!/bin/bash
#https://sobrelinux.info/questions/21087/how-to-shutdown-ubuntu-after-2-hours-of-idle"Progress Status" -b add,above &

(
echo "# Shutting Down in 5" ; sleep 2
echo "25"
echo "# Shutting Down in 4" ; sleep 2
echo "50"
echo "# Shutting Down in 3" ; sleep 2
echo "75"
echo "# Shutting Down in 2" ; sleep 2
echo "99"
echo "# Shutting Down in 1" ; sleep 2
echo "# Shutting Down now" ; sleep 2
echo "100"

) |
zenity --progress \
  --title="Progress Status" \
  --text="First Task." \
  --percentage=0 \
 --auto-close

return $?

}


#idletime=$((1000*60*60*2)) # 2 hours in milliseconds
idletime=$((1000*3)) # test, 3seconds

while true; do
    idle='xprintidle'
    echo $idle
    if (( $idle > $idletime )); then
        showProgress && \
        #sudo shutdown -P now
        #dbus-send --system --print-reply --dest=org.freedesktop.login1 /org/freedesktop/login1 "org.freedesktop.login1.Manager.PowerOff" boolean:true
        #echo for tests. use command above to actually shutdown
        echo shuting down the system. Just kidding  ^_^ \
        && exit 0
    fi
    sleep 1
done
    
por Marco Linux 01.07.2015 / 17:34