Dobra, teraz się rozjaśniło.
Część konsoli ma wbudowany w siebie wewnętrzny
time o zawężonych możliwościach. Upewnij się, że korzystasz z
programu time i wywołujesz go przez pełną ścieżkę (na ogół
/usr/bin/time).
time wyświetla informacje o procesie na strumień błędów STDERR, czyli do potoku
nie łapanego przez pipe "|". Parametr
-p wymusza format "trzylinijkowy".
Rozwiązania są dwa:
* Jeżeli wykonywany skrypt/program rzeczywiście nic nie pisze na ekran (znaczy STDOUT) to możesz zrobić taki trick (
2>&1 "przepina" STDERR na STDOUT):
/usr/bin/time -p ./program 2>&1 | awk ...
* Jeżeli możesz pisać do pliku, to zrób:
/usr/bin/time -p -o plik_logu.txt ./program
cośtamcośtam plik_logu.txt
W obu przypadkach możesz skorzystać z magicznego parametru
-f (zamiast -p) formatującego wyjście dokładnie do twoich potrzeb. Pełna dokumentacja dostępna w
To '1' jest ważne, bo bez tego wyświetla opis funkcji systemowej a nie polecenia.
Jeżeli interesuje cię tylko czas
system, to polecenie zwija się do takiego:
/usr/bin/time -f"%S" ./program 2>&1 | dalsza_obróbka