2010-09-27 3 views
1

J'essaie de lancer a.out beaucoup de fois à partir de la ligne de commande, mais je ne suis pas capable de démarrer les processus en arrière-plan car bash le traite comme une erreur de syntaxe.Comment lancer un très grand nombre de processus dans bash

for f in `seq 20`; do ./a.out&; done //incorrect syntax for bash near '&' 

Comment puis-je placer & sur la ligne de commande pour que bash ne se plaint pas, et je suis autorisé à exécuter ces processus en arrière-plan, afin que je puisse générer la charge sur le système.

P.S: Je ne veux pas le diviser en plusieurs lignes.

Répondre

3

Cela fonctionne:

for f in `seq 20`; do ./a.out& done 

& termine une commande comme ; ou &&, ||, |. Cela signifie que bash attend une commande entre & et ; mais n'en trouve pas. D'où l'erreur.

+0

Yikes - encore une autre raison d'aimer zsh ... ;-). Super boulot qui ... mais je suppose que, une fois mordu, il serait difficile d'oublier. –

0

Briser cela en plusieurs lignes ou retirer le; après le &

1

& est un terminateur de commande ainsi que ;; n'utilisez pas les deux.

Et d'utiliser la syntaxe bash au lieu d'utiliser seq, qui n'est pas disponible sur tous les systèmes Unix.

for f in {1..20} ; do ./a.out& done 
1

Retirez le ; après a.out:

for f in `seq 20`; do ./a.out& done 
Questions connexes