Сохранение вывода команды времени GNU и сценария - PullRequest
0 голосов
/ 03 января 2019

Я пытаюсь tee выводить скрипт Python, чтобы я мог наблюдать за его ходом и записывать его вывод.Тем не менее, я также ожидаю команду /usr/bin/time, чтобы я мог также измерить объем памяти и время.

Когда я запускаю команду следующим образом, я вижу только вывод скрипта Python, а не команды /usr/bin/time.

(/usr/bin/time -f '%P %M %E %S %U' python Script.py arg1 arg2) | tee Script.output

Когда я запускаю его следующим образом (естественно), я не вижу вывод на терминале, однако я получаю правильный вывод (т.е. вывод скриптазатем накладные расходы памяти / времени).

(/usr/bin/time -f '%P %M %E %S %U' python Script.py arg1 arg2) &> Script.output

Есть ли способ включить сюда tee?Я бы предпочел увидеть его прогресс, так как запуск этого сценария может занять день или два.

1 Ответ

0 голосов
/ 03 января 2019

Команда time записывает свои выходные данные в stderr, чтобы не загрязнять stdout процесса, который синхронизируется.

Обратите внимание, что во втором примере вы перенаправляете оба stdout и stderr с &>.

Если вы также хотите передать stderr на tee, используйте |&:

(/usr/bin/time -f '%P %M %E %S %U' python Script.py arg1 arg2) |& tee Script.output
...