Apagar el sistema de forma automática después de un tiempo definido, con un script bash.
Hoy vemos un sencillo script bash, que nos permite apagar el sistema transcurrido el tiempo que nosotros mismos hayamos definido.
Parece una tontería de script, pero te aseguro que no lo es. Por ejemplo… lo puedes usar para que se apague el sistema cuando calcules que termino una tarea, también es realmente útil para controlar el tiempo que puede estar un niño/a enganchado a internet. En fin sus objetivos son muchos.
Ayúdanos a crecer, vota por SoloLinux en la siguiente encuesta. Gracias por colaborar.
Apagar el sistema de forma automática
Creamos el script bash.
sudo nano apagar.sh
Copia y pega el siguiente código. En la línea «TIMELIMIT» puedes definir el tiempo que transcurrirá desde que se ejecute el script, hasta su apagado total (en minutos).
#!/bin/bash # Puedes definir un crontab: # */1 * * * * /root/bin/apagar.sh TIMELIMIT=120 # Equivale a 120 minutos. CUR_DIR=$( dirname $( readlink -e "$0" )) TIMECURRENT=$CUR_DIR/log/$( date +%Y.%m.%d ).log echo "1" >> $TIMECURRENT ALLTIME=$( wc -l $TIMECURRENT | cut -d" " -f1 ) [[ "$ALLTIME" -ge "$TIMELIMIT" ]] && /sbin/shutdown -h now
Guarda el script y cierra el editor.
Le concedes los permisos requeridos.
chmod u+x apagar.sh
Ya lo tienes listo para operar, disfrútalo.
Canales de Telegram: Canal SoloLinux – Canal SoloWordpress
Espero que este artículo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales.
Está bien, pero si no pregunta el script al arrancar el tiempo que se quiere demorar, es más sencillo creo y rápido, un acceso directo en el escritorio como tengo con:
shutdown -h +4
Tengo máquinas virtuales funcionando, y con 4 minutos basta para que todas hayan concluido y cerrar el ordenador.
Pero esa solución no te genera un log. 😉
Puestos a hacerlo variable, pide el tiempo al usuario, una solución sin muchos cambios puede ser:
#!/bin/bash
# Puedes definir un crontab:
# */1 * * * * /root/bin/apagar.sh
if [ x»$1″ = «x» ]; then
TIMELIMIT=120
else
TIMELIMIT=$1
fi
# TIMELIMIT=120 # Equivale a 120 minutos.
echo «TIMELIMIT=» $TIMELIMIT
CUR_DIR=$( dirname $( readlink -e «$0» ))
TIMECURRENT=$CUR_DIR/log/$( date +%Y.%m.%d ).log
echo «1» >> $TIMECURRENT
ALLTIME=$( wc -l $TIMECURRENT | cut -d» » -f1 )
[[ «$ALLTIME» -ge «$TIMELIMIT» ]] && /sbin/shutdown -h now
🙂
Hola! como puedo hacer para que se apaguen a una hora determinada? por ejemplo a las 22:00 Hs de lunes a viernes?
Hola Juan Pablo, en tu caso te recomiendo una tarea cron. Según los datos que facilitas, algo similar a…
0 22 * * 1-5 /sbin/shutdown -h now >/dev/null 2>&1
Hola q tal … porq es necesario generar un log y hacerlo cob CRON ..
el comando shutdown ya dispone de la opcion de poner el tiempo determinado
Hola Nahim.
Como ya dije en repetidas ocasiones, en linux todo se puede hacer de muchas formas.
Los usuarios quieren aprender y, una de los temas principales son los scripts bash.
Es evidente que no es necesario generar un log, pero si conveniente si lo quieres tener todo bajo control.
hola necesito agregar un acceso directo para apagar un servidor linux desde una terminal con windows
alguno me podria ayudar?