X11 отправляет одиночные вызовы отрисовки, поставленные в очередь в синхронном конвейере, то есть каждый вызов ожидает подтверждения предыдущего (по -упрощенному ).
Если у вас есть соединение с высокой задержкой (для каждого отправленного сообщения ), это может быть намного медленнее, потому что все крошечные вызовы отрисовки (зависят от количества различных элементов, кнопок и т. д. необходимо нарисовать )это может занять очень много времени, даже если пропускная способность очень высока.
В этом случае VNC может превосходить -производительность, потому что он может отправлять много данных (фрагментов изображения экрана )за один раз, не дожидаясь ответов между ними.
Если вы нашли способ заставить все работать, и вас беспокоит только то, что вы получаете слишком много предупреждений, вы можете действовать по-своему, отбрасывая сообщения:
<your command> 2> /dev/null
Вы бы перенаправлялифайловый дескриптор (FD)#2, который является stderr, в "черную дыру". Вы также можете отказаться от сообщений, отправленных на стандартный вывод (FD #1 ), хотя в таких случаях, как ваш, это менее распространено. Вы должны проверить, сколько беспорядка вы получаете. Итак, у вас будет (перенаправление только stderr):
google-chrome-stable --proxy-server="socks5://127.0.0.1:1080" 2> /dev/null &
или (перенаправление stderr и stdout; это альтернативные формы одной и той же команды)
google-chrome-stable --proxy-server="socks5://127.0.0.1:1080" 2> /dev/null 1>&2 &
google-chrome-stable --proxy-server="socks5://127.0.0.1:1080" > /dev/null 2>&1 &
Синтаксис 2>&1
означает перенаправление FD #2 туда, куда идет FD #1. FD по умолчанию — #1, поэтому >
эквивалентно 1>
.
В редких случаях вам нужно больше информации, чем указано выше, или ради любопытства:
https://stackoverflow.com/questions/5256599/what-are-file-descriptors-explained-in-simple-terms
Для чего в Bash файловый дескриптор 255, могу ли я его использовать?
Скорее всего, ваша попытка редактирования google-chrome.desktop
не сработала, потому что в этом файле есть более одной Exec
записи, и та, которую вы изменили, на самом деле не используется.
Используя пакет Chrome для Debian из репозитория Google, google-chrome.desktop
показывает три Exec
записи в трех отдельных разделах (групп в номенклатуре freedesktop.org):
$ grep -E '^Exec|^\[|^Name=' /usr/share/applications/google-chrome.desktop
[Desktop Entry]
Name=Google Chrome
Exec=/usr/bin/google-chrome-stable %U
[Desktop Action new-window]
Name=New Window
Exec=/usr/bin/google-chrome-stable
[Desktop Action new-private-window]
Name=New Incognito Window
Exec=/usr/bin/google-chrome-stable --incognito
Вариант с опцией --incognito
— скорее всего тот, который вы редактировали — выполняется только при выборе «Новое окно в режиме инкогнито» в контекстном меню (, например. после щелчка правой кнопкой мыши по значку Chrome в деятельности GNOME ).
Если вы не стремились изменить конфигурацию для каждого пользователя в вашей системе, я предлагаю вам создать собственную, настроенную версиюgoogle-chrome.desktop
:
$ cp /usr/share/applications/google-chrome.desktop ~/.local/share/applications/
Затем отредактируйте запись Exec
, по крайней мере в группе [Desktop Entry]
(вы можете оставить другие записи Exec
выровненными, чтобы гарантировать, что Chrome будет вести себя так же нет независимо от того, какой пункт меню вы использовали для его запуска):
Exec=/usr/bin/google-chrome-stable --proxy-server="socks5://proxyURL:proxyPORT" --host-resolver-rules="MAP * ~NOTFOUND, EXCLUDE proxyURL" %U
Как отметил Доминик Матис в комментарии , вы можете добавить параметр --host-resolver-rules
, чтобы предотвратить обход настроек прокси-сервера с помощью предварительной выборки DNS Chrome, как описано в Документация Chromium .
При необходимости отрегулируйте proxyURL
и proxyPORT
; не забудьте установить proxyURL
для опций --proxy-server
и --host-resolver-rules
.
Если вы хотите, чтобы действие открытия по умолчанию запускало Chrome без установки прокси-сервера, вы можете оставить основную запись [Desktop Entry]
's Exec
нетронутой и вместо этого добавить действие . Это требует от вас
Actions
в группе [Desktop Entry]
; [Desktop Entry]
...
Actions=new-window;new-private-window;new-proxied-window;
...
[Desktop Action new-proxied-window]
Name=New Proxied Window
Exec=/usr/bin/google-chrome-stable --proxy-server="socks5://proxyURL:proxyPORT" --host-resolver-rules="MAP * ~NOTFOUND, EXCLUDE proxyURL" %U
«Новое проксированное окно» появится в качестве опции, если щелкнуть правой кнопкой мыши значок Chrome (, для этого может потребоваться выход/вход в систему ).Обратите внимание, что все одновременно запущенные экземпляры Chrome будут использовать те же настройки прокси-сервера, что и первый, который вы открыли, если только вы не запустите их с параметром--user-data-dir
.
Я писал о различных способах воздействия настроек прокси-сервера на Google Chrome . Вместо того, чтобы устанавливать прокси в Chrome, используйте вместо этого настройки ОС.
Если вы используете GNOME, попробуйтеgsettings
gsettings set org.gnome.system.proxy.http host "myproxy.server.com"
gsettings set org.gnome.system.proxy.http port "3128"
Можно ли загрузить файл из Интернета с помощью wget
или curl
? Создает ли следующая команда файл index.html
с главной страницы Google?
wget https://www.google.com
Если проблема связана с подключением к SOCKS-прокси и влияет на другие приложения, попробуйте использовать proxychains или pacproxy .
$ proxychains4 google-chrome
cat /usr/share/applications/google -chrome.desktop
[Desktop Entry]
Name=Google Chrome
Icon=/usr/share/icons/hicolor/16x16/apps/google-chrome.png
Terminal=false
Type=Application
Categories=Network;WebBrowser;
Exec=/usr/bin/google-chrome-stable --proxy-server="socks5://127.0.0.1:1080" 2> /dev/null 1>&2 &