Как перезапустить службу 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 только тогда, когда она перестает отвечать на запросы, сохраняя при этом обычные коды выхода?>
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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