Найти -Пробный прогон exec?

Невозможно добавить комментарий, потому что недостаточно повторений, так что вот оно :Я сделал точно такой же тест, как и jpa, на немодифицированном растяжке Debian, и память вернулась к исходному значению, хотя я НЕ размонтировал. Так что, кажется, это поведение изменилось.

http://man7.org/linux/man-pages/man7/namespaces.7.html

подразумевает это, по крайней мере, говоря:

Bind mounting (see mount(2)) one of the files in this directory to somewhere else in the filesystem keeps the corresponding namespace of the process specified by pid alive even if all processes currently in the namespace terminate.

Значит, отказ от этого разрушает пространство имен (? ).

4
27.12.2020, 02:37
3 ответа

Вы можете запустить echo rmвместоrm

find. type f -exec echo rm {} \;

Кроме того, findимеет -deleteвозможность удалять найденные файлы

19
18.03.2021, 22:40

В частности, для rmвам не нужно-exec:просто запустить find. -type fдля отображения списка и добавить -deleteдля удаления файлов, перечисленных предыдущей командой (, очевидно, запрещая создание любых соответствующих файлов/ тем временем удалил ).

Кроме того, для таких команд, как rm, которые принимают произвольное количество аргументов, вы можете заменить \;на +, чтобы запускать как можно меньше команд.

3
18.03.2021, 22:40

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

printcmd() { printf '%q ' "$@"; printf '\n'; }

find. -exec bash -c "$(declare -f printcmd); "'printcmd "$@"' _ \
  somecommand {} \;

Обратите внимание, что строка, которую мы вставляем перед нашим аргументом -exec, точно соответствует bash -c "$(declare -f printcmd); "'printcmd "$@"' _--, $(declare -f printcmd)расширяется до кода функции; после этого мы на самом деле вызываем функцию с аргументами $1и далее, и помещаем _в качестве заполнителя для $0.

Вы можете заменить zshили kshвместо bash, если хотите экранировать вывод для этой оболочки.

3
18.03.2021, 22:40

Теги

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