2011-09-26 6 views
3

J'ai écrit un script shell pour exécuter une série de commandes. L'une des commandes du script shell est de lancer une application. Cependant, je ne sais pas comment continuer à exécuter le script shell après avoir lancé l'application.Exécution d'une commande de script shell après l'exécution d'une application

Par exemple:

... 
cp somedir/somefile . 
./application 
rm -rf somefile 

Une fois que je lançais l'application avec « ./application » Je ne suis plus en mesure de continuer à exécuter la commande « rm -rf somefile », mais je vraiment besoin de supprimer le fichier à partir du répertoire.

Quelqu'un at-il des idées sur la façon de rivaliser en exécutant la commande "rm -rf" après le lancement de l'application?

Merci

Répondre

4

Comme l'a fait par d'autres, vous pouvez l'application fond (homme bash de contrôle du travail », par exemple).

En outre, vous pouvez utiliser le wait builtin attendre explicitement les travaux d'arrière-plan plus tard:

./application & 
echo doing some more work 

wait # wait for background jobs to complete 
echo application has finished 

Vous devriez vraiment lire les pages de manuel et bash aide pour plus de détails, comme toujours:

1

Vous devez lancer la commande en arrière-plan en utilisant « & » et peut-être même nohup.

nohup ./application > log.out 2>&1 
+1

oui, mais pas r elevant ici –

2

Démarrez l'application en arrière-plan, de cette façon la coquille ne va pas attendre qu'il se termine et exécuter les commandes conséquentes juste après le démarrage de l'application:

./application & 

En attendant, vous pouvez vérifier les tâches d'arrière-plan en utilisant la commande jobs et attendez-les via wait et leur ID. Par exemple:

$ sleep 100 & 
[1] 2098 
$ jobs 
[1]+ Running     sleep 100 & 
$ wait %1 
1

mis le processus a commencé à fond:

./application & 
Questions connexes