Does tail Read the Whole File? – Understanding tail Command Behavior

tail

If I want to tail a 25 GB textfile, does the tail command read the whole file?

Since a file might be scattered on a disk I imagine it has to, but I do not understand such internals well.

Best Answer

No, tail doesn't read the whole file, it seeks to the end then read blocks backwards until the expected number of lines have been reached, then it displays the lines in the proper direction until the end of the file, and possibly stays monitoring the file if the -f option is used.

Note however that tail has no choice but to read the whole data if provided a non seekable input, for example when reading from a pipe.

Similarily, when asked to look for lines starting from the beginning of the file, with using the tail -n +linenumber syntax or tail +linenumber non standard option when supported, tail obviously reads the whole file (unless interrupted).

Related Question