Скрипт для преобразования битового списка соединений в формат шины

Вы пропустили переменную окружения $DISPLAY. Он устанавливается первым процессом, который инициализирует ваш сеанс GUI, а затем наследуется всеми его дочерними процессами. Для локального сеанса X11 значение обычно равно :0.

Переменная $DISPLAYсообщает приложениям X11, как обращаться к X-серверу; значение :0говорит им использовать локальный сокет Unix по адресу /tmp/.X11-unix/X0. После первоначального подключения можно активировать высокопроизводительные методы доступа, такие как инфраструктура прямого рендеринга (DRI ).

Задания Cron не получают переменную $DISPLAYавтоматически, потому что они должны выполняться независимо от сеанса GUI. :Что, если владелец задания в данный момент не вошел в систему? Если бы задание cron могло просто получить доступ к любому сеансу X11, это позволило бы пользователям шпионить друг за другом, а это совершенно неприемлемо.

В зависимости от используемого вами дистрибутива вам также может потребоваться установить переменную среды $XAUTHORITY. Без него все инструменты и приложения X11 будут предполагать, что файл cookie сеанса X11 расположен по адресу $HOME/.Xauthority, но, например, Debian 10 создает личные каталоги $TMPдля каждого пользователя, поэтому $TMPбудет установлено на /tmp/user/<user's UID number>. ] и $XAUTHORITYбудут установлены на $TMP/xauth-<user's UID number>-_0для DISPLAY :0.

Без доступа к правильному файлу cookie сеанса X11 сервер X11 не будет отвечать на запросы, даже для root. Запуск программ с графическим интерфейсом после входа в систему в качестве обычного пользователя и последующего использования suили sudo, чтобы стать пользователем root, возможен тогда и только тогда, когда$DISPLAY$XAUTHORITY, при необходимости ), передаются пользователю su. ] / sudoсеанс -, который часто устанавливается по умолчанию.

0
22.05.2020, 02:50
2 ответа
$ echo 'signal[3]_and_[31]' | awk -F'[][]' '{ print "signal[" $2 ":0]_and_[" $4 ":0]"; }'
signal[3:0]_and_[31:0]
0
18.03.2021, 23:33

Предполагая, что одна строка на бит переданного сигнала nane, мы запускаем следующий код Perl и преобразуем его в соответствующую нотацию шины.

perl -MList::Util=max,min -lne '
  BEGIN {
   $sig_re = qr/signal\[(\d+)]_and_\[(\d+)]/;
   $bus_fmt = q/signal[%d:%d]_and_[%d:%d]/;
  }

  /^$sig_re$/ and push(@A,$1), push(@B,$2);

  print(sprintf($bus_fmt,
           max(@A), min(@A),
           max(@B), min(@B)))
                 if eof;
' signals.bit_blasted > signals.bussed
0
18.03.2021, 23:33

Теги

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