Процесс перезапуска Bash, если он прекратил запись в стандартный вывод через 5 минутLinux

Ответить
Anonymous
 Процесс перезапуска Bash, если он прекратил запись в стандартный вывод через 5 минут

Сообщение Anonymous »

Я хотел перезапустить процесс, если он перестает записывать на стандартный вывод.

Я использую композицию докера, которая одновременно загружает некоторый контент на сервер. Проблема в том, что иногда он зависает, чтобы это исправить, я просто перезапускаю его. На данный момент это работает.

Но я хотел сделать что-то похожее на это (это скрипт Gemini), но более чистым способом.
Я хочу, чтобы он обрабатывал поведение выхода при создании докера. Например, если 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
Ответить

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

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

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

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

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