Files
2026-03-29 02:37:51 +00:00

44 lines
2.0 KiB
Bash

RESTARTED_TODAY=false # Flag to track if containers have been restarted today
while true; do
CURRENT_TIME=$(date +'%H:%M')
if [ "$CURRENT_TIME" = '04:00' ]; then
if [ "$RESTARTED_TODAY" = false ]; then
echo "$(date): It's 04:00. Initiating Docker container restart process..."
CONTAINER_IDS=$(docker ps -q)
if [ -z "$CONTAINER_IDS" ]; then
echo "$(date): No running Docker containers found to restart."
else
echo "$(date): Found containers: $CONTAINER_IDS"
for CONTAINER_ID in $CONTAINER_IDS; do
echo "$(date): Restarting container: ${CONTAINER_ID}"
docker restart "${CONTAINER_ID}"
# Check if the restart command was successful (optional, but good practice)
if [ $? -eq 0 ]; then
echo "$(date): Successfully restarted ${CONTAINER_ID}."
else
echo "$(date): Failed to restart ${CONTAINER_ID}. Continuing to next container."
fi
echo "$(date): Waiting 10 seconds before next container restart..."
sleep 10
done
echo "$(date): All specified Docker containers have been processed for restart."
fi
RESTARTED_TODAY=true # Set the flag to true to prevent re-running until next day
echo "$(date): Restart cycle for today (04:00) completed."
else
echo "$(date): It's 04:00, but containers already restarted today. Skipping."
fi
else
# Reset the flag once the time passes 04:00, preparing for the next day's restart
if [ "$RESTARTED_TODAY" = true ]; then
echo "$(date): Time is no longer 04:00. Resetting restart flag for tomorrow."
RESTARTED_TODAY=false
fi
fi
# Sleep for a shorter duration (e.g., 30 seconds) to ensure the 04:00 mark is caught reliably,
# but not so short as to consume excessive CPU.
sleep 30
done