2012-06-18 21 views
10

estoy ejecutando el siguiente comando (en Ubuntu)cómo redirigir resultado del comando time Linux a algún archivo

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

y obtener un resultado en la línea de comandos

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

tengo intentado el siguiente:

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

y obtener el siguiente error

-a: command not found 

Quiero obtener el resultado para ser redirigido a algún archivo. ¿Cómo puedo hacer eso?

+1

Probablemente estés usando bash, y tiene el comando 'time' built-in. (ver 'help time') Tu comando debería usar'/usr/bin/time' para funcionar correctamente (para descubrir dónde se usa el binario de tiempo 'which time'). Teniendo esto en cuenta, debe usar: 'time -o out.txt -a ...' – Lourenco

Respuesta

3

Usted puede dirigir la salida de cualquier stdout commmand en un archivo utilizando el carácter >. Para anexar la salida a un archivo de uso >>

Tenga en cuenta que a menos que explícitamente hecho, la salida a stderr todavía irá a la consola. Para dirigir tantostderr y stdout a la misma secuencia de salida utilice

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

o

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

Si está trabajando con bashAll about redirection le dará más detalles y el control sobre la redirección.

+3

el (time wget ...) 2> out.txt funciona perfectamente. Gracias – Julias

+0

Considera '/ usr/bin/time' como he comentado anteriormente. Entonces, use algo como '/ usr/bin/time -o outfile.txt -a ...' – Lourenco

0

Exactamente el time de GNU escribe su salida a stderr y si desea redirigir al archivo, puede utilizar --output = parámetro de ruta de time

Ver este http://unixhelp.ed.ac.uk/CGI/man-cgi?time

Y si desea redireccionar stdout a algún archivo, puede usar > filename para crear un archivo y rellenarlo o >> filename para agregarlo a algún archivo después del comando inicial.

Si desea redirigir stderr por sí mismo, puede utilizar $ command >&2 your_stderr_output

6

Comprobación man time, supongo que lo que necesita es

time -o o.txt -a ... 

(Tenga en cuenta que necesita tanto -ay -o).

[EDIT:] Si usted está en bash, también se debe tener cuidado para escribir

/usr/bin/time 

(consultar página de manual para una explicación)

+0

Todavía no funciona: '-o: comando no encontrado' en mi máquina. –

+1

Revise el comentario de Adam (http://stackoverflow.com/a/11082413/384689), esta es probablemente la solución – claasz

+0

Hhmm, no puedo verlo tampoco ... así que edité mi respuesta. Espero que esto ayude – claasz

-1

Usted puede hacer eso con > si desea redirigir la salida.

Por ejemplo:

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

2>&1 dice redirigir STDERR en el mismo archivo.

Este comando borrará cualquier archivo output.txt y creará uno nuevo con su salida. Si usa >>, anexará la salida al final de cualquier archivo output.txt existente. Si no existe, lo creará.

10

-a solo se entiende por el tiempo binario (/ usr/bin/time), cuando solo utiliza el tiempo está utilizando la versión bash incorporada que no procesa la opción -a, y por lo tanto intenta ejecutar como un comando.

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

tanto -a como -o no funcionó. La solución fue 2> foo.txt – Julias

+2

Creo que esta es en realidad la respuesta correcta. Cuando llame a la hora, llame a/usr/bin/time en lugar de usar el shell incorporado que no admite las opciones avanzadas. – mattismyname

+0

Definitivamente, esta es la respuesta correcta. – Lourenco

0

intenta utilizar /usr/bin/time ya que muchas conchas tienen su propia implementación de time que puede o no sean compatibles con los mismos parámetros que /usr/bin/time

así cambiar su comando para

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

He añadido este comentario en la pregunta para ponerlo de manifiesto. – Lourenco

1
\time 2> time.out.text command 

\time -o time.out.text command 

Esta respuesta se basa en comentarios anteriores. Está probado que funciona. La ventaja de \ sobre /usr/bin/ es que no necesita conocer el directorio de instalación de time.

Estas respuestas también solo capturan la hora, no otra salida.

0

¿Qué hay de tu 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

Probar:

command 2> log.txt 

y la salida en tiempo real del "comando" se puede ver en otra ventana de la consola con:

tail -f log.txt 
Cuestiones relacionadas