Это могли быть много вещей.
Обеспечьте вывод:
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
top -bcn1 -w512
Элегантным решением является использование опции -w [number]
. Согласно справочной странице, максимальная ширина составляет 512 символов, поэтому вам понадобится другое решение для всего, что превышает это значение. Предположительно, вы также хотите видеть полную длину команд, поэтому используйте опцию -c
. Нам нужно запустить top
в "пакетном режиме", -b
, иначе он продолжит обрезать команды с "+". Пакетный режим создает беспорядок, потому что он выводит все задания каждую секунду, поэтому мы можем использовать опцию -n1
для вывода только одного экземпляра.
Дополнительную информацию см. на странице man top .
Поле команды является по умолчанию усеченным автоматически для лучшего чтения.
Необходимо работать
top -c
для показа полной команды затем в зависимости от возможностей консоли, Вы смогли бы прокрутить, чтобы исправить и видеть полную команду.
Это - hacky, но можно изменить поведение путем корректировки переменных оболочки $COLUMNS и $LINES прежде, чем запустить вершину:
export COLUMNS=$((COLUMNS*2))
export LINES=$((LINES/2))
top
Это убедит оболочку, что у Вас есть вдвое больше столбцов, чтобы записать в (и вдвое меньше строк, сместить это). При использовании удара можно работать shopt -s checkwinsize
заранее, который скажет этому повторно вычислять те значения, после того как вершина выходит. Иначе можно просто копировать/восстанавливать те значения (или просто изменить размер окна).
Как Daniel Arndt сказал, можно также использовать htop вместо вершины. Это доступно на всем дистрибутиве в наше время, и это обеспечивает лучшие числа (специально для использования памяти)
Также намного легче использовать и более хороший видеть, даже если это ограничено цветами терминала. Можно прокрутить направо для наблюдения полной команды, например, или можно уничтожить процесс с простым F9. Можно также видеть полное дерево с 't' ключом.
htop
хорошая программа действительно, но вопрос был о выводе вершины. Останьтесь по теме.
– drumfire
27.12.2013, 22:19
Вы могли разработать пакетный экран, который включает главный-b-n 1 и PS, например:
while (true)
do
clear
top -b -n 1
ps
sleep 5
done
Это обработает отображение:
Вы можете попробовать это. Это напечатает единственный экземпляр top
с фиксированной шириной и выходами, чтобы вы могли получить вывод.
top -n1 -w80
Вы даже можете направить вывод в файл.
top -n1 -w80 > top_output.txt
Попытка увеличить ширину вывода на экран с помощью приведенной ниже команды.
экспорт СТОЛБЦ=197 верх -u -cbn1 >top.output
Здесь 197 — просто переменная. Попробуйте увеличить в соответствии с вашими требованиями и подробным выводом, который вам нужен.