Назад | Перейти на главную страницу

tail -f: `tail: logfile.log: файл усечен`

Я смотрел файл журнала (logfile.log) с tail -f, и через несколько минут в файл было записано следующее сообщение:

tail: logfile.log: file truncated

Я никогда не видел этого раньше, и мне интересно, почему это произошло и как я могу это предотвратить. Файл записывается пользователем root (через cronjob) и был создан другим пользователем.

Также кажется, что cronjob каждый раз перезаписывает файл журнала. Думаю, это, вероятно, причина сообщения, которое я увидел.

редактировать Вот как выглядит cronjob:

* * * * * /usr/local/bin/ruby /home/web/script.rb > >/home/web/logfile.log 2>&1

Я не знаю, это просто опечатка ... но не должно быть ..../script.rb >> /home/web/logfile.log для правильного добавления? В вашем коде есть пробел между двойной угловой скобкой

Я пробовал это только сейчас на bash в Mac, это вызвало ошибку, возможно, некоторые оболочки могут просто игнорировать стрелку второго угла в этом случае

FWIW, у меня такое случалось, даже когда я правильно использовал >> (или какой-либо другой метод добавления, например tee -a). В этих случаях проблема заключалась в том, что другой процесс записывал в тот же файл, без добавление.

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

на man 1 tail:

 -f      The -f option causes tail to not stop when end of file is reached, but rather to wait for additional data to be appended to the input.  The -f option is ignored if the standard input is a pipe, but not if it is a FIFO.

 -F      The -F option implies the -f option, but tail will also check to see if the file being followed has been renamed or rotated.  The file is closed and reopened when tail detects that the filename being read from has a new inode number.  The -F option is
         ignored if reading from standard input rather than a file.

другими словами, используя tail -F logfile.log вместо tail -f logfile.log НЕ ДОЛЖЕН попасть file truncated сообщение...