Команда запуска ffprobe для нескольких видео

Обычно службы сохраняют файлы журналов открытыми во время работы. Это означает, что им все равно, переименованы ли/перемещены или удалены файлы журналов, они продолжат запись в обрабатываемый открытый файл.

Когда logrotate перемещает файлы, службы продолжают записывать в один и тот же файл.

Пример :crond будет писать в /var/log/cron.log. Затем logrotate переименует файл в /var/log/cron.log.1, поэтому crond продолжит запись в открытый файл /var/log/cron.log.1.

Отправка сигнала HUP в crond заставит его закрыть существующий дескриптор файла и открыть новый дескриптор файла по исходному пути /var/log/cron.log, что создаст новый файл.

Использование сигнала HUP вместо другого остается на усмотрение программы. Некоторые службы, такие как php -fpm, будут прослушивать сигнал USR1, чтобы повторно открыть дескриптор файла без завершения работы.

0
24.06.2019, 19:40
1 ответ

Вам нужно заключить команду в цикл. Извините, не уверен, что делает ваш sed, и будет ли это уместно в конце цикла или должно происходить после каждого ffprobe(, если да, то лучше передать вывод ffprobeв sedвместо того, чтобы запускать sedдля результирующего файла ).

Цикл сэмплов:

for file in $( ls -1 -Q /home/videos/*.mp4 | sort ); do
  ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 -sexagesimal $file | awk -F: '{printf "%02d:%02d:%02d",$1,$2,$3}' >> /root/videoduration.txt && sed -i -e '$a\' /root/videoduration.txt
done

или

while read file; do
  ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 -sexagesimal $file | awk -F: '{printf "%02d:%02d:%02d",$1,$2,$3}' >> /root/videoduration.txt && sed -i -e '$a\' /root/videoduration.txt
done < <( ls -1 -Q /home/videos/*.mp4 | sort )
0
28.01.2020, 03:32

Теги

Похожие вопросы