Смотреть (вращающийся) экран входа

308
tr01

Я использую почтовый сервер, к которому я подключаюсь по SSH. My .bash_profileнастроен для привязки сеанса SSH к определенному screenсеансу.

Теперь я хотел бы, чтобы журнал (например, системный журнал) печатался в одном окне этого сеанса экрана. Я пробовал бегать

tail -f /var/log/syslog 

но выходной останавливается каждый день в 6:25. Я думаю, что это время, когда журнал вращается. Так есть ли способ распечатать журнал на экране?

0

2 ответа на вопрос

1
kostix

Тебе нужно tail --follow=name /var/log/syslog

Причина в том, что по умолчанию - предположительно из соображений производительности - tail открывается указанный файл и затем просматривает дескриптор файла, который он получает из этого open(2)вызова, на предмет изменений. Это работает нормально до тех пор, пока файл изменяется - добавляется или даже переписывается (сначала обрезая его), но перестает работать, если файл заменяется - то есть удаляется и создается с тем же именем, что logrotateобычно и происходит.

Режим «имя» --followбрендов tailиспользовать более дорогостоящий stat(2)системный вызов, который на самом деле «решает» имя файла каждый раз, когда с помощью файловой системы слоя, и если tailзамечает изменения в файле, его так называемый «индексный дескриптор», tailповторно открывает файл.

Выход из man tail:

-f, --follow[=]

выводить добавленные данные по мере роста файла; аргумент отсутствия опции означает «дескриптор»

Вы также можете посмотреть на параметр -Fкомандной строки, который определяется как

-F такой же как --follow=name --retry

0
favarofe

Ваше предположение на самом деле правильно. В это время запись прерывания системного журнала записывается в журнал, составляется из него и перезапускается журнал.

Вы можете попробовать с

tail -f --retry /var/log/syslog 

Таким образом, tail должен повторить попытку открытия файла, когда ротация журнала будет выполнена