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