2015-07-06 2 views
2

Я выполняющей программу в скорлупе и перенаправляет вывод:синхронизации приложений с перенаправлением вывода

nice -10 appname > /tmp/output.log 2>&1 

мне нужно ко времени выполнения. time команда работает, но выход из него также будет записан в output.log вообще с выходом из основного приложения:

time -p nice -10 appname > /tmp/output.log 2>&1 

Я попытался ограждающим приложение в скобках, но выдает ошибку:

time -p (nice -10 appname > /tmp/output.log 2>&1) 
sh: 1: Syntax error: "(" unexpected 

Как я могу написать вывод time на стандартный вывод, в то же время перенаправляя вывод приложения в файл?

ответ

2

Вы можете использовать манекен printf/echo:

time -p printf "$(nice -10 appname > /tmp/output.log 2>&1)" 


Или здесь документ:

time -p sh <<EOF 
nice -10 appname > /tmp/output.log 2>&1 
EOF 


Или используя -c вариант Shell:

time -p sh -c "nice -10 appname > /tmp/output.log 2>&1" 


Или функция (Bash):

nicefun(){ 
nice -10 appname > /tmp/output.log 2>&1 
} 
time -p nicefun 


Или специальный скрипт:

nice.sh:

#!/bin/sh 
nice -10 appname > /tmp/output.log 2>&1 

Использование:

time -p path/to/nice.sh 
+1

bravo, довольно много вариантов! Всем удачи. – shellter

+0

'printf' работает, но жалуется:' (time -p printf $ (uptime>/tmp/foo) printf: use: printf [-v var] format [arguments]) '- но' echo' отлично работает. Благодаря! – Rytis

+0

@Rytis цитирование должно решить его: 'time -p printf '$ (uptime>/tmp/foo)" 'Это потому, что' printf' принимает хотя бы один аргумент, в котором 'echo' может работать без аргумента без аргументов. N.B: '' $ (uptime>/tmp/foo) "' - пустая строка – Jahid

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