Процессоры MultiMarkdown: Шрифты?

Чтобы взять под контроль запущенный сеанс X, вам необходимо настроить сервер VNC для подключения к тому же дисплею, что и X. Обычно X подключается к первому дисплею - : 0 .

Вам также понадобится X Authority для этого X-сеанса. Это можно найти, обратившись к файлу X Authority, который использует удаленный Диспетчер отображения. Это зависит от вашего Диспетчера отображения и может быть найдено с помощью ps aux и grep . Например: psaux | grep Xorg дает вам нечто подобное:

/usr/libexec/Xorg -background none :0 -seat seat0 -auth /var/run/lightdm/root/:0 -listen tcp vt1 -noswitch

Обратите внимание на параметр -auth , поскольку он вам понадобится с VNC. Затем вам нужно запустить что-то вроде следующего как root на удаленном компьютере после установки x11vnc :

/usr/bin/x11vnc -norc -forever -shared -bg -autoport 5900 -auth /var/run/lightdm/root/:0

Самый простой способ - создать службу, которая запускает это для вас при загрузке . В дистрибутивах, использующих systemd , создайте файл /etc/systemd/system/x11vnc.service , подобный следующему:

[Unit]
Description=VNC Server for X11
Requires=display-manager.service
After=display-manager.service

[Service]
Type=forking
ExecStart=/usr/bin/x11vnc -norc -forever -shared -bg \
        -autoport 5900 \
        -rfbauth /etc/x11vnc.pass \
        -o /var/log/x11vnc.log \
        -auth /var/run/lightdm/root/:0

[Install]
WantedBy=graphical.target

Обратите внимание на параметр -rfbauth . Вам необходимо заранее создать файл паролей, используя:

$ sudo x11vnc -storepasswd /etc/x11vnc.pass

В качестве альтернативы, если вы не чувствуете, что вам нужны защищенные паролем сеансы VNC, просто удалите строку -rfbauth .

Включить при загрузке с помощью:

$ sudo systemctl enable x11vnc.service

Запустить вручную с помощью:

$ sudo systemctl start x11vnc.service

Теперь вы можете подключиться к удаленному компьютеру с помощью своего клиента VNC и взять на себя сеанс.

3
30.10.2018, 00:37
2 ответа
command1 |
xargs sh -c 'for p do [ -f "$p" ] && printf "%s\n" "$p"; done' sh |
xargs command 2

Дополнительный бит в середине — это еще один xargsвызов короткого скрипта, который в основном просто перебирает заданные ему аргументы командной строки и печатает пути, соответствующие существующим обычным файлам (или символические ссылки на обычные файлы ). Эти существующие пути затем передаются в последнюю часть конвейера.

Это предполагает, что все пути свободны от встроенных символов новой строки, пробелов и табуляции.

3
27.01.2020, 21:25

Предполагая, что command1выводит список в формате, ожидаемом xargs, вы можете определить:

existing_plain_readable_files_only() {
  perl -le "for (@ARGV) {
    if (-f && -r) {s/'/'\\\\''/g; print qq('\$_')}
  }" -- "$@"
}

И использовать как:

command1 | xargs existing_plain_readable_files_only | xargs command2

Здесь мы используем perlоператор -fдля обычных файлов только (не каталогов, устройств, каналов... )и -rдля тех, которые доступны для чтения пользователю (, предполагая, что command2захочет их прочитать ), и мы используем одинарные -кавычки, за исключением самих одинарных кавычек, которые экранируются с помощью \.

Этот вид цитирования поддерживается как xargs, так и оболочкой, что означает, что вы также можете использовать эту функцию для обработки массивов оболочки, содержащих произвольные списки файлов:

eval "array2=($(existing_plain_readable_files_only "${array1[@]}"))"

(здесь предполагают оболочки ksh93, zsh, bash, mkshили yash).

0
27.01.2020, 21:25

Теги

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