Как я могу остановить следующий вывод меньше, не влияя на команду, генерирующую вывод?

Я запускаю сервер, и журнал этого сервера регистрируется в терминале, а не в любом файле. Я бы хотел использовать меньше для просмотра этого журнала.

node server.js | less

Когда я просто хочу просмотреть журнал, я использую команду Shift + F, чтобы добраться до конца файла и продолжить просмотр журналов. Когда я хочу остановить его, я использую CTRL + C.

К сожалению, это останавливает и сервер. Я просто хочу прекратить просмотр конца журнала, не останавливая сервер.

Как это сделать?

9
задан 18 April 2017 в 11:57

18 ответов

Я не могу найти способ выхода из режима F в less, поэтому вам придется использовать обходной путь. Например, сохраните вывод в файле tmp, а затем посмотрите, что tmpfile:

node server.js > tmpfile & less tmpfile

& заставляет команду node.js запускаться в фоновом режиме. Это означает, что less tmpfile начнется немедленно и будет отслеживать файл tmp.

После того, как вы в less, вы можете нажать F, чтобы перейти в следующий режим, но теперь Ctrl + C не будет убивать сервер, это остановит только последующие действия. Теперь вы можете прокручивать, как хотите, и можете нажать F, чтобы продолжить.

13
ответ дан 22 May 2018 в 23:31

Я не могу найти способ выхода из режима F в less, поэтому вам придется использовать обходной путь. Например, сохраните вывод в файле tmp, а затем посмотрите, что tmpfile:

node server.js > tmpfile & less tmpfile

& заставляет команду node.js запускаться в фоновом режиме. Это означает, что less tmpfile начнется немедленно и будет отслеживать файл tmp.

После того, как вы в less, вы можете нажать F, чтобы перейти в следующий режим, но теперь Ctrl + C не будет убивать сервер, это остановит только последующие действия. Теперь вы можете прокручивать, как хотите, и можете нажать F, чтобы продолжить.

13
ответ дан 18 July 2018 в 14:46

Я не могу найти способ выхода из режима F в less, поэтому вам придется использовать обходной путь. Например, сохраните вывод в файле tmp, а затем посмотрите, что tmpfile:

node server.js > tmpfile & less tmpfile

& заставляет команду node.js запускаться в фоновом режиме. Это означает, что less tmpfile начнется немедленно и будет отслеживать файл tmp.

После того, как вы в less, вы можете нажать F, чтобы перейти в следующий режим, но теперь Ctrl + C не будет убивать сервер, это остановит только последующие действия. Теперь вы можете прокручивать, как хотите, и можете нажать F, чтобы продолжить.

13
ответ дан 24 July 2018 в 20:28

Я не могу найти способ выхода из режима F в less, поэтому вам придется использовать обходной путь. Например, сохраните вывод в файле tmp, а затем посмотрите, что tmpfile:

node server.js > tmpfile & less tmpfile

& заставляет команду node.js запускаться в фоновом режиме. Это означает, что less tmpfile начнется немедленно и будет отслеживать файл tmp.

После того, как вы в less, вы можете нажать F, чтобы перейти в следующий режим, но теперь Ctrl + C не будет убивать сервер, это остановит только последующие действия. Теперь вы можете прокручивать, как хотите, и можете нажать F, чтобы продолжить.

14
ответ дан 31 July 2018 в 10:58

Я не могу найти способ выхода из режима F в less, поэтому вам придется использовать обходной путь. Например, сохраните вывод в файле tmp, а затем посмотрите, что tmpfile:

node server.js > tmpfile & less tmpfile

& заставляет команду node.js запускаться в фоновом режиме. Это означает, что less tmpfile начнется немедленно и будет отслеживать файл tmp.

После того, как вы в less, вы можете нажать F, чтобы перейти в следующий режим, но теперь Ctrl + C не будет убивать сервер, это остановит только последующие действия. Теперь вы можете прокручивать, как хотите, и можете нажать F, чтобы продолжить.

14
ответ дан 31 July 2018 в 11:57

Я не могу найти способ выхода из режима F в less, поэтому вам придется использовать обходной путь. Например, сохраните вывод в файле tmp, а затем посмотрите, что tmpfile:

node server.js > tmpfile & less tmpfile

& заставляет команду node.js запускаться в фоновом режиме. Это означает, что less tmpfile начнется немедленно и будет отслеживать файл tmp.

После того, как вы в less, вы можете нажать F, чтобы перейти в следующий режим, но теперь Ctrl + C не будет убивать сервер, это остановит только последующие действия. Теперь вы можете прокручивать, как хотите, и можете нажать F, чтобы продолжить.

14
ответ дан 31 July 2018 в 23:31

Кажется, что вы обычно не должны выходить из режима «Вперед навсегда», так как руководство man less называет режим, который вы вводите, при нажатии Shift + F.

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

Во всяком случае, вот трюк

:

Я предполагаю, что вы начали node server.js | less настроек уже и нажать Shift + F для входа в режим «Вперед навсегда». Теперь less не реагирует на любые нажатия клавиш больше.

В этом состоянии, вы можете нажать F + F , чтобы убить процесс сервера и после этого вы можете выйти из less, нажав Q (что, однако, по какой-то причине оставит команду как остановленный процесс в вашем списке заданий - вам нужно запустить fg, чтобы продолжить ее и позволить ей полностью завершить работу после этого), но это а не то, что мы хотим.

Вместо этого вы также можете нажать Q + Z, чтобы остановить («заморозить») команду и вернуться в приглашение оболочки. Теперь быстро введите команду оболочки fg («передний план»), чтобы команда продолжала работать на переднем плане. Обратите внимание, что ваш серверный процесс node также приостановлен в течение этого короткого времени, вам нужно подумать, приемлемо это или нет.

Итак, теперь less снова работает на переднем плане, как и прежде, правильно? Да, не волшебным образом он больше не находится в режиме «Вперед навсегда». Вы можете использовать, например. стрелки снова прокручиваются вверх и вниз.

К сожалению, less, похоже, полностью прекратил обновление своего буфера, вы можете прокручивать вниз до строки, в которой вы затормозили команду раньше, а не дальше. Сервер node все еще работает и производит выход, но нам нужно снова обновить less.

Самый простой способ, который я нашел, - просто открыть экран справки less и снова закрыть его, нажимая клавиши Z и Q последовательно. Теперь все, кажется, работает нормально снова.

Чистейшее решение, однако, вероятно, следовать ответ terdon и перенаправить вывод во временный файл, используя [F13], чтобы следить за файл .

10
ответ дан 22 May 2018 в 23:31
  • 1
    Довольно блестящий грязный хак. – TRiG 18 April 2017 в 04:29
  • 2
    Я думаю, что предпочитаю этот ответ принятому. Обратите внимание, что вы можете запустить %, а не fg; Мне легче или быстрее набрать. Также кажется, что F (shift-f) работает даже без трюка hq. Ницца! Теперь, когда я слежу за журналами, я могу ctrl-z % Enter, делать меньше, а затем вернуться к следующему, нажав F! – JoL 18 April 2017 в 08:46
  • 3
    Кстати, вы не должны называть это грязным. Лично это кажется более чистым, чем другие решения, так как здесь вам не нужно мутировать файловую систему временными файлами (для которых вы должны думать о имени, а затем удалить), особенно если вы захотите использовать less в нескольких терминалах одновременно. – JoL 18 April 2017 в 09:08
  • 4
    Я не смотрел в источнике, но это, вероятно, работает, потому что сигнал TSTP прерывает системный вызов чтения, ожидающий появления новых данных; less получает 0 байт и завершает вывод. Чтобы избежать приостановки работы сервера, откройте новое окно терминала; выполнить ps и идентифицировать идентификатор процесса процесса less; затем введите kill -TSTP <PID>; kill -CONT <PID>. Таким образом, сигналы должны доставляться назад, без задержки, пока вы печатаете. – alexis 18 April 2017 в 14:08
  • 5
    @alexis, если вы собираетесь использовать kill, вы можете просто отправить SIGINT. Тогда вам не нужно будет отправлять CONT, а less просто ждет вас. – muru 18 April 2017 в 16:00

Как ваш вопрос говорит:

Этот сервер регистрируется в терминале, а не в любом файле.

Я предполагаю, что вы не хотите использовать файл журнала (temp), возможно, ваш журнал огромен или по какой-либо причине у вас есть.

Именованный канал, fifo файл.

Что я придумал, это использовать named pipe file, также известный как fifo файл, этот файл будет использоваться только для того, чтобы трафик ваших журналов был меньше, и ничего не будет

Сначала создайте fifo file:

mkfifo mylog

Запустите сервер и перенаправьте журналы в этот файл:

node server.js > mylog &

Используйте меньше, чтобы читать ваши журналы (-f меньше усилий для чтения этого специального файла):

less -f mylog

Теперь вы можете использовать shift + F, чтобы следовать, и CTRL + C, чтобы остановить выполнение, но сервер вы можете снова выполнить вывод с помощью shift + F.

План резервного копирования: если он остановил ваш сервер, просто поместите свою команду (node server.js > mylog &) в файл, например : server.sh, затем вместо запуска node server.js > mylog & выполните: bash server.sh > mylog &, а затем запустите less -f mylog.

2
ответ дан 22 May 2018 в 23:31
  • 1
    Какой смысл использовать fifo вместо обычного файла здесь? Единственное преимущество, которое я вижу, - это сэкономить место на диске, но я сомневаюсь, что это будет иметь отношение к чему-то подобному. После того, как вы закончите, у вас все еще будет файл, который вам нужно будет удалить вручную. – terdon♦ 18 April 2017 в 01:03
  • 2
    Я рекомендую в отношении FIFO здесь, потому что серверный процесс может затормозить, если буфер FIFO запущен, когда никто не запрашивает (больше) данных журнала. Если размер файла журнала становится проблемой, нужно действительно использовать правильный файл журнала плюс logrotate. – David Foerster 18 April 2017 в 02:28
  • 3
    @terdon Как вы сказали, единственным моментом является сохранение диска, я думал, что OP не хочет, чтобы его журналы сохранялись на диске. – Ravexina 18 April 2017 в 11:18
  • 4
    @DavidFoerster +1 Хорошая точка;) – Ravexina 18 April 2017 в 11:19

Кажется, что вы обычно не должны выходить из режима «Вперед навсегда», так как руководство man less называет режим, который вы вводите, при нажатии Shift + F.

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

В любом случае, вот трюк:

Предполагаю, что вы запустили node server.js | less alredy и нажали Shift + F для входа в режим «Вперед навсегда». Теперь less больше не реагирует на любые нажатия клавиш.

В этом состоянии вы можете нажать F + F , чтобы убить серверный процесс и после этого вы можете выйти из less, нажав Q (что, однако, по какой-то причине оставит команду как остановленный процесс в вашем списке заданий - вам нужно запустить fg, чтобы продолжить ее и позволить ей полностью завершить работу после этого), но это а не то, что мы хотим.

Вместо этого вы также можете нажать Q + Z, чтобы остановить («заморозить») команду и вернуться в приглашение оболочки. Теперь быстро введите команду оболочки fg («передний план»), чтобы команда продолжала работать на переднем плане. Обратите внимание, что ваш серверный процесс node также приостановлен в течение этого короткого времени, вам нужно подумать, приемлемо это или нет.

Итак, теперь less снова работает на переднем плане, как и прежде, правильно? Да, не волшебным образом он больше не находится в режиме «Вперед навсегда». Вы можете использовать, например. стрелки снова прокручиваются вверх и вниз.

К сожалению, less, похоже, полностью прекратил обновление своего буфера, вы можете прокручивать вниз до строки, в которой вы затормозили команду раньше, а не дальше. Сервер node все еще работает и производит выход, но нам нужно снова обновить less.

Самый простой способ, который я нашел, - просто открыть экран справки less и снова закрыть его, нажимая клавиши Z и Q последовательно. Теперь все, кажется, снова работает нормально.

Самое чистое решение, вероятно, должно следовать за ответом Тердона и перенаправлять вывод в временный файл, используя less для наблюдения за файлом .

10
ответ дан 18 July 2018 в 14:46

Как ваш вопрос говорит:

Этот сервер регистрируется в терминале, а не в любом файле.

Я предполагаю, что вы не хотите использовать файл журнала (temp), возможно, ваш журнал огромен или по какой-либо причине у вас есть.

Именованный канал, fifo файл.

Что я придумал, это использовать named pipe file, также известный как fifo файл, этот файл будет использоваться только для того, чтобы трафик ваших журналов был меньше, и ничего не будет

Сначала создайте fifo file:

mkfifo mylog

Запустите сервер и перенаправьте журналы в этот файл:

node server.js > mylog &

Используйте меньше, чтобы читать ваши журналы (-f меньше усилий для чтения этого специального файла):

less -f mylog

Теперь вы можете использовать shift + F, чтобы следовать, и CTRL + C, чтобы остановить выполнение, но сервер вы можете снова выполнить вывод с помощью shift + F.

План резервного копирования: если он остановил ваш сервер, просто поместите свою команду (node server.js > mylog &) в файл, например : server.sh, затем вместо запуска node server.js > mylog & выполните: bash server.sh > mylog &, а затем запустите less -f mylog.

2
ответ дан 18 July 2018 в 14:46

Кажется, что вы обычно не должны выходить из режима «Вперед навсегда», так как руководство man less называет режим, который вы вводите, при нажатии Shift + F.

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

В любом случае, вот трюк:

Предполагаю, что вы запустили node server.js | less alredy и нажали Shift + F для входа в режим «Вперед навсегда». Теперь less больше не реагирует на любые нажатия клавиш.

В этом состоянии вы можете нажать F + F , чтобы убить серверный процесс и после этого вы можете выйти из less, нажав Q (что, однако, по какой-то причине оставит команду как остановленный процесс в вашем списке заданий - вам нужно запустить fg, чтобы продолжить ее и позволить ей полностью завершить работу после этого), но это а не то, что мы хотим.

Вместо этого вы также можете нажать Q + Z, чтобы остановить («заморозить») команду и вернуться в приглашение оболочки. Теперь быстро введите команду оболочки fg («передний план»), чтобы команда продолжала работать на переднем плане. Обратите внимание, что ваш серверный процесс node также приостановлен в течение этого короткого времени, вам нужно подумать, приемлемо это или нет.

Итак, теперь less снова работает на переднем плане, как и прежде, правильно? Да, не волшебным образом он больше не находится в режиме «Вперед навсегда». Вы можете использовать, например. стрелки снова прокручиваются вверх и вниз.

К сожалению, less, похоже, полностью прекратил обновление своего буфера, вы можете прокручивать вниз до строки, в которой вы затормозили команду раньше, а не дальше. Сервер node все еще работает и производит выход, но нам нужно снова обновить less.

Самый простой способ, который я нашел, - просто открыть экран справки less и снова закрыть его, нажимая клавиши Z и Q последовательно. Теперь все, кажется, снова работает нормально.

Самое чистое решение, вероятно, должно следовать за ответом Тердона и перенаправлять вывод в временный файл, используя less для наблюдения за файлом .

10
ответ дан 24 July 2018 в 20:28
  • 1
    Довольно блестящий грязный хак. – TRiG 18 April 2017 в 04:29
  • 2
    Я думаю, что предпочитаю этот ответ принятому. Обратите внимание, что вы можете запустить %, а не fg; Мне легче или быстрее набрать. Также кажется, что F (shift-f) работает даже без трюка hq. Ницца! Теперь, когда я слежу за журналами, я могу ctrl-z % Enter, делать меньше, а затем вернуться к следующему, нажав F! – JoL 18 April 2017 в 08:46
  • 3
    Кстати, вы не должны называть это грязным. Лично это кажется более чистым, чем другие решения, так как здесь вам не нужно мутировать файловую систему временными файлами (для которых вы должны думать о имени, а затем удалить), особенно если вы захотите использовать less в нескольких терминалах одновременно. – JoL 18 April 2017 в 09:08
  • 4
    Я не смотрел в источнике, но это, вероятно, работает, потому что сигнал TSTP прерывает системный вызов чтения, ожидающий появления новых данных; less получает 0 байт и завершает вывод. Чтобы избежать приостановки работы сервера, откройте новое окно терминала; выполнить ps и идентифицировать идентификатор процесса процесса less; затем введите kill -TSTP <PID>; kill -CONT <PID>. Таким образом, сигналы должны доставляться назад, без задержки, пока вы печатаете. – alexis 18 April 2017 в 14:08
  • 5
    @alexis, если вы собираетесь использовать kill, вы можете просто отправить SIGINT. Тогда вам не нужно будет отправлять CONT, а less просто ждет вас. – muru 18 April 2017 в 16:00

Как ваш вопрос говорит:

Этот сервер регистрируется в терминале, а не в любом файле.

Я предполагаю, что вы не хотите использовать файл журнала (temp), возможно, ваш журнал огромен или по какой-либо причине у вас есть.

Именованный канал, fifo файл.

Что я придумал, это использовать named pipe file, также известный как fifo файл, этот файл будет использоваться только для того, чтобы трафик ваших журналов был меньше, и ничего не будет

Сначала создайте fifo file:

mkfifo mylog

Запустите сервер и перенаправьте журналы в этот файл:

node server.js > mylog &

Используйте меньше, чтобы читать ваши журналы (-f меньше усилий для чтения этого специального файла):

less -f mylog

Теперь вы можете использовать shift + F, чтобы следовать, и CTRL + C, чтобы остановить выполнение, но сервер вы можете снова выполнить вывод с помощью shift + F.

План резервного копирования: если он остановил ваш сервер, просто поместите свою команду (node server.js > mylog &) в файл, например : server.sh, затем вместо запуска node server.js > mylog & выполните: bash server.sh > mylog &, а затем запустите less -f mylog.

2
ответ дан 24 July 2018 в 20:28
  • 1
    Какой смысл использовать fifo вместо обычного файла здесь? Единственное преимущество, которое я вижу, - это сэкономить место на диске, но я сомневаюсь, что это будет иметь отношение к чему-то подобному. После того, как вы закончите, у вас все еще будет файл, который вам нужно будет удалить вручную. – terdon♦ 18 April 2017 в 01:03
  • 2
    Я рекомендую в отношении FIFO здесь, потому что серверный процесс может затормозить, если буфер FIFO запущен, когда никто не запрашивает (больше) данных журнала. Если размер файла журнала становится проблемой, нужно действительно использовать правильный файл журнала плюс logrotate. – David Foerster 18 April 2017 в 02:28
  • 3
    @terdon Как вы сказали, единственным моментом является сохранение диска, я думал, что OP не хочет, чтобы его журналы сохранялись на диске. – Ravexina 18 April 2017 в 11:18
  • 4
    @DavidFoerster +1 Хорошая точка;) – Ravexina 18 April 2017 в 11:19

Кажется, что вы обычно не должны выходить из режима «Вперед навсегда», так как руководство man less называет режим, который вы вводите, при нажатии Shift + F.

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

В любом случае, вот трюк:

Предполагаю, что вы запустили node server.js | less alredy и нажали Shift + F для входа в режим «Вперед навсегда». Теперь less больше не реагирует на любые нажатия клавиш.

В этом состоянии вы можете нажать F + F , чтобы убить серверный процесс и после этого вы можете выйти из less, нажав Q (что, однако, по какой-то причине оставит команду как остановленный процесс в вашем списке заданий - вам нужно запустить fg, чтобы продолжить ее и позволить ей полностью завершить работу после этого), но это а не то, что мы хотим.

Вместо этого вы также можете нажать Q + Z, чтобы остановить («заморозить») команду и вернуться в приглашение оболочки. Теперь быстро введите команду оболочки fg («передний план»), чтобы команда продолжала работать на переднем плане. Обратите внимание, что ваш серверный процесс node также приостановлен в течение этого короткого времени, вам нужно подумать, приемлемо это или нет.

Итак, теперь less снова работает на переднем плане, как и прежде, правильно? Да, не волшебным образом он больше не находится в режиме «Вперед навсегда». Вы можете использовать, например. стрелки снова прокручиваются вверх и вниз.

К сожалению, less, похоже, полностью прекратил обновление своего буфера, вы можете прокручивать вниз до строки, в которой вы затормозили команду раньше, а не дальше. Сервер node все еще работает и производит выход, но нам нужно снова обновить less.

Самый простой способ, который я нашел, - просто открыть экран справки less и снова закрыть его, нажимая клавиши Z и Q последовательно. Теперь все, кажется, снова работает нормально.

Самое чистое решение, вероятно, должно следовать за ответом Тердона и перенаправлять вывод в временный файл, используя less для наблюдения за файлом .

10
ответ дан 31 July 2018 в 10:58
  • 1
    Довольно блестящий грязный хак. – TRiG 18 April 2017 в 04:29
  • 2
    Я думаю, что предпочитаю этот ответ принятому. Обратите внимание, что вы можете запустить %, а не fg; Мне легче или быстрее набрать. Также кажется, что F (shift-f) работает даже без трюка hq. Ницца! Теперь, когда я слежу за журналами, я могу ctrl-z % Enter, делать меньше, а затем вернуться к следующему, нажав F! – JoL 18 April 2017 в 08:46
  • 3
    Кстати, вы не должны называть это грязным. Лично это кажется более чистым, чем другие решения, так как здесь вам не нужно мутировать файловую систему временными файлами (для которых вы должны думать о имени, а затем удалить), особенно если вы захотите использовать less в нескольких терминалах одновременно. – JoL 18 April 2017 в 09:08
  • 4
    Я не смотрел в источнике, но это, вероятно, работает, потому что сигнал TSTP прерывает системный вызов чтения, ожидающий появления новых данных; less получает 0 байт и завершает вывод. Чтобы избежать приостановки работы сервера, откройте новое окно терминала; выполнить ps и идентифицировать идентификатор процесса процесса less; затем введите kill -TSTP <PID>; kill -CONT <PID>. Таким образом, сигналы должны доставляться назад, без задержки, пока вы печатаете. – alexis 18 April 2017 в 14:08
  • 5
    @alexis, если вы собираетесь использовать kill, вы можете просто отправить SIGINT. Тогда вам не нужно будет отправлять CONT, а less просто ждет вас. – muru 18 April 2017 в 16:00

Как ваш вопрос говорит:

Этот сервер регистрируется в терминале, а не в любом файле.

Я предполагаю, что вы не хотите использовать файл журнала (temp), возможно, ваш журнал огромен или по какой-либо причине у вас есть.

Именованный канал, fifo файл.

Что я придумал, это использовать named pipe file, также известный как fifo файл, этот файл будет использоваться только для того, чтобы трафик ваших журналов был меньше, и ничего не будет

Сначала создайте fifo file:

mkfifo mylog

Запустите сервер и перенаправьте журналы в этот файл:

node server.js > mylog &

Используйте меньше, чтобы читать ваши журналы (-f меньше усилий для чтения этого специального файла):

less -f mylog

Теперь вы можете использовать shift + F, чтобы следовать, и CTRL + C, чтобы остановить выполнение, но сервер вы можете снова выполнить вывод с помощью shift + F.

План резервного копирования: если он остановил ваш сервер, просто поместите свою команду (node server.js > mylog &) в файл, например : server.sh, затем вместо запуска node server.js > mylog & выполните: bash server.sh > mylog &, а затем запустите less -f mylog.

2
ответ дан 31 July 2018 в 10:58
  • 1
    Какой смысл использовать fifo вместо обычного файла здесь? Единственное преимущество, которое я вижу, - это сэкономить место на диске, но я сомневаюсь, что это будет иметь отношение к чему-то подобному. После того, как вы закончите, у вас все еще будет файл, который вам нужно будет удалить вручную. – terdon♦ 18 April 2017 в 01:03
  • 2
    Я рекомендую в отношении FIFO здесь, потому что серверный процесс может затормозить, если буфер FIFO запущен, когда никто не запрашивает (больше) данных журнала. Если размер файла журнала становится проблемой, нужно действительно использовать правильный файл журнала плюс logrotate. – David Foerster 18 April 2017 в 02:28
  • 3
    @terdon Как вы сказали, единственным моментом является сохранение диска, я думал, что OP не хочет, чтобы его журналы сохранялись на диске. – Ravexina 18 April 2017 в 11:18
  • 4
    @DavidFoerster +1 Хорошая точка;) – Ravexina 18 April 2017 в 11:19

Кажется, что вы обычно не должны выходить из режима «Вперед навсегда», так как руководство man less называет режим, который вы вводите, при нажатии Shift + F.

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

В любом случае, вот трюк:

Предполагаю, что вы запустили node server.js | less alredy и нажали Shift + F для входа в режим «Вперед навсегда». Теперь less больше не реагирует на любые нажатия клавиш.

В этом состоянии вы можете нажать F + F , чтобы убить серверный процесс и после этого вы можете выйти из less, нажав Q (что, однако, по какой-то причине оставит команду как остановленный процесс в вашем списке заданий - вам нужно запустить fg, чтобы продолжить ее и позволить ей полностью завершить работу после этого), но это а не то, что мы хотим.

Вместо этого вы также можете нажать Q + Z, чтобы остановить («заморозить») команду и вернуться в приглашение оболочки. Теперь быстро введите команду оболочки fg («передний план»), чтобы команда продолжала работать на переднем плане. Обратите внимание, что ваш серверный процесс node также приостановлен в течение этого короткого времени, вам нужно подумать, приемлемо это или нет.

Итак, теперь less снова работает на переднем плане, как и прежде, правильно? Да, не волшебным образом он больше не находится в режиме «Вперед навсегда». Вы можете использовать, например. стрелки снова прокручиваются вверх и вниз.

К сожалению, less, похоже, полностью прекратил обновление своего буфера, вы можете прокручивать вниз до строки, в которой вы затормозили команду раньше, а не дальше. Сервер node все еще работает и производит выход, но нам нужно снова обновить less.

Самый простой способ, который я нашел, - просто открыть экран справки less и снова закрыть его, нажимая клавиши Z и Q последовательно. Теперь все, кажется, снова работает нормально.

Самое чистое решение, вероятно, должно следовать за ответом Тердона и перенаправлять вывод в временный файл, используя less для наблюдения за файлом .

10
ответ дан 31 July 2018 в 11:57
  • 1
    Довольно блестящий грязный хак. – TRiG 18 April 2017 в 04:29
  • 2
    Я думаю, что предпочитаю этот ответ принятому. Обратите внимание, что вы можете запустить %, а не fg; Мне легче или быстрее набрать. Также кажется, что F (shift-f) работает даже без трюка hq. Ницца! Теперь, когда я слежу за журналами, я могу ctrl-z % Enter, делать меньше, а затем вернуться к следующему, нажав F! – JoL 18 April 2017 в 08:46
  • 3
    Кстати, вы не должны называть это грязным. Лично это кажется более чистым, чем другие решения, так как здесь вам не нужно мутировать файловую систему временными файлами (для которых вы должны думать о имени, а затем удалить), особенно если вы захотите использовать less в нескольких терминалах одновременно. – JoL 18 April 2017 в 09:08
  • 4
    Я не смотрел в источнике, но это, вероятно, работает, потому что сигнал TSTP прерывает системный вызов чтения, ожидающий появления новых данных; less получает 0 байт и завершает вывод. Чтобы избежать приостановки работы сервера, откройте новое окно терминала; выполнить ps и идентифицировать идентификатор процесса процесса less; затем введите kill -TSTP <PID>; kill -CONT <PID>. Таким образом, сигналы должны доставляться назад, без задержки, пока вы печатаете. – alexis 18 April 2017 в 14:08
  • 5
    @alexis, если вы собираетесь использовать kill, вы можете просто отправить SIGINT. Тогда вам не нужно будет отправлять CONT, а less просто ждет вас. – muru 18 April 2017 в 16:00

Как ваш вопрос говорит:

Этот сервер регистрируется в терминале, а не в любом файле.

Я предполагаю, что вы не хотите использовать файл журнала (temp), возможно, ваш журнал огромен или по какой-либо причине у вас есть.

Именованный канал, fifo файл.

Что я придумал, это использовать named pipe file, также известный как fifo файл, этот файл будет использоваться только для того, чтобы трафик ваших журналов был меньше, и ничего не будет

Сначала создайте fifo file:

mkfifo mylog

Запустите сервер и перенаправьте журналы в этот файл:

node server.js > mylog &

Используйте меньше, чтобы читать ваши журналы (-f меньше усилий для чтения этого специального файла):

less -f mylog

Теперь вы можете использовать shift + F, чтобы следовать, и CTRL + C, чтобы остановить выполнение, но сервер вы можете снова выполнить вывод с помощью shift + F.

План резервного копирования: если он остановил ваш сервер, просто поместите свою команду (node server.js > mylog &) в файл, например : server.sh, затем вместо запуска node server.js > mylog & выполните: bash server.sh > mylog &, а затем запустите less -f mylog.

2
ответ дан 31 July 2018 в 11:57
  • 1
    Какой смысл использовать fifo вместо обычного файла здесь? Единственное преимущество, которое я вижу, - это сэкономить место на диске, но я сомневаюсь, что это будет иметь отношение к чему-то подобному. После того, как вы закончите, у вас все еще будет файл, который вам нужно будет удалить вручную. – terdon♦ 18 April 2017 в 01:03
  • 2
    Я рекомендую в отношении FIFO здесь, потому что серверный процесс может затормозить, если буфер FIFO запущен, когда никто не запрашивает (больше) данных журнала. Если размер файла журнала становится проблемой, нужно действительно использовать правильный файл журнала плюс logrotate. – David Foerster 18 April 2017 в 02:28
  • 3
    @terdon Как вы сказали, единственным моментом является сохранение диска, я думал, что OP не хочет, чтобы его журналы сохранялись на диске. – Ravexina 18 April 2017 в 11:18
  • 4
    @DavidFoerster +1 Хорошая точка;) – Ravexina 18 April 2017 в 11:19

Кажется, что вы обычно не должны выходить из режима «Вперед навсегда», так как руководство man less называет режим, который вы вводите, при нажатии Shift + F.

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

В любом случае, вот трюк:

Предполагаю, что вы запустили node server.js | less alredy и нажали Shift + F для входа в режим «Вперед навсегда». Теперь less больше не реагирует на любые нажатия клавиш.

В этом состоянии вы можете нажать F + F , чтобы убить серверный процесс и после этого вы можете выйти из less, нажав Q (что, однако, по какой-то причине оставит команду как остановленный процесс в вашем списке заданий - вам нужно запустить fg, чтобы продолжить ее и позволить ей полностью завершить работу после этого), но это а не то, что мы хотим.

Вместо этого вы также можете нажать Q + Z, чтобы остановить («заморозить») команду и вернуться в приглашение оболочки. Теперь быстро введите команду оболочки fg («передний план»), чтобы команда продолжала работать на переднем плане. Обратите внимание, что ваш серверный процесс node также приостановлен в течение этого короткого времени, вам нужно подумать, приемлемо это или нет.

Итак, теперь less снова работает на переднем плане, как и прежде, правильно? Да, не волшебным образом он больше не находится в режиме «Вперед навсегда». Вы можете использовать, например. стрелки снова прокручиваются вверх и вниз.

К сожалению, less, похоже, полностью прекратил обновление своего буфера, вы можете прокручивать вниз до строки, в которой вы затормозили команду раньше, а не дальше. Сервер node все еще работает и производит выход, но нам нужно снова обновить less.

Самый простой способ, который я нашел, - просто открыть экран справки less и снова закрыть его, нажимая клавиши Z и Q последовательно. Теперь все, кажется, снова работает нормально.

Самое чистое решение, вероятно, должно следовать за ответом Тердона и перенаправлять вывод в временный файл, используя less для наблюдения за файлом .

10
ответ дан 31 July 2018 в 23:31
  • 1
    Довольно блестящий грязный хак. – TRiG 18 April 2017 в 04:29
  • 2
    Я думаю, что предпочитаю этот ответ принятому. Обратите внимание, что вы можете запустить %, а не fg; Мне легче или быстрее набрать. Также кажется, что F (shift-f) работает даже без трюка hq. Ницца! Теперь, когда я слежу за журналами, я могу ctrl-z % Enter, делать меньше, а затем вернуться к следующему, нажав F! – JoL 18 April 2017 в 08:46
  • 3
    Кстати, вы не должны называть это грязным. Лично это кажется более чистым, чем другие решения, так как здесь вам не нужно мутировать файловую систему временными файлами (для которых вы должны думать о имени, а затем удалить), особенно если вы захотите использовать less в нескольких терминалах одновременно. – JoL 18 April 2017 в 09:08
  • 4
    Я не смотрел в источнике, но это, вероятно, работает, потому что сигнал TSTP прерывает системный вызов чтения, ожидающий появления новых данных; less получает 0 байт и завершает вывод. Чтобы избежать приостановки работы сервера, откройте новое окно терминала; выполнить ps и идентифицировать идентификатор процесса процесса less; затем введите kill -TSTP <PID>; kill -CONT <PID>. Таким образом, сигналы должны доставляться назад, без задержки, пока вы печатаете. – alexis 18 April 2017 в 14:08
  • 5
    @alexis, если вы собираетесь использовать kill, вы можете просто отправить SIGINT. Тогда вам не нужно будет отправлять CONT, а less просто ждет вас. – muru 18 April 2017 в 16:00

Как ваш вопрос говорит:

Этот сервер регистрируется в терминале, а не в любом файле.

Я предполагаю, что вы не хотите использовать файл журнала (temp), возможно, ваш журнал огромен или по какой-либо причине у вас есть.

Именованный канал, fifo файл.

Что я придумал, это использовать named pipe file, также известный как fifo файл, этот файл будет использоваться только для того, чтобы трафик ваших журналов был меньше, и ничего не будет

Сначала создайте fifo file:

mkfifo mylog

Запустите сервер и перенаправьте журналы в этот файл:

node server.js > mylog &

Используйте меньше, чтобы читать ваши журналы (-f меньше усилий для чтения этого специального файла):

less -f mylog

Теперь вы можете использовать shift + F, чтобы следовать, и CTRL + C, чтобы остановить выполнение, но сервер вы можете снова выполнить вывод с помощью shift + F.

План резервного копирования: если он остановил ваш сервер, просто поместите свою команду (node server.js > mylog &) в файл, например : server.sh, затем вместо запуска node server.js > mylog & выполните: bash server.sh > mylog &, а затем запустите less -f mylog.

2
ответ дан 31 July 2018 в 23:31
  • 1
    Какой смысл использовать fifo вместо обычного файла здесь? Единственное преимущество, которое я вижу, - это сэкономить место на диске, но я сомневаюсь, что это будет иметь отношение к чему-то подобному. После того, как вы закончите, у вас все еще будет файл, который вам нужно будет удалить вручную. – terdon♦ 18 April 2017 в 01:03
  • 2
    Я рекомендую в отношении FIFO здесь, потому что серверный процесс может затормозить, если буфер FIFO запущен, когда никто не запрашивает (больше) данных журнала. Если размер файла журнала становится проблемой, нужно действительно использовать правильный файл журнала плюс logrotate. – David Foerster 18 April 2017 в 02:28
  • 3
    @terdon Как вы сказали, единственным моментом является сохранение диска, я думал, что OP не хочет, чтобы его журналы сохранялись на диске. – Ravexina 18 April 2017 в 11:18
  • 4
    @DavidFoerster +1 Хорошая точка;) – Ravexina 18 April 2017 в 11:19

Другие вопросы по тегам:

Похожие вопросы: