Как перенаправить результат команды 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
Ответ 9
Это сработало для меня:
( time command ) |& tee output.txt
https://unix.stackexchange.com/questions/115980/how-can-i-redirect-time-output-and-command-output-to-the-same-pipe
Ответ 10
Вы можете сделать это с помощью >
, если вы хотите перенаправить вывод.
Например:
time wget 'http://localhost:8080/upLoading.jsp' --timeout=0 > output.txt 2>&1
2>&1
говорит, чтобы перенаправить STDERR в тот же файл.
Эта команда удалит все файлы output.txt и создаст новый с вашим выходом. Если вы используете >>
, он добавит результат в конец любого существующего файла output.txt. Если он не существует, он создаст его.