Почему выход не перенаправляется в файл?

имеют следующую командную строку, которая выводит vmstat каждую секунду с меткой времени в каждой строке через Perl-скрипт:

vmstat 15 | /home/Beer/addtimestamp.pl > File_1 

содержимое addtimestamp.pl:

  • Почему перенаправление STDERR на / dev / null выполняется таким образом?
  • Восстановление вывода на терминал после выдачи «exec &> filename»
  • является ли Linux перенаправлением «>>» медленнее с большими файлами?
  • Как я могу захватить вывод экрана в именованный файл по команде по базам команд?
  • перенаправить в тот же файл, что и исходный файл, обработанный командой
  • Перенаправление после запуска процесса
  •  !/usr/bin/perl while (<>) { print localtime() . ": $_"; } 

    Так почему же выход не перенаправляется в файл «File_1»?

    Он отлично работает, когда я этого не делаю, он выводит выходные данные каждую секунду без каких-либо проблем.

  • Почему перенаправление STDERR на / dev / null выполняется таким образом?
  • Почему некоторые linux-инструменты записывают в STDERR вместо STDOUT по умолчанию?
  • Как вы помните синтаксис для перенаправления 2> и 1
  • Как перенаправить вывод запущенной программы в / dev / null
  • является ли Linux перенаправлением «>>» медленнее с большими файлами?
  • перенаправить в тот же файл, что и исходный файл, обработанный командой
  • One Solution collect form web for “Почему выход не перенаправляется в файл?”

    Вы попали в буферизацию Гоча. Perl буферизует свой вывод и записывает только на диск, когда буфер заполнен. Буферизация – это хорошая работа с точки зрения производительности, но при низких скоростях передачи данных может сбивать с толку. Если вы подождете достаточно долго, вы заметите, что ваш файл написан (проверьте с помощью tail -F File_1 ). Я считаю, что стандартный буфер имеет размер 4 КБ.

    Добавьте $|=1 как показано ниже, чтобы отключить буферизацию в Perl:

     vmstat 1 | perl -e '$| = 1; while (<>) { print localtime() . ": $_"; }' > /tmp/fileetje 
    Linux и Unix - лучшая ОС в мире.