2016-12-04 2 views
2

Я попытался получить команду вывода в команде, но я не смог ее получить. Если я запускаю вручную, он возвращает нормальный результат на экране.Получить вывод на экране из команды linux

[[email protected] ~]# dnsdist -e "topQueries()" 1 Rest 0 100.0%

Я попытался с dnsdist -e 'topQueries() 2>&1 1> /tmp/abc. Но /tmp/abc все еще был пуст. Я не думаю, что команда screen может решить эту проблему. Есть ли у кого-нибудь рекомендации?

информация Дополнение

1 Остальной 0 100,0%

является результатом от topQueries(). '-e' означает выполнить команду в dnsdist. Он работает так, как будто мы обращаемся к mysql, тогда мы вызываем оператор sql.

+0

и результат распечатывается на экране? –

+0

Да. В качестве примера, после запуска команды вручную, я вижу этот результат на экране. –

+0

Важное значение имеет порядок перенаправления, как насчет 'examplecommand>/tmp/abc 2> & 1' – rkosegi

ответ

1

Как rkosegi commented, заказ важен. При запуске:

examplecommand 2>&1 1> /tmp/abc 

Он принимает выход Stderr и отправляет его в , где стандартный вывод в настоящее время происходит, а затем отправляет стандартный вывод в файл.

Вы можете, вместо этого:

examplecommand 1> /tmp/abc 2>&1 

который отправляет стандартный вывод в файл, а затем отправляет STDERR в , где стандартный вывод в настоящее время происходит, а именно файл.

+0

Это не работает :(Оба/tmp/abc и экран все еще пустые значения. –

+0

Seem Я не смог получить этот результат как из stdout, так и из stderr –

+1

Вы просто пропустили '>' там. – giusti

0

Чтобы иметь stderr и stdout как на экране, так и в файле/tmp/abc, вы можете использовать .

$cat a.sh 
echo "stderr" >&2 
echo "stdout" 

./a.sh 2>&1 | tee /tmp/abc 
stderr 
stdout 

$ cat /tmp/abc 
stderr 
stdout 
Смежные вопросы