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

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

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

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

tail -f /var/log/syslog

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

решение1

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

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

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

Вывод из man tail:

-f, --follow[={name|descriptor}]

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

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

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

решение2

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

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

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

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

Связанный контент