Могу ли я написать вывод команды разницы времени в файл?

Могу ли я записать вывод команды разницы во времени в файл?

Например, я попробовал:

$ time foo.sh > bar.txt 

Но он выводит только результат foo.sh на bar.txt.

4 Solutions collect form web for “Могу ли я написать вывод команды разницы времени в файл?”

Во многих оболочках, включая ksh , zsh и bash , time является ключевым словом и используется для временных конвейеров.

 time foo | bar 

Будет время как команды foo и bar ( zsh покажет вам разбивку). Он сообщает об этом на stderr оболочки.

 time foo.sh > bar.txt 

Скажу вам время, необходимое для открытия bar.txt и запускать foo.sh

Если вы хотите перенаправить вывод времени, вам нужно перенаправить stderr в контексте, где time запускается, например:

 { time foo.sh; } 2> bar.txt 

Эта:

 2> bar.txt time foo.sh 

работает также, но с ksh93 и bash , потому что он не находится в первой позиции, time не распознается как ключевое слово, поэтому вместо этого используется команда time (вы, вероятно, заметите другой формат вывода и не тратите время на конвейеры) ,

Обратите внимание, что оба будут перенаправлять как выход времени, так и ошибки foo.sh на bar.txt . Если вам нужен только выходной сигнал, вам понадобится:

 { time foo.sh 2>&3 3>&-; } 3>&2 2> bar.txt 

Обратите внимание, что POSIX не указывает, ведет ли time к ключевому слову или встроенному (независимо от того, идет ли он по конвейерам или одиночным командам). Поэтому, чтобы быть переносимым (в случае, если вы хотите использовать его в сценарии sh который вы хотите использовать в разных Unix-подобных системах), вы должны, вероятно, написать его:

 command time -p foo.sh 2> bar.txt 

Обратите внимание, что вы не можете выполнять функции времени или встроенные или конвейеры или перенаправлять ошибки foo.sh отдельно, если только вы не запускаете отдельную оболочку, как в:

 command time -p sh -c 'f() { blah; }; f | cat' 

Но это означает, что время также будет включать время запуска этого дополнительного sh .

Не все версии времени поддерживают аргументы -o и –output.

Вы хотите запустить команду следующим образом:

 (time script.sh) 1> /dev/null 2> /tmp/logFile 

Это поместит вывод script.sh в / dev / null и результаты в / tmp / logFile.

Если вы хотите, чтобы STDERR и STDOUT перешли в файл журнала, вы можете запустить его следующим образом:

 (time script.sh) &> /tmp/logFile 

Чтобы получить вывод ls и вывод time в файле:

 (time ls) &> log 

Чтобы получить только результат time в файле:

 (time ls) 2> log 

/usr/bin/time в stderr , поэтому вам нужно будет перенаправить это.

 /usr/bin/time foo.sh 2>bar.txt 

Если вы используете встроенное time bash, вам нужно написать его по-другому:

 (time ls) 2>bar.txt 

Кроме того, time GNU поддерживает аргумент --output :

 /usr/bin/time --output bar.txt foo.sh 
  • конвертировать в эпоху и обратно
  • Временно изменить время
  • Не удалось перенаправить stdout / stderr в файл журнала
  • Время выполнения сценария Ruby отличается локально, чем с SSH
  • Получить строки между двумя временными метками из файла
  • Какая аппаратная поддержка необходима, чтобы linux выполнял `gettimeofday` /` clock_gettime` в пользовательском пространстве с помощью `hped`?
  • Как установить tz и дату без перезапуска в Debian Squeeze?
  • Заставить время оставаться на месте
  • Вычисление процессорного времени процесса в RHEL 5.3
  • Есть ли способ настроить форматирование даты / времени на экране входа в GNOME 3 и на рабочем столе?
  • Удаление файла после X дней не работает
  • Можно ли читать PVclock из пользовательского пространства?
  • Linux и Unix - лучшая ОС в мире.