вывод и stderr и stdout на консоли и хранит их в файле в то же время

Заставить Centos работать на Виртуальном Поле, в /etc/sysconfig/network-scripts/ifcfg-eth0:

DEVICE=eth0  
BOOTPROTO=dhcp  
ONBOOT=yes

Вы, возможно, должны были бы перезагрузить.

5
04.01.2015, 06:02
3 ответа
  1. Как просто Вывод STDOUT и поймать STDERR в файл? (я пытался ./test|Tee 2> Журнал, но не работает)
$ ./test 2>log
OUT!
$ cat log
ERR!
  1. Как просто вывести и ловить STDERR в файл?
$ ./test 2>&1 >/dev/tty | tee log
OUT!
ERR!
$ cat log
ERR!

Если это выражение должно было быть частью более крупного трубопровода, то вы можете избежать использование / dev / tty . Один из способов сделать это, чтобы поменять STDOUT и STDERR. Чтобы сделать этот своп, нам нужно создать третью ручку файлов, как так:

$ exec 3>&1; ./test 2>&1 1>&3 | tee log; exec 3>&-
OUT!
ERR!
$ cat log
ERR!

Первое утверждение, EXEC 3> & 1 , назначает обработку файлов 3 к текущему stdout (все, что может быть). Затем ./ Тест 2> & 1 1> & 3 | Tee Log Трубы STDERR в команду Tee при отправке STDOUT в дескриптор файла 3. Наконец, для хорошей уборки уборки, Exec 3> & - закрывает ручку файла 3.

Дополнительные примечания и комментарии

Что касается:

Я могу выводить STDERR и завершить stdout в файл журнала:

 $. / Test |  Tee 1> Журнал
Ошибка!
log
ИЗ!
 

Это может быть упрощено:

$ ./test >log
ERR!
$ cat log
OUT!

также относительно:

Я могу вывести ничего, кроме как ловить все Stdout и Stderro в файл журнала By:

 $ ./test 2> & 1 |  Tee 1> Журнал
log
ИЗ!
Ошибка!
 

Это может быть упрощено:

$ ./test >log 2>&1
$ cat log
OUT!
ERR!

или, с Bash , но не POSIX Shell, возможна еще прощая форма:

$ ./test &>log
$ cat log
OUT!
ERR!
7
27.01.2020, 20:33

Перенаправления раковин должны быть достаточно довольно. Во-первых, перенаправить STDERR в файл ...

$ ./test 2> myfile.txt

Здесь STDOUT остается экраном, поскольку он не был перенаправлен. MyFile.txt будет содержать ошибку.

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

$ ./test 2> >(tee myfile.txt >&2)

Это отправит Поток ошибки к процессу TEE , который перепечатает их. Stdout остается нетронутым. Для получения дополнительной информации посмотрите на этот вопрос переполнения стека .

Точно так же, если вы хотите поймать stdout в файл, и покинуть STDERR Нетронутые ...

$ ./test > >(tee myfile.txt)
5
27.01.2020, 20:33

Ладно, парни и девушки...

Просто чтобы обогатить эту тему, я подумал, что было бы лучше опубликовать ответ с общим упрощенным случаем.

Вывод stdout и stderr на терминал и захват stdout и stderr в файл...

Проверить вывод stdout и stderr на терминал и в файл...

rm -f test.log
ping 127.0.0.1 -c 6 2>&1 | tee test.log
cat test.log

Подтвердите вывод stderr на терминал и в файл...

rm -f test.log
ping e.r.r.or -c 6 2>&1 | tee test.log
cat test.log

Спасибо! =Д

[ Ссылка.:https://stackoverflow.com/a/12928057/3223785]

0
17.03.2021, 13:57

Теги

Похожие вопросы