2012-06-18 12 views
10

biegnę następujące polecenie (na Ubuntu)jak przekierować wynik polecenia czasu linux do jakiegoś pliku

time wget 'http://localhost:8080/upLoading.jsp' --timeout=0 

i uzyskać wynik w wierszu poleceń

real 0m0.042s 
user 0m0.000s 
sys  0m0.000s 

mam próbowałem następujące:

time -a o.txt wget 'http://localhost:8080/upLoading.jsp' --timeout=0 

i pojawia się następujący błąd

-a: command not found 

Chcę, aby wynik został przekierowany do jakiegoś pliku. Jak mogę to zrobić?

+1

Prawdopodobnie używasz bash i ma wbudowane polecenie 'time'. (patrz 'czas pomocy') Twoje polecenie powinno używać'/usr/bin/time' do poprawnego działania (aby odkryć, gdzie używa się binarnego czasu 'która godzina'). Rozważając to, musisz użyć: 'time -o out.txt -a ...' – Lourenco

Odpowiedz

3

można przekierować stdout jakiegokolwiek commmand do pliku przy użyciu znaku >. Aby dołączyć wyjście do użytku plików >>

Należy zauważyć, że o ile nie odbywa się jawnie, wyjście do stderr będzie nadal iść do konsoli. Skierować zarównostderr i stdout do tego samego strumienia wyjściowego użyć

command 2>&1 outfile.txt (with bash) 

lub

command >& outfile.txt (with t/csh) 

Jeśli pracujesz z bashAll about redirection daje więcej szczegółów i kontrolę temat przekierowania.

+3

(czas wget ...) 2> out.txt działa idealnie. Dzięki – Julias

+0

Zastanów się '/ usr/bin/time', jak skomentowałem powyżej. A zatem użyj czegoś takiego jak '/ usr/bin/time -o outfile.txt -a ...' – Lourenco

0

Dokładnie time z GNU pisze to wyjście do stderr a jeśli chcesz przekierować go do pliku, można użyć --output = parametr ścieżkę time

Zobacz ten http://unixhelp.ed.ac.uk/CGI/man-cgi?time

a jeśli chcesz przekierować stdout do jakiegoś pliku, możesz użyć > filename, aby utworzyć plik i wypełnić go lub >> filename, aby dołączyć do jakiegoś pliku po początkowym poleceniu.

Jeśli chcesz przekierować stderr samemu, można użyć $ command >&2 your_stderr_output

6

Sprawdzanie man time, myślę, że to, co potrzebne jest

time -o o.txt -a ... 

(Uwaga trzeba zarówno -a i -o).

[EDIT:] Jeśli jesteś w bash, należy również zadbać, aby napisać

/usr/bin/time 

(sprawdź stronę podręcznika dla wyjaśnienia)

+0

Nadal nie działa: '-o: command not found' na moim komputerze. –

+1

Sprawdź komentarz Adama (http://stackoverflow.com/a/11082413/384689), to jest prawdopodobnie rozwiązanie – claasz

+0

Hmm, nie widzę tego ani ... więc zredagowałem swoją odpowiedź. Mam nadzieję, że to pomoże – claasz

-1

można zrobić z > jeśli chcesz przekierować wydajność.

Na przykład:

time wget 'http://localhost:8080/upLoading.jsp' --timeout=0 > output.txt 2>&1 

2>&1 mówi przekierować stderr do tego samego pliku.

To polecenie usunie wszystkie pliki output.txt i utworzy nowe z danymi wyjściowymi. Jeśli użyjesz >>, dołączy on dane wyjściowe na końcu dowolnego istniejącego pliku output.txt. Jeśli nie istnieje, utworzy go.

10

-a jest zrozumiały tylko przez czas binarny (/ usr/bin/czas), Kiedy tylko używasz czasu, używasz wbudowanej wersji bash, która nie przetwarza opcji -a, i dlatego próbuje uruchomić to jako polecenie.

/usr/bin/time -o foo.txt -a wget 'http://localhost:8080/upLoading.jsp' --timeout=0 
+0

Oba -a i -o nie działały. Rozwiązaniem było 2> foo.txt – Julias

+2

Uważam, że jest to właściwie poprawna odpowiedź. Wywołując czas, wywołaj/usr/bin/time zamiast używać wbudowanej powłoki, która nie obsługuje zaawansowanych opcji. – mattismyname

+0

Zdecydowanie, to jest poprawna odpowiedź. – Lourenco

0

spróbuje użyć /usr/bin/time ponieważ wiele muszle mają własną implementację time, które mogą lub nie mogą obsługiwać te same flagi jako /usr/bin/time

tak zmienić swoje polecenia

/usr/bin/time -a -o foo.txt wget .... 
+0

Dodałem ten komentarz w pytaniu, aby to zrozumieć. – Lourenco

1
\time 2> time.out.text command 

\time -o time.out.text command 

Ta odpowiedź została oparta na wcześniejszych komentarzach. Jest testowany, działa. Zaletą funkcji \ w stosunku do \ jest to, że nie trzeba znać katalogu instalacyjnego pod numerem time.

Odpowiedzi te obejmują również tylko czas, a nie inne dane wyjściowe.

0

Co z twoją siecią LANG?

$ time -ao o.txt echo 1 
bash: -ao: コマンドが見つかりません 

real 0m0.001s 
user 0m0.000s 
sys  0m0.000s 
$ export|grep LANG 
declare -x LANG="ja_JP.utf8" 

$ LANG=C time -ao o.txt echo 1 
1 

$ cat o.txt 
0.00user 0.00system 0:00.00elapsed 0%CPU (0avgtext+0avgdata 1984maxresident)k 
0inputs+0outputs (0major+158minor)pagefaults 0swaps 
0

Spróbuj:

command 2> log.txt 

i wyjście w czasie rzeczywistym z "polecenia" można zobaczyć w innym oknie konsoli z:

tail -f log.txt 
Powiązane problemy