Обычно такая программа, как cat
завершается, когда системный вызов read()
возвращает 0 байтов данных, обрабатывая их как EOF (конец файла). Обычно tail
программа делает то же самое; без опции -f
находит конец файла и читает назад, чтобы найти последние 10 (по умолчанию) строк. («Чтение назад» означает «поиск назад и чтение некоторых данных».)
Когда используется опция -f
(follow), команда tail
распознает возвращаемый байт 0, но не завершается. Вместо этого он ненадолго засыпает, а затем пытается прочитать еще какие-то данные. Если файл представляет собой файл журнала, который растет по мере того, как процесс (например, веб-сервер или сервер базы данных) записывает больше информации, то tail -f
будет показывать дополнительную информацию более или менее по мере ее появления.
Другое использование для этого на длительных компиляциях. Вы устанавливаете компиляцию в фоновом режиме и записываете ее вывод в файл журнала. На переднем плане вы запускаете tail -f
в файле журнала, и когда вы обнаружите проблему, вы можете прервать tail
не прерывая компиляцию.