LINUX.ORG.RU
ФорумTalks

Бинаризация всея Линукса

 ,


0

0

Копипаста с опеннета:

Раздумывая над способами модернизации командной строки UNIX, Александр Ларсон (Alexander Larsson), активный разработчик GNOME и мантейнер таких проектов, как Nautilus, Gnome-vfs и Dia, предложил в своем блоге новый способ объединения команд с помощью пайпов, основная идея которого заключается в передаче через канал не простых потоков неструктурированных данных, а объектов, представленных в бинарной форме. По словам Александра, его идея может сделать командный интерфейс более гибким, но не таким переусложненным как Microsoft PowerShell.

В качестве основы для представления объектов Александр предложил использовать тип данных 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 с числом), выполнять правильное обрезание списка (без учета заголовка), работать одновременно со всеми полями объекта даже в том случае, если они не будут выведены на экран. Кроме того, все данные между командами передаются в бинарной форме, благодаря чему их обработка существенно упрощается.

Ответ на: комментарий от red_eyed_peguin

ps -C chrome -o pid= -o rss= | awk '{if ($2 > 9000) {print $1}}' | xargs kill

подозреваю, if тут не нужен

ps -C chrome -o pid= -o rss= | awk '($2 > 9000) {print $1}' | xargs kill

zolden ★★★★★
()

кто-нибудь отберите у гномеров кокс. их фантазии меня пугают.

Ford_Focus ★★★★★
()
Ответ на: комментарий от vasily_pupkin

если линакс стоит на десктопе дома у гика социопата, может быть и не зависит

Как раз дружественность десктопа гика сильно зависит от systemd. Есть у меня виртуально знакомый гик, который прикрутил к systemd-loginctl запуск скринсейвера - он плакал от счастья.

Правда, он точно не социопат.

tailgunner ★★★★★
()

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

maloi ★★★★★
()
Ответ на: комментарий от tailgunner

новые технологии - новые баги
но хорошо, например, что сдох тот же HAL

Deleted
()
Ответ на: комментарий от Kindly_Cat

Ой вей, а как будет зарабатывать техподдержка РедХат? А чем будет жить сам РедХат? Цель их ясна - привязать линукс-сообщество к себе одним.

Отсюда растут ноги обсираний Каноникл на тему «они ничего не делают для Линукс!!!».

LongLiveUbuntu ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.