Просмотр вывода команды в прокручиваемом пейджере

Обычно вы используете tasksetдля ограничения процесса после его запуска. Вы можете использовать pidof java, чтобы определить, что такое PID для вашего Java-приложения, а затем передать его в taskset:

.

$ taskset -p $(pidof java) --cpu-list 0-2,5

ПРИМЕЧАНИЕ.:Если бы у вас было 6 процессоров, 0,1,2,5 назначали бы привязку к этим процессорам для PID вашей JVM.

Имейте в виду, что сходство не ограничивает другие процессы в использовании этих ЦП, tasksetесли это скорее инструмент ограничения конкретного процесса или процессов определенным набором ЦП, а не ограничение исключительности.

выдержка из справочной страницы набора задач

taskset is used to set or retrieve the CPU affinity of a running process given its PID or to launch a new COMMAND with a given CPU affinity. CPU affinity is a scheduler property that "bonds" a process to a given set of CPUs on the system. The Linux scheduler will honor the given CPU affinity and the process will not run on any other CPUs. Note that the Linux scheduler also supports natural CPU affinity: the scheduler attempts to keep processes on the same CPU as long as practical for performance reasons. Therefore, forcing a specific CPU affinity is useful only in certain applications.

Альтернативы

Этот самостоятельный ответ U&L Q&A под названием:Как использовать контрольные группы, чтобы ограничить все процессы, кроме белого списка, одним процессором? раскрывает тему того, как это сделать с помощью cgroups.

Ссылки

2
22.08.2020, 20:06
2 ответа

Проблема заключалась в том, что я не перенаправил вывод stderr на lessпо какой-то причине:

command 2>&1 | less 

дает желаемое поведение.

с помощью less -Rвы можете сохранить цветной вывод, перенаправленный из command, но некоторые команды автоматически опускают окрашивание, когда их вывод перенаправляется, и вам нужно искать параметр, подобный --color=always, чтобы всегда получать цветной вывод.

В моем случае теперь я перенаправляю свой вывод на bat, который является клоном cat, с большим количеством функций, с параметрами --paging=always, --pager="less -RFX"и --number, и я использую cargo build. ] опция--color=always:

cargo build --color=always 2>&1 | bat --paging=always --pager="less -RFX" --number

Что дает красивый, прокручиваемый, цветной вывод с пронумерованными строками:

   1    Compiling openlimits v0.1.0 (/home/####/git/openlimits)
   2 error[E0433]: failed to resolve: use of undeclared type or module `tokio`
   3   --> src/binance/client/websocket.rs:15:5
   4    |
   5 15 | use tokio::net::TcpStream;
   6    |     ^^^^^ use of undeclared type or module `tokio`
   7
   8 error[E0433]: failed to resolve: use of undeclared type or module `tokio_tungstenite`
   9   --> src/binance/client/websocket.rs:16:5
  10    |
  11 16 | use tokio_tungstenite::{
  12    |     ^^^^^^^^^^^^^^^^^ use of undeclared type or module `tokio_tungstenite`
  13
  14 error[E0433]: failed to resolve: use of undeclared type or module `tokio`
  15   --> src/coinbase/client/websocket.rs:10:5
  16    |
  17 10 | use tokio::net::TcpStream;
  18    |     ^^^^^ use of undeclared type or module `tokio`
  19
....

Затем я поместил параметры в свои файлы конфигурации для batи cargo, чтобы сделать их неявными, и теперь я получаю такое поведение при вводе

cargo build 2>&1 | bat

В bash вы можете использовать &>вместо 2>&1. Они эквивалентны. В zsh это, похоже, не работает, хотя так задокументировано .

1
18.03.2021, 23:10

Не выход в конце ввода

По умолчанию less не завершается автоматически, только если вы используете команду quit(q).

Если вы вызываете lessс опцией -E, она завершается, когда достигает конца файла. С опцией -eон закрывается, когда вы пытаетесь перейти за конец файла (, например, многократно прокручивая ). С опцией -Fless немедленно завершает работу, если файл полностью отображается на одном экране. Ни один из этих параметров не включен по умолчанию, но есть несколько способов сделать их параметрами по умолчанию в вашей системе :

.
  • lessможет быть псевдонимом оболочки с параметрами. Проверьте с помощью alias less.
  • Less считывает параметры из переменной окружения LESSпри запуске. Проверьте с помощью echo $LESS.
  • В Less есть файл конфигурации. Его местоположение по умолчанию — .lessв вашем домашнем каталоге; это можно изменить, установив переменную окружения LESSKEY. Формат файла двоичный, но если параметры установлены таким образом, в файле появятся и строка LESS, и параметры.
  • Маловероятно, но если установлена ​​переменная окружения LESS_IS_MORE, less ведет себя как старая утилита more, в том числе по умолчанию завершает работу в конце файла.

Просмотр вывода команды до ее завершения

Когда вы передаете ввод команды в less (mycommand | less), less продолжает чтение до тех пор, пока команда не завершится. Вы можете прерывать меньше с помощью Ctrl+C, но тогда вы не сможете прочитать дальнейшие выходные данные команды, и команда может умереть из-за сломанного канала. Это связано с тем, что less закрывает конвейер, когда перестает читать.

Обходной путь для этого — сделать вывод команды в файл и вызывать less для этого файла. Когда меньше считывается из файла, вы можете ввести F, а затем Ctrl+C, чтобы он прочитал больше данных из файла, а затем продолжил просмотр.

mycommand >log 2>&1 &
less log

Программы могут вести себя немного по-разному в зависимости от того, является ли их вывод терминалом, каналом или файлом. Если вы обнаружите, что вывод задерживается, когда вывод является файлом или каналом, а не терминалом, это связано с буферизацией вывода . См. Отключить буферизацию в канале

.

Утилитаscriptзапускает программу в виртуальном терминале и записывает все выходные данные в файл. Что касается программы, то она записывает вывод на терминал. Например, программа может использовать управляющие последовательности цветов. Передайте параметр -Rв less, чтобы он передал на терминал управляющие последовательности, а не отображал управляющие символы в экранированной форме.

script -c 'mycommand --option || echo "mycommand failed with status $?"' mycommand.log </dev/null >/dev/null &
less -R mycommand.log
6
18.03.2021, 23:10

Теги

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