Polecenie time i pipe

0

Witam,

problem z pozoru prosty.
Mam dwa polecenia foo i bar. 'Foo' generuje dane dla 'bar'. Chciałbym zmierzyć czas wykonywania całej operacji: foo | bar Z racji tego że 'bar' wykonuje się dłużej niż 'foo' więc czas wykonania całej operacji=czas wykonywania 'bar', jednak gdy wydaję takie polecenie"
foo | time -p bar dostaję:"bash: time: command not found", dopisanie pełnej ścieżki:foo | /usr/bin/time -p bar nie rozwiązuje problemu.
Umieszczenie time przed foo działa bez zarzutu ale powoduje, że dostaję tylko czas wykonania foo.

Jak dodać "time" po '|'(pipe) lub inaczej zmierzyć czas całej operacji?

0

spróbuj foo | time -p bar

0
Proxima napisał(a):

spróbuj foo | time -p bar

Dzięki, to rozwianie działa, ale problem jest głębszy.
Myślałem, że to nie będzie miało znaczenia, ale jednak ma.
'bar' generuje dane, które trafiają do pliku i chciałbym też do pliku zapisywać czas operacji. W sieci znalazłem takie rozwiązanie:
(time polecenie) > outfile 2>&1 Przerabiając ten przykład na moje polecenia, kiedy "time" jest przed "foo" to działa, ale jak użyje czegoś takiego:
(foo |time -p bar) > outfile 2>&1 pojawia się opisane wcześniej "bash: time: command not found".

Korzystając z zaproponowanego wyżej rozwiązania wszystko jest ok poza tym, że wynik "time" dostaje na konsolę, a wolałbym do pliku.
Dodanie do time parametru -o powoduje błąd.

Czy jest jakiś inny sposób, żeby przekierować wyjście tak użytego "time" do pliku?

Dodatkowo całe to "foo | bar" jest wykonywane kilka razy w pętli dla różnych wartości parametrów i dla każdego "obrotu" pętli generuje osobne pliki/logi.

0

Po pierwsze, są 2 różne polecenia time. Jedno jest zewnętrznym poleceniem (ścieżkę można znaleźć przy pomocy which time) oraz wbudowane w Basha time (co można sprawdzić przy pomocy type time).

Opisz co dokładnie chcesz uzyskać a będziemy mogli Ci dać poprawną odpowiedź.

1 użytkowników online, w tym zalogowanych: 0, gości: 1