Один из разработчиков GNOME предложил новую реализацию неименованных каналов
В качестве основы для представления объектов Александр предложил использовать тип данных GVariants из библиотеки Glib, используемой также в GTK+ и GNOME. Он реализовал несколько утилит, повторяющих функциональность стандартных UNIX-команд ps, sort, head и других, которые принимают на вход и выдают на выходе объекты типа GVariants, причем в случае, если вывод осуществляется в терминал или принимающая команда не поддерживает на входе объекты, данные будут переданы в текстовой форме. Например, вывод его версии ps в терминал будет выглядеть так:
$ dps <{'pid': <uint32 1>, 'ppid': <uint32 0>, 'euid': <uint32 0>, 'user': <'root'>,... <{'pid': <uint32 2>, 'ppid': <uint32 0>, 'euid': <uint32 0>, 'user': <'root'>,... ...
Применив к этому выводу другие утилиты можно легко отсортировать объекты по необходимым полям и выполнить их фильтрацию на основе тех или иных полей:
$ dps | dfilter euid \< 1000 | dsort rss <{'pid': <uint32 1>, 'ppid': <uint32 0>, 'euid': <uint32 0>, 'user': <'root'>, <{'pid': <uint32 769>, 'ppid': <uint32 745>, 'euid': <uint32 0>, 'user': <'root'>, ...
В конце концов, можно использовать специальные утилиты для вывода данных удобочитаемом виде:
dps | dfilter euid \< 1000 | dsort rss | dhead 4 | dtable pid user rss vsize cmdline pid user rss vsize cmdline 1 'root' 24408 61488 '/usr/lib/systemd/systemd' 769 'root' 16028 108000 '/usr/bin/Xorg :0 -background none -logverbose 7 -seat seat0 -nolisten tcp vt1' 608 'root' 15076 255312 '/usr/bin/python /usr/sbin/firewalld --nofork' 747 'root' 8276 452604 '/usr/sbin/libvirtd'
Как говорит Александр, такой подход существенно расширяет возможности обработки данных, позволяя, например, применять к выводу типо-зависимые операции (сравнение euid с числом), выполнять правильное обрезание списка (без учета заголовка), работать одновременно со всеми полями объекта даже в том случае, если они не будут выведены на экран. Кроме того, все данные между командами передаются в бинарной форме, благодаря чему их обработка существенно упрощается.
Источник: http://www.opennet.ru/opennews/art.shtml?num=34591
|
0 | Tweet | Нравится |
|