Дивитися (обертовий) екран входу


0

У мене працює поштовий сервер, до якого я підключаюсь за допомогою 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


0

Ваша здогадка насправді правильна. У цей час syslog перериває запис у журнал, робить gz його та перезапускає журнал його.

Ви можете спробувати

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

Таким чином хвіст повинен повторно відкрити файл, коли буде зроблено обертання журналу

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.