Вопрос: Запуск поиска и xargs в фоновом режиме


Я хочу запустить эту команду в фоновом режиме, потому что процесс может занять много времени. Как я могу отправить его в фоновый процесс?

find /tmp/ -type f -mtime +3 | xargs rm -Rf

Это не работает:

find /tmp/ -type f -mtime +3 | xargs rm -Rf &

Как я могу это сделать?


4
2017-07-19 08:35


Источник


Подождите, ваш второй пример должен работа (за исключением проблемы с пространством, о которой упоминается slhck). - derobert


Ответы:


Если вы хотите запустить оба в фоновом режиме, поместите их в подоболочку:

(find /tmp/ -type f -mtime +3 | xargs rm -Rf) &

Но, пожалуйста, не делай этого, кант find вывод в xargs небезопасно, если вы не используете следующие параметры, которые поддерживаются в GNU и BSD find а также xargs:

find … -print0 | xargs -0 …

Если find возвращенные файлы с пробелами в их имени, которые вы могли бы - даже не зная, - необратимо удалить неправильные папки. Внимательно прочитайте find руководства и раздел об удалении файлов для получения дополнительной информации.

Самый безопасный способ, в вашем случае, будет:

find /tmp/ -type f -mtime +3 -delete &

8
2017-07-19 08:47





В зависимости от аппаратного обеспечения, на котором сидит файловая система, может быть быстрее удалено параллельно:

( find . | parallel -X rm ) &

В отличие от xargs GNU Parallel правильно обрабатывает пространство, «и» в именах файлов. Только если у вас есть имена файлов, содержащие новую строку, вам понадобится -print0 / -0.

10 секунд установки:

wget -O - pi.dk/3 | bash

Посмотрите вступительное видео для быстрого введения: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1


2
2017-07-20 08:06