Я много искал, но я не могу найти способ показать сучков в conky. nethogs печатает на терминал, и, похоже, нет способа записать вывод в режиме реального времени. Это одна вещь, которую я хотел получить от conky FOR AGES.
2 ответа
Я так не думаю.
nethogs - это интерактивный процесс с использованием библиотеки ncurses. Ожидается запуск в окне терминала и получение ввода от пользователя.
Conky может запускать программы, используя директивы exec/execi/execp/execpi, но предполагается, что это программы "запускаются один раз", которые выводят текст, а затем завершаются. Конки берет этот текст и отображает его.
Попробуйте написать разработчику nethogs и посмотреть, добавит ли он "пакетный" режим, например пакетный режим top
команды. Если вы можете заставить nethogs работать на секунду, затем отобразить его текст и выйти, вы можете использовать этот текстовый вывод в Conky.
Я пытался сделать то же самое с Conky на Ubuntu 12.10. Но тогда у меня была идея получше:
- создайте новый профиль для gnome-терминала (прозрачный, маленький размер шрифта, что угодно)
- установить пакет
devilspie
(вы также можете попробовать версиюgdevilspie
GTK - создайте новый конфигурационный файл для
devilspie
который поможет избавиться от границы окна и меню
Например /home/<user>/.devilspie/gnome-terminal.ds
содержание:
(if (is (window_role) "borderless")
(begin
(undecorate)
(geometry "-0-0")
(below)
(skip_tasklist)
)
)
(geometry "-0-0")
поместит окно внизу справа
Когда файл конфигурации gnome-terminal.ds
не был записан / изменен, вы должны создать его и остановить / перезапустить Devilspie Deamon, чтобы увидеть любые изменения. Не забудьте добавить демон в свои скрипты запуска (XFCE: Настройка> Сеанс и запуск).
Теперь нам нужен стартовый bash-скрипт, который вы можете добавить в свой автозапуск, как и devilspie. Что-то вроде этого:
#!/bin/bash
if [ $# -lt 1 ]
then
echo "Usage: `basename $0` <iface>"
exit 1
fi
killall -9 nethogs 2>/dev/null
sleep 5
`sudo -H -u <username> gnome-terminal -e "/usr/bin/nethogs -d 4 $1" --profile=<profile-name> --role=borderless`
exit 0
Вы должны передать аргумент скрипту, чтобы указать целевое устройство. Обратите внимание, что в скрипте есть команда sleep
, просто чтобы убедиться, что предыдущие процессы nethogs не запущены.