Desligar quando não estiver em uso durante um determinado período

Desligar quando não estiver em uso durante um determinado período

Tenho um PC “media center” que às vezes esqueço de desligar à noite. Se bem me lembro, geralmente acesso remotamente meu PC "media center" e desligo-o, mas na maioria das noites esqueço de fazer isso e o PC funciona a noite toda (e durante o dia seguinte também).

Existe uma maneira de desligar o PC através de uma caixa de diálogo (ou seja "Do you want to shutdown?" [Yes] [No])? A razão pela qual quero uma caixa de diálogo é porque às vezes assistimos filmes tarde da noite e não quero desligar arbitrariamente.

Posso fazer um cron job que executa um script à 1h, mas não consigo descobrir como executar poweroffou shutdowncomo usuário padrão. Qualquer ajuda? Estou executando o Linux Mint 17.3 (Ubuntu 14.04).

Responder1

Existe uma maneira de desligar o PC através de uma caixa de diálogo (ou seja "Do you want to shutdown?" [Yes] [No])?

Acredito que a maneira mais simples de fazer isso é via xmessage. Algo assim:

#!/bin/bash

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
export DISPLAY=:0.0

xmessage -timeout 10 "Shutdown computer?" -buttons yes:0,no:1

case $? in
    0)  
    echo "Shutting down..."
    #systemctl poweroff
    ;;  
    1)  
    echo "Ok."
    ;;  
    *)  
    echo "Mystic error!"
    ;;  
esac

Eu adicionei as variáveis $PATH​​e $DISPLAYpara que possam ser usadas por cron(mais sobre issoaqui). E, claro, se vocêquererechopara desligar o computador, você terá que descomentar essa linha e, é claro , também poderá remover as instruções. Eu apenas juntei isso rapidamente como uma amostra.

A essência: quando um usuário pressiona, yeso código de retorno é 0e o computador é desligado. Se um usuário pressionar noo código de retorno é 1, então façanãodesligar. (Editar:) Se nenhum usuário pressionar nenhum botão após timeoutsegundos ( 10neste caso), xmessagesairá 0e o computador será desligado.

Quando executado, o script produz esta pequena caixa de diálogo:

https://s22.postimg.org/irl97w835/xmessage.png

Tenho certeza de que isso zenityé ótimo, mas para uma tarefa simples como essa acho xmessageque pode ser mais fácil.

Responder2

Muitas perguntas reais em uma pergunta. Faça perguntas separadas na próxima vez. O problema que você descreveu deve ser resolvido com a opção do player de vídeo "evitar a suspensão" ou "desativar o protetor de tela". O VLC tem essa opção em algum lugar nas configurações. No entanto, as pessoas relatam que às vezes não funciona.
Para mostrar caixas de diálogo do script bash, use xdialogo utilitário. No entanto, não funcionará simplesmente se for executado fora da sessão do usuário, como no crontab. Você precisará desabilitar a segurança do servidor X primeiro.
Para executar o poweroff como usuário padrão, execute-o por meio de systemd
systemctl poweroff.

informação relacionada