4

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

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

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

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

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

2 ответа2

8

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

(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 &
2

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

( find . | parallel -X rm ) &

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

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

wget -O - pi.dk/3 | bash

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .