44 lines
1.5 KiB
Bash
44 lines
1.5 KiB
Bash
#!/usr/bin/env bash
|
|
# mariadb_clean_stop.sh - Cierre limipio del contenedor de MariaDB en una maquina
|
|
|
|
# CONFIGURACION ---------------------------------------------------------------
|
|
set -uo pipefail
|
|
# -u -> si no existe una variable devuelve error en vez de tratarla como cadnea vacia
|
|
# -o pipefail -> devuelve los errores de cualquier pipe no solo del ultimo
|
|
|
|
# VARIABLES
|
|
CONTAINER="mariadb"
|
|
GRACE=60
|
|
LOG="/var/log/safe-shutdown.log"
|
|
# -----------------------------------------------------------------------------
|
|
# funcion para escribir en el log
|
|
log() { echo "$(date -Is) [mariadb-safe-stop] $*" | tee -a "$LOG"; }
|
|
|
|
# PROGRAMA --------------------------------------------------------------------
|
|
log "inicio"
|
|
|
|
# Comprobacion de que el contenedor esta corriendo
|
|
# Lista los nombres de los contenedores activos y busca exactamente el nombre de $CONTAINER
|
|
# Si no lo encuentra escribe un aviso en el log y sale con 0
|
|
if ! docker ps --format '{{.Names}}' | grep -qx "$CONTAINER"; then
|
|
log "AVISO: el contenedor '$CONTAINER' no esta corriendo. Nada que hacer."
|
|
exit 0
|
|
fi
|
|
|
|
# Parada del contenedor
|
|
log "parando contenedor '$CONTAINER' (tiempo de gracia: ${GRACE}s)..."
|
|
if docker stop -t "$GRACE" "$CONTAINER" >/dev/null; then
|
|
log "OK: Contenedor parado con exito"
|
|
else
|
|
log "ERROR: docker stop falló"
|
|
exit 1
|
|
fi
|
|
|
|
# Verificacion del estado del contenedor
|
|
if docker ps --format '{{.Names}}' | grep -qx "$CONTAINER"; then
|
|
log "ERROR: '$CONTAINER' sigue activo despues del stop"
|
|
exit 1
|
|
fi
|
|
|
|
log "contenedor '$CONTAINER' detenido correctamente"
|
|
log "fin" |