Я работаю на сервере, и журнал этого сервера регистрируется в терминале, а не в каком-либо файле. Я хотел бы использовать меньше, чтобы просмотреть этот журнал.
node server.js | less
Когда я просто хочу посмотреть журнал, я нажимаю Shift kbd> + F kbd>, чтобы добраться до конца файла и продолжать просматривать журналы. Когда я хочу остановить это, я использую CTRL kbd> + C kbd>.
К сожалению, это также останавливает сервер. Я просто хочу перестать смотреть конец журнала, не останавливая сервер.
Как это сделать?
Я не могу найти способ выхода из режима F
в less
, поэтому вам придется использовать обходной путь. Например, сохраните вывод в файл tmp, а затем просмотрите этот файл tmp:
node server.js > tmpfile & less tmpfile
&
заставляет команду node.js
работать в фоновом режиме. Это означает, что less tmpfile
запустится немедленно и будет отслеживать tmpfile.
Однажды в less
, вы можете нажать F kbd>, чтобы войти в режим слежения, но теперь Ctrl kbd> + C kbd> не будет убивать сервер, он только остановит следование. Теперь вы можете прокручивать список по своему усмотрению и нажимать F kbd>, чтобы продолжить.
Кажется, что вы обычно не должны выходить из режима «Вперед навсегда», как руководство man less
называет режим, в который вы входите, нажимая Shift kbd> + F kbd >.
Однако я обнаружил небольшой подвох, когда вы все равно можете вернуться к нормальной жизни. Это ненадолго заморозит команду, поэтому я не уверен, что она подойдет для вашего сервера, который, вероятно, должен работать бесперебойно.
В любом случае, вот фокус:
Я предполагаю, что вы запустили node server.js | less
alredy и нажали Shift kbd> + F kbd > для входа в режим «Вперед навсегда». Теперь less
больше не реагирует ни на какие нажатия клавиш.
В этом состоянии вы можете нажать Ctrl kbd> + C kbd>, чтобы завершить процесс сервера и затем выйти из less
, нажав Q kbd > (что, однако, по какой-то причине оставит команду как остановленный процесс в вашем списке заданий - вы должны запустить fg
, чтобы продолжить и полностью завершить ее впоследствии), но это не , что мы хотим .
Вместо этого вы также можете нажать Ctrl kbd> + Z kbd>, чтобы остановить («заморозить») команду и вернуться к приглашению оболочки. Теперь быстро наберите команду оболочки fg
(« f ore g round»), чтобы команда продолжала работать на переднем плане. Обратите внимание, что ваш node
серверный процесс также приостанавливается в течение этого короткого времени, вам необходимо решить, является ли это приемлемым или нет.
Итак, теперь less
снова работает на переднем плане, как и раньше, верно? Да, , но волшебным образом больше не находится в режиме «Вперед навсегда». Вы можете использовать, например, клавиши со стрелками снова для прокрутки вверх и вниз.
К сожалению, less
, похоже, прекратил полное обновление своего буфера, вы можете прокрутить вниз только до строки, в которой вы ранее заморозили команду, а не дальше. Сервер node
все еще работает и выдает выходные данные, но нам просто нужно заставить less
обновиться снова.
Самый простой способ, который я нашел, это просто открыть less
экран справки и снова закрыть его, нажав клавиши H kbd> и Q kbd> последовательно. Теперь все, кажется, снова работает нормально.
Однако самое чистое решение, вероятно, состоит в том, чтобы следовать ответу Тердона и перенаправить вывод во временный файл, используя less
для мониторинга файла.
Как говорит ваш вопрос:
Этот сервер регистрируется в терминале, а не в каком-либо файле.
blockquote>Я предполагаю, что вы не хотите использовать (временный) файл журнала, возможно, ваш журнал огромен или по какой-либо причине у вас есть.
Именованный канал, файл
fifo
.Я придумал использовать
named pipe file
, также известный как файлfifo
, этот файл будет использоваться только для передачи ваших журналов к меньшему количеству, и на нем ничего не будет сохранено.Сначала создайте
fifo file
:mkfifo mylog
Запустите свой сервер и перенаправьте журналы в этот файл:
node server.js > mylog &
Используйте меньше, чтобы читать ваши журналы (-f заставляет меньше чтобы прочитать этот специальный файл):
less -f mylog
Теперь вы можете использовать shift kbd> + F kbd>, чтобы следовать, и CTRL kbd> + C kbd>, чтобы остановить подписку, но сервер все еще работает, вы можете снова проследить за выводом с помощью shift kbd> + F kbd>.
План резервного копирования : если он остановил ваш сервер, просто поместите вашу команду (
node server.js > mylog &
) в файл, например:server.sh
, затем вместо запускаnode server.js > mylog &
выполните:bash server.sh > mylog &
], а затем запуститеless -f mylog
.