← retour aux snippets

parallel: exécuter des commandes en parallèle

Utiliser GNU parallel pour paralléliser des tâches avec contrôle du nombre de jobs et logs.

objectif

Accélérer des traitements en masse de manière sécurisée et reproductible.

code minimal

# exécuter 4 jobs simultanés
printf '%s\n' file1 file2 file3 file4 | parallel -j4 'gzip -9 "{}"'

utilisation

# passer deux colonnes (src,dst) à une commande
paste src.txt dst.txt | parallel --colsep '\t' 'rsync -a "{1}" "{2}"'

# logs séparés par job
printf '%s\n' a b c | parallel --results out 'echo {} && sleep 1'

variante(s) utile(s)

# limite globale de CPU
parallel --jobs 0 --load 80% 'doit; faire; des trucs'

notes

  • exportez les variables nécessaires avec env_parallel si besoin.
  • respectez les licences GNU parallel lors de l’utilisation commerciale.