GNU/Linux >> Znalost Linux >  >> Linux

Zahodit Stdout Of A Command na T sekund?

Pracuji na některých dávkových skriptech zahrnujících následující:

  • Spouštějte některé neukončující dílčí procesy (asynchronně)
  • Počkejte t sekund
  • Proveďte jiný úkol X nějakou dobu
  • Ukončit dílčí procesy

V ideálním případě bych chtěl být schopen rozlišit stdout dílčích procesů, které byly emitovány před X z toho, co bylo emitováno po X .

Napadá mě několik nápadů, i když netuším, jak bych je realizoval:

  • Zahoďte stdout pro t sekund
  • Vložte nějaký text (například „Úloha X zahájena“), abyste vizuálně oddělili části.
  • Rozdělit stdout do různých výstupních proudů

Přijatá odpověď:

I když byste mohli celou záležitost zkomplikovat pomocí exec a další hádky s popisovačem souborů, váš druhý návrh je nejjednodušší. Před spuštěním X , echo řetězec značky do souboru protokolu.

Všechny tyto příkazy by byly připojeny ke stejnému souboru, takže možná by bylo dobré přidat před všechny výstupy X se značkou, takže můžete odlišit jeho výstup od jednoho ze stále běžících předchozích příkazů. Něco ve smyslu:

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

Tím by byla další analýza mnohem jednodušší. Není to bezpečné a u velmi podrobných programů by se často stávaly závodní podmínky.

Pokud jste ochotni využít příležitosti prolomit jeden řádek protokolu a můžete bez následků přerušit první várku aplikací, fungovalo by to také:

{ 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 tipů pro příkazový řádek Linuxu

  2. předat stdout jako název souboru pro příkazový řádek util?

  3. Problémy s příkazovým řádkem Netcat

  1. Příklady příkazů DNF pro začátečníky

  2. Jak rozdělit soubor jako Split to Stdout pro připojení k příkazu?

  3. Může být příkaz linux cat použit pro zápis textu do souboru?

  1. 12 Příklady IP příkazů pro uživatele Linuxu

  2. Linuxový příkaz dir pro začátečníky (10 příkladů)

  3. Správná syntaxe příkazu id -r