Как перезапустить службу Docker Compose, если она перестает выдавать стандартный вывод на 5 минут?Linux

Anonymous
Как перезапустить службу Docker Compose, если она перестает выдавать стандартный вывод на 5 минут?

Сообщение Anonymous »

У меня есть настройка Docker Compose, которая одновременно загружает контент на сервер. Иногда процесс зависает и перестает выдавать какие-либо выходные данные на стандартный вывод. В этом случае проблему можно решить, перезапустив службу вручную.
Сейчас я использую сценарий Bash (вдохновленный сценарием Gemini), чтобы определить, когда процесс прекращает запись в стандартный вывод более чем на 10 минут, а затем перезапустить его. Сценарий работает, но кажется беспорядочным, и мне бы хотелось реализовать его более чистым и идиоматическим способом.
Одно дополнительное требование:
Если docker Compose нормально завершает работу со статусом 0, я хочу, чтобы цикл остановился, а не перезапустил службу.
Вот сценарий, который я сейчас использую:

Код: Выделить всё

#!/bin/bash

while true; do
# Start the program in the background and capture its output
docker compose -f $1 up | while true; do
# 'read' will wait up to 600 seconds (10 min) for a new line
if ! read -t 600 line; then
echo "No output for 10 minutes! Killing and restarting..."
# Kill the parent process of the pipe (your_program.sh)
docker compose -f $1 down
break
fi
echo "$line"
done
sleep 1
done
Каков самый чистый или идиоматический способ отслеживать бездействие стандартного вывода и перезапускать службу Docker Compose только тогда, когда она перестает отвечать на запросы, сохраняя при этом обычные коды выхода?>

Вернуться в «Linux»