xargs com -P - Exemplos Técnicos Seguros para Processamento

[Objetivos] [Comandos Seguros] [Contexto Técnicos]
Processar logs em paralelo find /var/log -name "*.log" -mtime -1 -print0 | xargs -0 -P 4 -I {} gzip --best {}
Compacta logs de hoje usando 4 núcleos.
Seguro com -print0 e -0.
Download de ISO/Binário com wget
mkdir -p ./downloads
while IFS= read -r url; do
  [[ -z "$url" || "$url" =~ ^[[:space:]]*# ]] && continue
  filename="${url##*/}"
  echo "Baixando: $filename"
  wget -q --show-progress -O "./downloads/$filename" "$url"
done < <(tr -d '\r' < urls.txt)
Usa wget com saída progressiva e redirecionamento automático. Suporta retomada com [-c] se o servidor permitir.
Download de ISO/Binário com curl
mkdir -p ./downloads
while IFS= read -r url; do
  [[ -z "$url" || "$url" =~ ^[[:space:]]*# ]] && continue
  filename="${url##*/}"
  echo "Baixando: $filename"
  curl -L -C - --progress-bar -o "./downloads/$filename" "$url"
done < <(tr -d '\r' < urls.txt)
Usa curl com -L [segue redirecionamentos] e -C - retoma downloads interrompidos.
Verifique se a URL está ativa com:
curl -I https://files.devuan.org/devuan/devuan_6.0.0_amd64_desktop-live.iso
Um retorno [HTTP/2 200] confirma que o recurso existe e é acessível.
Evite downloads cegos de [ISOs] (>2GB) sem essa validação.
Converter imagens para WebP find ~/fotos -name "*.jpg" -print0 | xargs -0 -P 4 -I {} convert {} -quality 80 {}.webp
Usa todos os núcleos sem travar o sistema.
Funciona no antiX com ImageMagick.
Limpar caches de múltiplos usuários getent passwd | cut -d: -f1 | head -10 | xargs -P 2 -I {} sh -c '-trash /home/{}/.cache/* 2>/dev/null || true'
Seguro para sistemas com pouco RAM.
[-P 2]
evita I/O excessivo em SSDs antigos.
Gerar checksums de backups find backups -name "*.html" -print0 | xargs -0 -r -P 8 sha256sum > checksums.txt
Auditoria de segurança em sistemas [Linux]
Usa 8 threads em CPUs modernas.
[Etapas] [Descrições] [Comandos]
1 Criar arquivo com URLs reais
cat > urls.txt <<EOF
https://raw.githubusercontent.com/torvalds/linux/master/README
https://files.devuan.org/devuan-daedalus/iso/devuan_excalibur_6.0.0_amd64_netinst.iso
https://raw.githubusercontent.com/mirror/busybox/master/README
EOF
2 Verificar arquivos baixados
ls -lh ./downloads/
3 Criar usuários e estrutura de cache para teste
sudo useradd -m teste1
sudo useradd -m teste2
mkdir -p /home/teste1/.cache /home/teste2/.cache
touch /home/teste1/.cache/arquivo.txt
4 Limpar cache com trash (sem usar rm) via xargs
getent passwd | cut -d: -f1 | grep -E 'teste1|teste2' | \
xargs -r -P 2 -I {} sh -c 'trash /home/"$1"/.cache/* 2>/dev/null || true' -- {}
5 Verificar se o arquivo foi movido para a lixeira
ls ~/.local/share/Trash/files/
# → arquivo.txt deve estar lá
💡 Sempre use find ... -print0 | xargs -0 para evitar falhas com nomes contendo espaço, quebra de linha ou caracteres especiais.