2016-12-13 1 views
0

Avec Bash, comment lancer des travaux d'arrière-plan en état suspendu/arrêté?Création de travaux d'arrière-plan suspendus

Je dois exécuter une centaine de processus nécessitant beaucoup de mémoire et de temps. leur exécution séquentielle serait prendre beaucoup de temps:

for i in inputs-list; do 
    memory-hog $i 
done 

Alors que les courir tout serait en même temps tuer ma machine:

for i in inputs-list; do 
    memory-hog $i & 
done 

Je voudrais que mes processus de commencer comme fond, travaux suspendus; alors je voudrais utiliser bg pour reprendre certains d'entre eux, tout en surveillant la consommation de la mémoire.

+1

peut-être l'homme 'xargs' et la recherche de la' -P' (nombre de processus) pourraient vous aider. En tout cas, vous allez vous rendre fou avec cela, soit emprunter quelques ordinateurs, ou chercher des outils comme 'GNU parrallel'. Bonne chance! – shellter

+1

Utilisez ** GNU Parallel ** pour contrôler le nombre d'exécutions à la fois et pour planifier en fonction de la pression de la mémoire. –

Répondre

2

Démarrez chaque processus en arrière-plan, puis envoyer SIGSTOP:

for i in inputs-list; do 
    memory-hog $i & 
    kill -SIGSTOP $! 
done