Aunque las respuestas anteriores aquí satisfacen el requisito de perfección, también puede apagar la máquina tan pronto como se realicen las tareas.
bash
los scripts pueden ser trap
ped, lo que significa que ciertas señales pueden ser interceptadas y ciertas tareas pueden ejecutarse cuando sea necesario. EXIT
Es una de las señales que pueden quedar atrapadas.
Podrías:
- Establezca una
trap
para EXIT
sus scripts de shell automatizados, lo que significa la finalización de sus tareas automatizadas
- Establezca un
trap
para su .bashrc
EXIT
, lo que significa que cada vez que cierre sesión en esa máquina, apáguela.
La opción n. ° 1 sería el caso ideal, siempre que sus tareas no requieran inspección ad hoc y juicio manual.
La opción n. ° 2 cubriría los casos en los que olvidaría salir del terminal sin apagarlo. Sin embargo, hay una advertencia; Si tiene varias terminales abiertas para la misma máquina y sale de una de ellas, igual apagará la máquina. (Se puede programar para evitar eso, pero no complicaré la solución).
cleanup(){
# Do some tasks before terminating
echo oh la la, cleaning is so nice
echo "See you later, world"
sudo poweroff & # finally shutdown
}
trap cleanup EXIT
Esto puede ser al final de la .bashrc
opción # 2, en algún lugar en la parte superior de su script para la opción # 1.
¿Por qué no usar poweroff
al final del guión?
Prefiero usar set -eo pipefail
en la parte superior de mis scripts. Si ocurre algún error, no fallará en silencio; dejará de ejecutar más comandos. trap
de EXIT
señal debe cubrir los casos en que el script termina prematuramente debido a errores.
Sin embargo, para sus tareas, esto también puede significar que la máquina se apagará antes de que se complete.
Tengo una bash
plantilla simple que uso para facilitar la depuración de scripts; tal vez podría ser de alguna utilidad. Por favor vea esta esencia .
at
(ejecución única).