Как я могу вывести stdout и stderr и записать их в файл?

Я в основном хочу написать свою статистику ping в файл. До сих пор я сделал это с помощью ping adress | awk '{ print strftime("[%d.%m.%Y %H:%M:%S]"), $0}' > textfile ping adress | awk '{ print strftime("[%d.%m.%Y %H:%M:%S]"), $0}' > textfile но было бы ping adress | awk '{ print strftime("[%d.%m.%Y %H:%M:%S]"), $0}' > textfile смотреть на результат без необходимости прервите процесс раньше. Я также знаю, что эта команда не записывает stderr в мой текстовый файл. Я придумал эту часть, когда писал этот вопрос.

Команда или сценарий должны в основном вести себя следующим образом:

$ command > textfile [15.08.2017 00:17:07] PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. [15.08.2017 00:17:07] 64 bytes from 8.8.8.8: icmp_seq=1 ttl=44 time=11.5 ms [15.08.2017 00:17:08] 64 bytes from 8.8.8.8: icmp_seq=2 ttl=44 time=11.5 ms ^C $ cat textfile [15.08.2017 00:17:07] PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. [15.08.2017 00:17:07] 64 bytes from 8.8.8.8: icmp_seq=1 ttl=44 time=11.5 ms [15.08.2017 00:17:08] 64 bytes from 8.8.8.8: icmp_seq=2 ttl=44 time=11.5 ms

One Solution collect form web for “Как я могу вывести stdout и stderr и записать их в файл?”

Измените команду:

 ping address 2>&1 | awk '{ print strftime("[%d.%m.%Y %H:%M:%S]"), $0}' | tee textfile 

2>&1 перенаправляет stderr на stdout, который переходит на awk . tee позволяет вам иметь как выход на экране, так и в указанном вами файле.

Вы можете быть раздражены awk буферизацией своего вывода, который будет отображаться блоками. Затем используйте либо:

 awk '{ print strftime("[%d.%m.%Y %H:%M:%S]"), $0; fflush()}' 

или:

 stdbuf -oL awk '{ print strftime("[%d.%m.%Y %H:%M:%S]"), $0}' 
  • Вращение файлов журналов во время работы
  • Почему выдача одной и той же команды создает больше выходных данных в tty, чем в pts / gnome-terminal?
  • Может ли написать stdout место противодавления в процессе?
  • Как сделать grep в реальном журнале (stdout)?
  • Я хочу поймать STDERR и STDOUT сценария с фоновым запуском
  • Каковы стандартные stdin и stdout дочернего процесса?
  • Unix без / dev / stdin, / dev / stdout и / dev / stderr?
  • `docker logs foo | less` не доступен для поиска или прокрутки, но `docker logs foo 2> & 1 | меньше` является
  • Когда использовать стандартный поток ошибок в приложении командной строки?
  • Как сортировать файлы отдельно без слияния?
  • Могу ли я читать и писать в тот же файл в Linux, не перезаписывая его?
  • Linux и Unix - лучшая ОС в мире.