bash script: можно ли распознавать видеоформат из файлов (для пакетного извлечения звука из них)?

Я чувствую, что никто не дал полного технического объяснения, поэтому здесь идет.

Чтобы понять chroot, вам сначала нужно понять раскол между ядром (Linux в GNU / Linux) и пользовательским пространством (GNU в GNU / Linux или, возможно, что-то еще, например, busybox.)

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

Пользовательское пространство - это все остальное. Все программное обеспечение, которое вы запускаете на своем компьютере. На самом деле ядро ​​запускает только одну программу пользовательского пространства, init, которая затем отвечает за запуск всего остального, например оболочки и среды рабочего стола. В пользовательском пространстве также есть библиотеки, которые обычно начинаются с libc, на которых строятся все остальные библиотеки.

Итак, имея в виду, концепция chroot проста. Он просто изменяет корневой каталог файловой системы unix на другой, только для любой команды, которую вы выбираете для запуска в этом контексте. Обычно это оболочка, в которой вы можете запускать другое программное обеспечение, так как ядро ​​запускает только одну команду напрямую. Этот новый контекст может иметь другой набор программ и библиотек пользователей. В одном и том же ядре работают оба набора программного обеспечения, поэтому обе системы могут использовать все аппаратные ресурсы, но (запрещая ошибки безопасности) вложенный chroot не может получить доступ к чему-либо из основной файловой системы. У него есть собственная версия / etc для конфигурации, это собственный / lib для библиотек, а также собственный / bin, / usr / bin для программ.

Вы должны знать, что аппаратные устройства являются общими. Таким образом, в отличие от виртуальной машины, если вы форматируете / dev / sda изнутри chroot, вы отформатируете свой настоящий жесткий диск. Это связано с тем, что узлы устройства в / dev являются прямым интерфейсом ядра, поэтому они означают одно и то же внутри и вне chroot.

Еще одна вещь: можно предоставить chroot доступ к внешней файловой системе с все остальное Если вы используете инструмент построения chroot, возможно, что он «помогает» монтирует / home из основной системы внутри chroot. Это не копия, это одна и та же файловая система, и в этом случае любые изменения, которые вы делаете внутри chroot, будут выполняться на оригинале. Поэтому я рекомендую вам вручную создавать chroots до тех пор, пока вам не будет удобно, как они работают.

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

1
задан 7 March 2013 в 21:51

1 ответ

Чтобы проверить в Bash, если $ file является видеофайлом, вы можете использовать

[[ $(ffprobe -v quiet -select_streams v:0 -show_entries stream=codec_name -print_format csv=p=0 "$file") ]] && echo $file is video

ffprobe предоставляется пакетом ffmpeg. У Ubuntu 14.04 нет ffmpeg в стандартных репозиториях, но вы можете добавить ppa: mc3man / trusty-media repository и установить пакет ffmpeg для получения необходимого программного обеспечения. Подробнее см. Здесь.

2
ответ дан 25 May 2018 в 00:44

Другие вопросы по тегам:

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