GNU/Linux >> Tutoriels Linux >  >> Linux

Supprimer Stdout d'une commande pendant T secondes ?

Je travaille sur des scripts batch impliquant les éléments suivants :

  • Exécuter des sous-processus sans fin (de manière asynchrone)
  • Attendez t secondes
  • Effectuer une autre tâche X pendant un certain temps
  • Terminer les sous-processus

Idéalement, j'aimerais pouvoir différencier le stdout des sous-processus qui a été émis avant X de celui qui a été émis après X .

Quelques idées me viennent à l'esprit, même si je n'ai aucune idée de la façon dont je les mettrais en œuvre :

  • Supprimer la sortie standard pour t secondes
  • Insérez du texte (par exemple, "Tâche X démarrée") pour séparer visuellement les sections
  • Diviser stdout en différents flux de sortie

Réponse acceptée :

Bien que vous puissiez compliquer les choses avec exec et des querelles de descripteurs de fichiers supplémentaires, votre deuxième suggestion est la plus simple. Avant de commencer X , echo une chaîne de marqueur dans le fichier journal.

Toutes ces commandes seraient ajoutées au même fichier, alors ce serait peut-être une bonne idée d'ajouter toutes les sorties de X avec un marqueur, afin que vous puissiez distinguer sa sortie de celle des commandes précédentes toujours en cours d'exécution. Quelque chose comme :

{ X; } | sed 's,^,[X say] ,'

Cela rendrait une analyse plus approfondie beaucoup plus simple. Ce n'est pas sûr et pour les programmes très verbeux, les conditions de concurrence se produiraient souvent.

Si vous êtes prêt à saisir l'occasion de casser une ligne de journal et que vous pouvez interrompre le premier lot d'applications sans conséquence, cela fonctionnera également :

{ Y; } >> log &
sleep $t
kill -STOP %% # last job, like the same as %1
echo -e "nX started" >> log
kill -CONT %%
{ X; } >> log2

Linux
  1. 8 conseils pour la ligne de commande Linux

  2. Exemples de commandes DNF pour les débutants

  3. Comment décomposer un fichier comme Split en Stdout pour le diriger vers une commande ?

  4. passer stdout comme nom de fichier pour l'utilitaire de ligne de commande ?

  5. Problèmes de ligne de commande Netcat

Tutoriel de commande Linux OD pour les débutants (6 exemples)

Tutoriel de commande Linux w pour débutants (5 exemples)

Tutoriel de commande Linux ss pour les débutants (8 exemples)

Commande de localisation Linux pour les débutants (8 exemples)

Quelques bonnes alternatives à du Command

Exa - Un remplacement moderne pour la commande ls