Контейнеры не являются концепцией первого -класса , предоставляемой непосредственно ядром; они собраны с использованием различных функций, предоставляемых базовой операционной системой, в том числе в Linux пространства имен . В разных средах выполнения контейнеров используются разные функции, и в некоторых случаях набор функций может варьироваться от одного контейнера к другому в одной и той же среде выполнения.
«Контейнер пространства имен» — это контейнер, созданный с использованием пространств имен. Основываясь на вашей цитате, можно представить, что systemd-nspawn
использует как минимум пространства имен mount, пространства имен PID, пространства имен IPC и пространства имен UTS; его справочная страница указывает, что он также использует фильтры системных вызовов и некоторую форму ограничения ресурсов.
Контейнеры Docker также используют пространства имен наряду со многими другими функциями.
ls -d1 /apps/source_20??-??-??/ | head -n -2 | xargs rm -rf
При этом ls -d1 /apps/source_20??-??-??/
будут перечислены только соответствующие каталоги в отсортированном порядке, head -n -2
удалит две последние записи, а xargs rm -rf
затем удалит каталоги.
find /apps/ -type d -not -name source -name "source*" -print | sort | head -n -2 | xargs rm -rfv
find apps/ -type d -not -name source -name "source*" -print
найдет все каталоги резервных копий, убедившись, что source
не выбран командой find
.
sort
будет сортировать, следя за тем, чтобы самые последние были последними. Это основано не на времени модификации, а на имени каталога.
head -n -2
получает все каталоги, за исключением двух последних резервных каталогов.
xargs rm -rfv
удаляет все резервные каталоги, за исключением последних двух, отфильтрованных предыдущей командой.
(Внимание :Если имена каталогов содержат пробелы, эта команда не будет работать. Всегда сначала проверяйте создание поддельных каталогов и пробуйте эту команду.)