вывод вершины становится усеченным к 80 столбцам, когда выполнено кроном

Просто замените основную тему темной (в специальной копии Adwaita в Вашем домашнем dir):

mkdir -p ~/.themes
cp -r /usr/share/themes/Adwaita ~/.themes/Darkwaita
cd ~/.themes/Darkwaita/gtk-3.0
cp gtk-dark.css gtk.css

Затем используйте инструмент как инструмент тонкой настройки гнома для установки Darkwaita как gtk темы, и изменения должны сразу вступить в силу.

7
13.10.2013, 23:48
2 ответа

top всегда пробелы дисплеев до последнего экранного столбца. Вы просто не понимаете это, когда это печатает к терминалу, потому что Вы не можете визуально отличить строку с конечными пробелами от строки без конечного пробела. Вы заметите пробелы если Вы вставка копии с мышью или в screen.

Если Вы хотите избавиться от пробелов, просто отфильтруйте их далеко.

COLUMNS=9999 top -b -c -n 1 | sed 's/  *$//' >>/var/log/toplog/top.log

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

6
27.01.2020, 20:18
  • 1
    , который я использую это, чтобы хранить информацией о процессах, которые работали в любое время в течение прошлых пяти дней. Это снимки с 1 минутой, таким образом, что-то могло бы потеряться, но я думаю, что это достаточно хорошо для меня. Я хочу иметь некоторые доступные данные, когда я обнаруживаю, что был пик в использовании ресурсов (я использую munin для этого). Я не нашел лучший способ отслеживать прошлые процессы (попробовал psacct). –  clime 14.10.2013, 20:30
  • 2
    Просто видел это при запущении скрипта проверки через nrpe. Вывод ps было усеченным к 80 символам, и grep для имени процесса перестал работать. Установка СТОЛБЦОВ решила вопрос. –  phil-lavin 19.06.2015, 12:07

У меня была похожая проблема. Сценарий Bash отлично работал из командной строки, но при запуске из cron верхний вывод был обрезан до 80 символов.

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

Что действительно работало, так это использование опции top -w.
Вот внутренности моего сценария без уведомлений и убойной техники безопасности.

#!/usr/bin/sh

PROC_FOUND=""
MAX_CPU=0

RETVAL="$(top -bc -n 1 -w 512 | tail -n+8 | awk -v cpulimit=$MAX_CPU '{if ($9>=cpulimit) print $1 " " $9 " " $12; }')"

IFS='
'
set -f
for line in ${RETVAL}; do
{
        echo "found [$line]" > /dev/tty

        IFS=', '
        read -r -a array <<< "$line"
        #echo "array is ... ${array[*]}"
        PID_VAL=${array[0]}
        CPU_VAL=${array[1]}
        PROC_FOUND=${array[2]}

        echo "Monitored a High CPU for process [${PROC_FOUND} ${PID_VAL}] on "${HOSTNAME}" where ${CPU_VAL}% >= ${MAX_CPU}%."
}
done
set +f
unset IFS
exit
0
27.01.2020, 20:18

Теги

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