GNU/Linux >> Tutoriels Linux >  >> Linux

Comment exécuter une commande après la fin d'une commande existante déjà en cours d'exécution ?

Vous pouvez séparer plusieurs commandes par ; , ils sont donc exécutés séquentiellement, par exemple :

really_long_script.sh ; echo Finished

Si vous souhaitez exécuter le programme suivant uniquement si le script s'est terminé avec le code de retour 0 (ce qui signifie généralement qu'il s'est exécuté correctement), alors :

really_long_script.sh && echo OK

Si vous voulez le contraire (c'est-à-dire continuer uniquement si la commande actuelle a échoué), alors :

really_long_script.sh || echo FAILED

Vous pouvez exécuter votre script en arrière-plan (mais attention, la sortie des scripts (stdout et stderr ) continuerait à aller sur votre terminal à moins que vous ne le redirigiez quelque part), puis wait pour cela :

really_long_script.sh &
dosomethingelse
wait; echo Finished

Si vous avez déjà exécuté le script, vous pouvez le suspendre avec Ctrl-Z , puis exécutez quelque chose comme :

fg ; echo Finished

fg amène le processus suspendu au premier plan (bg le ferait fonctionner en arrière-plan, à peu près comme commencé avec & )


Vous pouvez également utiliser le contrôle des tâches de bash. Si vous avez commencé

$ really_long_script.sh

puis appuyez sur ctrl+z pour le suspendre :

^Z
[1]+  Stopped                 really_long_script.sh
$ bg

pour redémarrer le travail en arrière-plan (comme si vous l'aviez démarré avec really_long_script.sh & ). Ensuite, vous pouvez attendre ce travail en arrière-plan avec

$ wait N && echo "Successfully completed"

où N est l'ID de la tâche (probablement 1 si vous n'avez exécuté aucune autre tâche en arrière-plan) qui s'affiche également sous la forme [1] ci-dessus.


Si le processus ne s'exécute pas sur le tty actuel, essayez ceci :

watch -g ps -opid -p <pid>; mycommand

Linux
  1. Comment exécuter une commande stockée dans une variable ?

  2. Comment résoudre le problème "Firefox déjà en cours d'exécution" sous Linux

  3. Comment puis-je exécuter correctement des scripts de ligne de commande Perl one liner?

  4. Comment vérifier si ssh-agent est déjà en cours d'exécution dans bash ?

  5. linux :comment exécuter une commande dans un répertoire donné

Comment exécuter la commande Sudo sans mot de passe

Comment exécuter des commandes Linux en arrière-plan

[Bash Tips] Comment cd et ls en une seule commande

[Bash Tips] Comment cp ou mv et cd en une seule commande

Comment exécuter une commande périodiquement sous Linux à l'aide de Watch

Comment exécuter plusieurs commandes Linux en une seule commande