Как делает “-f” работу параметра команды “хвоста”?

Необходимо поместить объявление в файлы инициализации оболочки:

  • При использовании удара, пепла, ksh или некоторой другой оболочки стиля Границы, можно добавить

    ABC="123"; export ABC
    

    в Вашем .profile файл (${HOME}/.profile). Это - ситуация по умолчанию на большинстве установок Unix, и в особенности на Debian.

    Если Ваша оболочка входа в систему является ударом, можно использовать .bash_profile (${HOME}/.bash_profile) или .bash_login вместо этого.

    Примечание: Если любой из этих файлов существует, и Ваша оболочка входа в систему является ударом, .profile не читается, когда Вы входите в систему по ssh или на текстовой консоли, но он мог бы все еще быть считан вместо .bash_profile если Вы входите в систему от GUI. Кроме того, если существует нет .bash_profile, затем используйте .bashrc.

  • При установке zsh как оболочки входа в систему использовать ~/.zprofile вместо ~/.profile.

  • При использовании tcsh добавить

    setenv ABC "123"
    

    в .login файл (${HOME}/.login)

  • если Вы используете другой взгляд оболочки на руководство оболочки, как определить переменные среды и какие файлы выполняются при запуске оболочки.

61
15.08.2011, 05:27
3 ответа

От tail(1) страница справочника:

   With  --follow  (-f),  tail  defaults to following the file descriptor,
   which means that even if a tail’ed file is renamed, tail will  continue
   to  track  its  end.   This  default behavior is not desirable when you
   really want to track the actual name of the file, not the file descrip-
   tor (e.g., log rotation).  Use --follow=name in that case.  That causes
   tail to track the named file  in  a  way  that  accommodates  renaming,
   removal and creation.

Ваш текстовый редактор переименовывает или удаляет исходный файл и сохранил новый файл под тем же именем файла. Использовать -F вместо этого.

65
27.01.2020, 19:32
  • 1
    работал! Так, я могу использовать $ tail -F filename управляйте все время вместо $ tail -f filename правильно? –  its_me 15.08.2011, 05:18
  • 2
    , Если это - Ваше намеченное поведение. Могут быть случаи, где Вы хотите следовать дескриптором вместо имени файла, но быть справедливым я не столкнулся со многими из тех. –  Ignacio Vazquez-Abrams 15.08.2011, 05:18
  • 3
    lsof может показать этот случай - например, lsof -Fpcftni показал бы что inode быть сопровождаемым tail больше не тот же, которого редактор имеет открытый. –  Aaron D. Marasco 15.08.2011, 11:58

У Вашего редактора есть его собственный буфер для файла. При изменении текста в редакторе ничто не записано в сам файл.

При сохранении изменений возможности состоят в том, что редактор просто удаляет старый файл, и создайте новый. tail -f будет все еще подключен к удаленному файлу, таким образом, он не покажет ничего нового.

10
27.01.2020, 19:32
  • 1
    Редактор перезаписывает файл, журналы добавляют текст. Это, возможно, быть проблемой. –  Rufo El Magufo 15.08.2011, 05:16
  • 2
    @Juan: Я не понимаю Ваш комментарий. "перезапись" не имеет никакого значения бетона за исключением того, которое я описал в своем ответе. –  Stéphane Gimenez 15.08.2011, 14:51
  • 3
    Да, я действительно имел в виду то же, что Вы :) –  Rufo El Magufo 15.08.2011, 16:24

tail "обновите" каждую 1 секунду по умолчанию, не в реальном времени.

Попробуйте этим (Вам нужен bash4):

  • Откройте 2 терминала.
  • В первом терминале выполняются touch ~/output.txt и tail -f ~/output.txt.
  • Во втором терминале выполняются for i in {0..100}; do sleep 2; echo $i >> ~/output.txt ; done
  • Посмотрите на вывод хвоста в первом терминале.
4
27.01.2020, 19:32
  • 1
    Сделал Вы имеете в виду echo $i >> ~/output.txt? Кроме того, этот ответ упускает суть вопроса. –  Ignacio Vazquez-Abrams 15.08.2011, 05:09
  • 2
    Да, я исправил сбой, в то время как Вы записали комментарий :). Мой ответ является только тестом для проблемы, хвост-f управляет только шоу новые записи, если они записаны системой только? –  Rufo El Magufo 15.08.2011, 05:12
  • 3
    @Juan: В наше время, на Linux, tailf имеет базирующуюся реализацию inotify. Таким образом, это обновится в в реальном времени. –  Stéphane Gimenez 15.08.2011, 05:13
  • 4
    Да для tailf, но tail использование inotify?. Я не знал tailf. Страница справочника хвоста показывает значение по умолчанию 1 секунды для -s. –  Rufo El Magufo 15.08.2011, 05:25
  • 5
    Да, tail сопровождаемый и теперь использует inotify также, когда доступно. tailf не опрашивает вообще, просто сон, когда нет никакого действия по файлу. tail -f шоу некоторое действие (см. strace вывод). –  Stéphane Gimenez 15.08.2011, 06:46

Теги

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