Я использовал подобное решение, подобное этому Restarting ffmpeg process using monit, чтобы перезапустить поток ffmpeg, если он по какой-то причине не работает. Помните его не дублирующую проблему/вопрос, потому что у меня есть другие проблемы, в отличие от примера вопроса/решения Restarting ffmpeg process using monit, о котором я расскажу ниже. Так вот моя конфигурация монит:Перезапустите процесс ffmpeg с использованием monit, если TOTAL CPU меньше 1%
check process FFMPEGStream with pidfile PATH-to-file/streampid.pid
start program = "PATH-to-file/streambash.sh restart"
stop program = "PATH-to-file/streambash.sh stop"
if TOTAL CPU is less than 1% for 10 cycles then restart
Вот мой streambash.sh файл:
#!/bin/bash
pid_file="PATH-to-file/streampid.pid"
case "$1" in
restart)
PATH-to-file/streambash.sh stop
PATH-to-file/streambash.sh start
;;
start)
rm $pid_file
/usr/bin/ffmpeg -i "INPUT-PATH" -c:v libx264 -b:v 900k -preset ultrafast -aspect 16:9 -s 640x376 -strict experimental -c:a aac -b:a 96k -f flv "RTMP-PATH" &> /dev/null &
ch_pid=$!
echo "Start Stream1: ffmpeg = $ch_pid";
echo $ch_pid > $pid_file
;;
stop)
echo "Stop ffmpeg Stream1";
kill `cat $pid_file` &> /dev/null
;;
*)
echo "Usage: PATH-to-file/streambash.sh {start|stop|restart}"
exit 1
;;
esac
exit 0
echo $pid_file
монит может запустить файл Баш успешно, но когда это условие «, если TOTAL CPU меньше 1 % для 10 циклов, а затем перезапустить « соответствует в конфигурации monit, он пытается перезагрузить, он дает ошибку, что процесс не запущен. Но в действительности процесс ffmpeg все еще работает в фоновом режиме, и я вижу, что поток работает на моем сайте. Вот MONIT журналы:
[CET Jan 10 12:55:02] error : 'FFMPEGStream' total cpu usage of 0.4% matches resource limit [cpu usage>1.0%]
[CET Jan 10 12:55:07] error : 'FFMPEGStream' total cpu usage of 0.0% matches resource limit [cpu usage>1.0%]
[CET Jan 10 12:55:12] error : 'FFMPEGStream' total cpu usage of 0.0% matches resource limit [cpu usage>1.0%]
[CET Jan 10 12:55:17] error : 'FFMPEGStream' total cpu usage of 0.4% matches resource limit [cpu usage>1.0%]
[CET Jan 10 12:55:22] error : 'FFMPEGStream' total cpu usage of 0.9% matches resource limit [cpu usage>1.0%]
[CET Jan 10 12:55:27] error : 'FFMPEGStream' total cpu usage of 0.9% matches resource limit [cpu usage>1.0%]
[CET Jan 10 12:55:32] error : 'FFMPEGStream' total cpu usage of 0.0% matches resource limit [cpu usage>1.0%]
[CET Jan 10 12:55:37] error : 'FFMPEGStream' total cpu usage of 0.0% matches resource limit [cpu usage>1.0%]
[CET Jan 10 12:55:42] error : 'FFMPEGStream' total cpu usage of 0.0% matches resource limit [cpu usage>1.0%]
[CET Jan 10 12:55:47] error : 'FFMPEGStream' total cpu usage of 0.4% matches resource limit [cpu usage>1.0%]
[CET Jan 10 12:55:50] info : 'FFMPEGStream' trying to restart
[CET Jan 10 12:55:50] info : 'FFMPEGStream' stop: PATH-to-file/streambash.sh
[CET Jan 10 12:55:51] info : 'FFMPEGStream' start: PATH-to-file/streambash.sh
[CET Jan 10 12:55:56] error : 'FFMPEGStream' process is not running
[CET Jan 10 12:55:58] info : 'FFMPEGStream' trying to restart
[CET Jan 10 12:55:58] info : 'FFMPEGStream' start: PATH-to-file/streambash.sh
[CET Jan 10 12:56:04] error : 'FFMPEGStream' process is not running
[CET Jan 10 12:56:04] info : 'FFMPEGStream' trying to restart
[CET Jan 10 12:56:04] info : 'FFMPEGStream' start: PATH-to-file/streambash.sh
[CET Jan 10 12:56:09] error : 'FFMPEGStream' process is not running
[CET Jan 10 12:56:09] info : 'FFMPEGStream' trying to restart
[CET Jan 10 12:56:09] info : 'FFMPEGStream' start: PATH-to-file/streambash.sh
монит продолжает пытаться перезапустить процесс и на каждую повторную попытку, он сбрасывает новый PID в PATH-к-файл/streampid.pid, но, как я сказал, что это, кажется, это как-то может остановить фактический поток ffmpeg/pid, которые продолжают работать в фоновом режиме.
Почему бы не использовать приятные или группы? –
Моя проблема не в обработке ЦП, моя проблема в том, что процесс не перезапущен или по крайней мере не показан как начатый в monit, если после его не работает. Использование процессора - это просто способ, которым я знал, что процесс не работает, или ffmpeg - это кодирование или любая связанная с этим проблема. Поэтому не имеет смысла использовать славные или группы. – user2201239