2012-06-18 8 views
10

ich den folgenden Befehl ausführen (auf Ubuntu)wie Ergebnis von Linux Zeit Befehl zu einem gewissen Datei umleiten

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

und ein Ergebnis in der Befehlszeile

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

ich habe versucht, die folgend:

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

und die folgenden Fehler

Ich möchte das Ergebnis in eine Datei umgeleitet werden. Wie kann ich das machen?

+1

Wahrscheinlich verwenden Sie bash, und es hat 'time' eingebauten Befehl. (siehe 'help time') Ihr Befehl sollte'/usr/bin/time' verwenden, um richtig zu arbeiten (um herauszufinden, wo die binäre Zeit verwendet wird, welche Zeit). In Anbetracht dessen musst du folgendes verwenden: 'time -o out.txt -a ...' – Lourenco

Antwort

3

verwenden Sie können die stdout Ausgang eines beliebigen commmand in eine Datei lenken den > Zeichen. Um anhängen die Ausgabe in eine Datei Verwendung >>

Beachten Sie, dass, sofern nicht ausdrücklich getan, Ausgabe stderr noch an die Konsole gehen. Um zu richten beidestderr und stdout auf den gleichen Ausgangsstrom verwenden

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

oder

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

Wenn Sie mit bashAll about redirection arbeiten wird Ihnen mehr Details und die Kontrolle über die Umleitung.

+3

das (time wget ...) 2> out.txt funktioniert einwandfrei. Danke – Julias

+0

Betrachte '/ usr/bin/time' wie ich oben erwähnt habe. Und so, verwenden Sie etwas wie '/ usr/bin/Zeit-o outfile.txt -a ...' – Lourenco

0

Genau das time von GNU schreibt es Ausgabe Stderr und wenn Sie es in Datei umleiten möchten, können Sie --output = PATH-Parameter von time

Sehen Sie diese http://unixhelp.ed.ac.uk/CGI/man-cgi?time

Und wenn Sie möchten stdout in eine Datei umleiten, können Sie > filename verwenden, um eine Datei zu erstellen und sie zu füllen, oder >> filename, um sie an eine Datei nach dem ursprünglichen Befehl anzuhängen.

Wenn Sie Stderr selbst umleiten möchten, können Sie $ command >&2 your_stderr_output

6

prüfen man time, ich denke, was Sie brauchen, ist

time -o o.txt -a ... 

(Anmerkung Sie müssen sowohl -a und -o).

[EDIT:] Wenn Sie in bash sind, müssen Sie auch darauf achten,

/usr/bin/time 

(überprüfen Manpage Erklärung) schreiben

+0

Immer noch nicht funktioniert: '-o: Befehl nicht gefunden 'auf meinem Rechner. –

+1

Überprüfen Adams Kommentar (http:// Stackoverflow.com/a/11082413/384689), das ist wahrscheinlich die Lösung – claasz

+0

Hhmm, ich kann es nicht sehen, weder ... also editierte ich meine Antwort. Hoffe, das hilft – claasz

-1

Sie können mit > das tun, wenn Sie die umleiten möchten Ausgabe.

Zum Beispiel:

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

2>&1 sagt STDERR auf die gleiche Datei zu umleiten.

Dieser Befehl löscht alle output.txt-Dateien und erstellt eine neue mit Ihrer Ausgabe. Wenn Sie >> verwenden, wird die Ausgabe an das Ende einer vorhandenen output.txt-Datei angehängt. Wenn es nicht existiert, wird es erstellt.

10

-a wird nur von der Zeit verstanden binary (/ usr/bin/time), Wenn Sie nur Zeit verwenden, verwenden Sie die Bash-integrierte Version, die die Option -a nicht verarbeitet und daher versucht zu laufen es als Befehl.

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

die beiden -a und -o hat nicht funktioniert. Die Lösung war 2> foo.txt – Julias

+2

Ich glaube, das ist eigentlich die richtige Antwort. Rufen Sie bei Aufruf von time/usr/bin/time auf, anstatt die integrierte Shell zu verwenden, die die erweiterten Optionen nicht unterstützt. – mattismyname

+0

Definitiv, das ist die richtige Antwort. – Lourenco

0

Try /usr/bin/time zu verwenden, da viele Muscheln ihre eigene Implementierung von time haben, die die gleichen Flags wie /usr/bin/time

so Ihren Befehl ändern

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

Ich habe diesen Kommentar in der Frage hinzugefügt, um es zu zeigen. – Lourenco

1
\time 2> time.out.text command 

\time -o time.out.text command 

unterstützen kann oder nicht Diese Antwort basiert auf früheren Kommentaren. Es ist getestet, es funktioniert. Der Vorteil des \ über /usr/bin/ ist, dass Sie das Installationsverzeichnis von time nicht kennen müssen.

Diese Antworten erfassen auch nur die Zeit, nicht andere Ausgaben.

0

Wie wäre es mit Ihrem 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

Versuchen:

tail -f log.txt 
Verwandte Themen