2012-12-28 1 views
1

J'essaie d'exécuter un script Python (qTrimHIV.py) sur TOUS les fichiers se terminant par .fastq dans le répertoire courant. Je voudrais ajouter nohup au début afin qu'il fasse tous les fichiers à partir d'une seule commande, et peu importe si je ferme le terminal ou la déconnexion.nohup pour une commande par lots utilisant "for x in find"

La commande individuelle:

for x in $(find . -name '*fastq'); do echo $x; python ../qTrimHIV.py -verbose -fastq $x -l 23 -m 20 -w 23 -o ${x%.fastq*}tr -mode 2; done 

fonctionne bien. Mais quand je mets nohup devant la commande batch:

nohup for x in $(find . -name '*fastq') ; do echo $x; python ../qTrimHIV.py -verbose -fastq $x -l 23 -m 20 -w 23 -o ${x%.fastq*}tr -mode 2; done 
-bash: syntax error near unexpected token `do' 

Je reçois l'erreur ci-dessus.

Cependant, cela fonctionne bien si je mets le nohup avant la commande actuelle "python ../qTrimHIV.py", mais ce n'est pas vraiment ce que je veux, car je veux soumettre la tâche pour tous les fichiers à la fois et faites-le en cours d'exécution jusqu'à ce qu'il soit fait, sans avoir à garder connecté.

J'ai essayé

for x in $(find . -name '*fastq') ; do echo $x; python ../qTrimHIV.py -verbose -fastq $x -l 23 -m 20 -w 23 -o ${x%.fastq*}qtrim -mode 2; done | at now 

mais il ne me permet pas de voir les progrès du travail, et je ne peux pas savoir si il est toujours en cours d'exécution ou non.

Quelqu'un peut-il me donner des suggestions? Dois-je utiliser une commande différente, autre que nohup?

Répondre

1

vous pouvez utiliser:

nohup bash -c 'your command, everything including for' 

aussi, pourquoi ne pas exécuter le script shell en utilisant nohup:

nohup <your script> 
+0

Merci, Icare :) Je ne suis pas familier avec les scripts shell d'écriture, mais je devrait y arriver. –

Questions connexes