Apagar cuando no esté en uso durante un tiempo determinado

Apagar cuando no esté en uso durante un tiempo determinado

Tengo una PC "centro multimedia" que a veces me olvido de apagar por la noche. Si no recuerdo mal, normalmente entro de forma remota a mi PC "centro multimedia" y la apago, pero la mayoría de las noches me olvido de hacerlo y la PC funciona toda la noche (y también durante el día siguiente).

¿Hay alguna forma de apagar la PC mediante un cuadro de diálogo (es decir, "Do you want to shutdown?" [Yes] [No])? La razón por la que quiero un cuadro de diálogo es porque a veces estamos viendo películas a altas horas de la noche y no quiero cerrarlas arbitrariamente.

Puedo hacer un trabajo cron que ejecuta un script a la 1 a. m., pero no sé cómo ejecutarlo poweroffcomo shutdownusuario estándar. ¿Alguna ayuda? Estoy ejecutando Linux Mint 17.3 (Ubuntu 14.04).

Respuesta1

¿Hay alguna forma de apagar la PC mediante un cuadro de diálogo (es decir, "Do you want to shutdown?" [Yes] [No])?

Creo que la forma más sencilla de hacerlo es a través de xmessage. Algo como esto:

#!/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

He agregado las variables $PATHy $DISPLAYpara que pueda ser utilizado por cron(más sobre esoaquí). Y, por supuesto, sidesearpara apagar su computadora tendrá que descomentar esa línea y, por supuesto, echotambién podrá eliminar las declaraciones. Simplemente preparé esto rápidamente como muestra.

La esencia de esto: cuando un usuario presiona, yesel código de retorno es 0y la computadora se apaga. Si un usuario presiona noel código de retorno es 1, entonces haganocerrar. (Editar:) Si ningún usuario presiona ningún botón después de timeoutunos segundos ( 10en este caso), xmessagesaldrá 0y la computadora se apagará.

Cuando se ejecuta, el script produce este pequeño cuadro de diálogo:

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

Estoy seguro de que zenityes genial, pero para una tarea sencilla como esta creo que xmessagepodría ser más fácil.

Respuesta2

Demasiadas preguntas reales en una sola pregunta. Haga preguntas por separado la próxima vez. El problema que describiste debería resolverse con la opción del reproductor de video "evitar suspensión" o "deshabilitar el protector de pantalla". VLC tiene esta opción en algún lugar de la configuración. Sin embargo, la gente informa que a veces no funciona.
Para mostrar cuadros de diálogo desde el script bash, use xdialogla utilidad. Sin embargo, no funcionará simplemente si se ejecuta desde una sesión de usuario externa, como desde crontab. Primero deberá desactivar la seguridad del servidor X.
Para ejecutar poweroff como usuario estándar, ejecútelo a través de systemd
systemctl poweroff.

información relacionada