Desligar quando não estiver em uso durante um certo tempo

0

Eu tenho um PC "media center" que às vezes eu esqueço de desligar à noite. Se bem me lembro, geralmente vou ao meu PC "media center" e desligo, mas na maioria das noites eu esqueço de fazê-lo e o PC funciona a noite toda (e ao longo do dia seguinte também).

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

Eu posso fazer um cron job que execute um script às 1h, mas não consigo descobrir como executar poweroff ou shutdown como usuário padrão. Qualquer ajuda? Estou executando o Linux Mint 17.3 (Ubuntu 14.04).

    
por notorious 02.10.2016 / 14:53

2 respostas

2

Is there a way to shutdown the PC via a dialog box (ie. "Do you want to shutdown?" [Yes] [No])?

Eu acredito que a maneira mais simples de fazer isso é via xmessage . Algo parecido com isto:

#!/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 $DISPLAY para que ele possa ser usado por cron (mais sobre isso aqui ). E, é claro, se você quiser que desligue seu computador, você terá que remover o comentário dessa linha, e você pode remover as instruções echo também. Eu apenas juntei isso rapidamente como uma amostra.

A essência disso: Quando um usuário pressiona yes , o código de retorno é 0 e o computador é desligado. Se um usuário pressionar no , o código de retorno será 1 , em seguida, desligue o não . (Editar :) Se nenhum usuário pressionar nenhum botão após timeout segundos ( 10 neste caso), xmessage sairá com 0 e o computador será encerrado.

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

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

    
por 02.10.2016 / 16:51
1

Muitas perguntas reais em uma pergunta. Faça perguntas separadas na próxima vez. O problema que você descreveu deve ser resolvido pela opção de videoplayer "impedir a suspensão" ou "desativar o sscreensaver". VLC tem essa opção em algum lugar nas configurações. No entanto, as pessoas relatam que às vezes não funciona.
Para mostrar diálogos do script bash, use xdialog utility. No entanto, ele não funcionará simplesmente se for executado a partir de uma sessão de usuário externa, como no crontab. Você precisará desabilitar a segurança do servidor X primeiro.
Para executar o poweroff como um usuário padrão, execute-o através do systemd
systemctl poweroff .

    
por 02.10.2016 / 15:18