Как перенаправить результат команды linux time в некоторый файл

Я запускаю следующую команду (на Ubuntu)

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

и получить результат в командной строке

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

Я пробовал следующее:

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

и получите следующую ошибку

-a: command not found

Я хочу, чтобы результат был перенаправлен в какой-либо файл. Как я могу это сделать?

Ответ 1

Вы можете направить вывод stdout любого комманда в файл с помощью символа >. Чтобы добавить вывод в файл, используйте >>

Обратите внимание, что если явно не указано, вывод в stderr по-прежнему будет отображаться на консоли. Чтобы направить как stderr, так и stdout в один и тот же выходной поток, используйте

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

или

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

Если вы работаете с bash Все о перенаправлении, вы получите более подробную информацию и информацию о перенаправлении.

Ответ 2

-a понимается только двоичным кодом времени (/usr/bin/time). Когда вы используете только время, вы используете встроенную версию bash, которая не обрабатывает параметр -a, и, следовательно, пытается запустите его как команду.

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

Ответ 3

Проверка man time, я думаю, что вам нужно

time -o o.txt -a ...

(Обратите внимание, что вам нужны как -a и -o).

[EDIT:] Если вы находитесь в bash, вы также должны позаботиться о записи

/usr/bin/time

(проверьте справочную страницу для объяснения)

Ответ 4

\time 2> time.out.text command

\time -o time.out.text command

Этот ответ основан на более ранних комментариях. Он протестирован, он работает. Преимущество \ over /usr/bin/ заключается в том, что вам не нужно знать каталог установки time.

Эти ответы также содержат только время, а не другой вывод.

Ответ 5

Точно time из GNU записывает вывод в stderr, и если вы хотите перенаправить его в файл, вы можете использовать параметр --output = PATH time

Смотрите http://unixhelp.ed.ac.uk/CGI/man-cgi?time

И если вы хотите перенаправить stdout на некоторый файл, вы можете использовать > filename для создания файла и заполнить его или >> filename для добавления в некоторый файл после начальной команды.

Если вы хотите перенаправить stderr самостоятельно, вы можете использовать $ command >&2 your_stderr_output

Ответ 6

Попробуйте использовать /usr/bin/time, поскольку многие оболочки имеют собственную реализацию time, которая может содержать или не поддерживать те же флаги, что и /usr/bin/time

то измените свою команду на

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

Ответ 7

Как насчет вашего 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

Ответ 8

Try:

command 2> log.txt

а вывод в режиме реального времени из "команды" можно увидеть в другом окне консоли с помощью:

tail -f log.txt

Ответ 10

Вы можете сделать это с помощью >, если вы хотите перенаправить вывод.

Например:

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

2>&1 говорит, чтобы перенаправить STDERR в тот же файл.

Эта команда удалит все файлы output.txt и создаст новый с вашим выходом. Если вы используете >>, он добавит результат в конец любого существующего файла output.txt. Если он не существует, он создаст его.