2013-03-22 6 views
2

У меня есть hex.bat скрипт, который имеет:Сохраните вывод команды времени в лог-файл

#!/bin/bash 
HEX_ROOT=. 
HEX_COLOURS=./data 
HEX_PDB=. 
HEX_MACROS=. 
HEX_CACHE=./data 

time ./hex6i.x64 -kill -nogui -ncpu 1 -ngpu 1 -e dock.mac -l job.log 

Вся продукция идет в job.log, за исключением времени. Я хочу сохранить в jog.log продолжительность времени для выполнения этого скрипта. Кто-нибудь знает?

Заранее спасибо.

ответ

1

я получил с помощью скобка

#!/bin/bash 
HEX_ROOT=. 
HEX_COLOURS=./data 
HEX_PDB=. 
HEX_MACROS=. 
HEX_CACHE=./data 

(time ./hex6i.x64 -kill -nogui -ncpu 1 -ngpu 1 -e dock.mac -l job.log) &> job.log 
+0

Вы должны использовать «& >>», если вы записываете вывод в тот же файл, что и ваша действительная команда, иначе выход времени будет перезаписывать журнал из вашей команды. – rudi

2

time записывает свой вывод в стандартный errror, а не стандартный вывод, чтобы поместить отчет в другой выходной поток. Обычно хочется, чтобы временные программы записывали вывод в файл, например, не помещая время в журнал.

Если вы хотите вывод времени, чтобы перейти в журнал, у вас есть несколько вариантов:

  1. Используйте -o и, возможно, -a варианты time писать вывод time в лог-файл , Реализация time может иметь или не иметь эти параметры.

  2. Стандартная ошибка перенаправления: time .... 2>> job.log или 2>&1. Первый записывает в тот же файл журнала (через append); последний отправляет стандартный вывод ошибки, где бы ни шел стандартный выход. Обратите внимание, что оба будут влиять на выполнение программы на time, а также на time.

+0

2 >> перенаправляет только стандартную ошибку, а не как – Lorkenpeist

+0

Действительно, и намеренно так. Если вы только заботитесь о выходе из времени, нет смысла перенаправлять стандартный вывод. Исходя из исходного вопроса, запущенная программа, по-видимому, имеет собственное управление протоколированием и перенаправление его стандартного вывода, возможно, нежелательна. (В моем ответе также есть «блуждающий» вопрос, который может сбивать с толку, я избавлюсь от этого.) – rra

+0

Если вы получили сообщение '-o: command not found' - не забывайте, что' time' является ключевое слово в bash. Возможно, вам придется использовать 'command time' или'/usr/bin/time' - http://askubuntu.com/a/86196/227180 – culix

Смежные вопросы