Здравия! Полгода у меня отработал регистратор, но есть момент, который мне не нравится. Я пишу по 15 минут видео с камер, вот пример кода:
#!/bin/bash
while [ true ]
do
ffmpeg -t 00:15:00 -i "<link to ip cam>" -c copy "/video/camnum$(date).mkv" & pid=$!
sleep 900
kill -9 &pid
done
Убивать процесс костылём приходится потому, что видео иногда зависает и висит так до второго пришествия. А ещё бывает отскакивает в начале пути и тогда не пишется до перезапуска процесса. Я хочу спросить сообщество, как сделать контроль процесса, то есть если отвалится перезапустить, если зависнет, то убить по истечении 15 минут(или сразу, как повиснет, если возможно).
С уважением к грамотно ответившим, всем доброго дня.
А вопрос в чём? Начать чинить надо с разбором, что там «отскакивает». И да, 900 лучше хотя бы до 902 добавить, а то оно будет убивать вполне чуть подтормаживающий перед завершением процесс.
отскакивает в начале пути и тогда не пишется до перезапуска процесса
Переосмыслить в технических терминах надо.
Почему «костылём»?
Предпосылок, сам понимаешь, море разливанное.
Первый вопрос - куда пишется? Диск, флеш, астрал?
Второй - сделать strace пробовал?
Мерзкая работа камеры? Если работы из разряда «то потухнет, то погаснет», то может имеет смысл глубже изучить прохождение потока от камеры на устройство хранения?
Если убрать «костыль», то он не заканчивается по истечении 15 минут. iotop-ом можно посмотреть, что запись не ведётся. Это бывает не так часто, но сильно неприятно.
kill -0 не убивает :) Хотя в данном случае, я тупанул, не тот сценарий.
то он не заканчивается по истечении 15 минут
expect тебе в помощь с любым разумным таймаутом. Вообще, если я не ошибаюсь в ffmpeg был некий флаг что бы нарезать выходные видео пачками заданного размера или продолжительности.