Как я заставляю “главную” команду переносить свой вывод?

Это могли быть много вещей.

Обеспечьте вывод:

echo $TERM
echo $LS_COLORS
typeset -p LS_COLORS
alias ls
tput setaf 1 | od -c
echo "$(tput setaf 1)red$(tput sgr0)"

Ожидаемые результаты:

xterm (optional, see below)
no=00:... (or similar, should not be empty)
declare -x LS_COLORS="no=00:..." (ditto)
alias ls='ls --color=auto' (or similar)
0000000 033   [   3   1   m
0000005
red (in red)

Мое предположение: TERM установлен на что-то необычное, и dircolors не знает об этом, поэтому ls не знает что цвета использовать.

Если это верно, выполняя вышеупомянутые команды в Вашей byobu/screen сессии, Вы видели бы:

screen (or screen-something)
(nothing)
(nothing)
0000000 033   [   3   1   m
0000005
red (in red)

Подтвердите что дело обстоит так путем выполнения:

dircolors -p | grep "^TERM $TERM$"

Я ожидал бы, что это ничего не распечатает.

Самая простая фиксация, в зависимости от Вашей конфигурации, был бы:

dircolors -p > ~/.dircolors
echo "TERM $TERM" >> ~/.dircolors
20
27.01.2012, 06:40
7 ответов

top -bcn1 -w512

Элегантным решением является использование опции -w [number]. Согласно справочной странице, максимальная ширина составляет 512 символов, поэтому вам понадобится другое решение для всего, что превышает это значение. Предположительно, вы также хотите видеть полную длину команд, поэтому используйте опцию -c. Нам нужно запустить topв "пакетном режиме", -b, иначе он продолжит обрезать команды с "+". Пакетный режим создает беспорядок, потому что он выводит все задания каждую секунду, поэтому мы можем использовать опцию -n1для вывода только одного экземпляра.

Дополнительную информацию см. на странице man top .

18
27.01.2020, 19:44

Поле команды является по умолчанию усеченным автоматически для лучшего чтения.

Необходимо работать

top -c

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

21
27.01.2020, 19:44
  • 1
    Это просто отображает полную командную строку по умолчанию - или на самом деле независимо от того, что может быть сделано видимым в одной строке. Я не вижу способности к прокрутке. Вы говорите, что я просто должен установить свое окно на большую ширину? –   26.01.2012, 16:38
  • 2
    Да, это для начала. Какое окно Вы используете? действительно ли это - Шпаклевка, терминал команды Dos, терминал Gnome? любой из них позволит Вам прокручивать горизонтально. –  ring bearer 26.01.2012, 16:43

Это - hacky, но можно изменить поведение путем корректировки переменных оболочки $COLUMNS и $LINES прежде, чем запустить вершину:

export COLUMNS=$((COLUMNS*2))
export LINES=$((LINES/2))
top

Это убедит оболочку, что у Вас есть вдвое больше столбцов, чтобы записать в (и вдвое меньше строк, сместить это). При использовании удара можно работать shopt -s checkwinsize заранее, который скажет этому повторно вычислять те значения, после того как вершина выходит. Иначе можно просто копировать/восстанавливать те значения (или просто изменить размер окна).

3
27.01.2020, 19:44

Как Daniel Arndt сказал, можно также использовать htop вместо вершины. Это доступно на всем дистрибутиве в наше время, и это обеспечивает лучшие числа (специально для использования памяти)

Также намного легче использовать и более хороший видеть, даже если это ограничено цветами терминала. Можно прокрутить направо для наблюдения полной команды, например, или можно уничтожить процесс с простым F9. Можно также видеть полное дерево с 't' ключом.

8
27.01.2020, 19:44
  • 1
    Это не отвечает на вопрос, но является предложением для другой программы. htop хорошая программа действительно, но вопрос был о выводе вершины. Останьтесь по теме. –  drumfire 27.12.2013, 22:19
  • 2
    @drumfire совершенно допустимы и по теме. Это должно быть очевидно тем, что OP принял этот ответ почти три года назад. –  terdon♦ 28.12.2013, 03:06

Вы могли разработать пакетный экран, который включает главный-b-n 1 и PS, например:

while (true)
do
  clear
  top -b -n 1
  ps
  sleep 5
done

Это обработает отображение:

  • PID
  • ЦП
  • Неусеченная командная строка
0
27.01.2020, 19:44

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

top -n1 -w80

Вы даже можете направить вывод в файл.

top -n1 -w80 > top_output.txt
2
27.01.2020, 19:44

Попытка увеличить ширину вывода на экран с помощью приведенной ниже команды.

экспорт СТОЛБЦ=197 верх -u -cbn1 >top.output

Здесь 197 — просто переменная. Попробуйте увеличить в соответствии с вашими требованиями и подробным выводом, который вам нужен.

0
27.01.2020, 19:44

Теги

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