Скопируйте текстовый файл с URL-адресами и выполните пинг для каждого [dубликата]

Как упоминалось здесь, Chrome изменился на структуру Aura и больше не использует структуру GTK. Это вызывает некоторые особенности.

Как упоминал Kalamalka Kid, который фактически выполнил практически всю работу, его можно обойти, запустив Chrome с помощью команды:

google-chrome --high-dpi-support=1 --force-device-scale-factor=<scale_factor>

например:

google-chrome --high-dpi-support=1 --force-device-scale-factor=1.5

Как запустить Google Chrome по умолчанию с измененным коэффициентом масштабирования

Скопировать глобальную пусковую установку Google-chrome с /usr/local/share/applications на ~/.local/share/applications:
cp /usr/share/applications/google-chrome.desktop ~/.local/share/applications
Открыть локальную копию с помощью gedit:
gedit ~/.local/share/applications/google-chrome.desktop
Ищите строку: Exec=/usr/bin/google-chrome-stable %U, измените ее на:
google-chrome --high-dpi-support=1 --force-device-scale-factor=1.5

Теперь, после выхода из системы /, Chrome запускается по умолчанию в вашем измененном масштабировании. [!d12 ]

6
задан 22 November 2017 в 21:32

4 ответа

Этот ответ, как и ответ Сергия, пришел из Loop над текстовым файлом с URL-адресами и выполнил ping для каждого из них.

Предполагая, что файл urls находится в текущем каталоге и содержит только ваши URL-адреса, по одному на строку :

#!/bin/bash while IFS='' read -r l || [ -n "$l" ]; do avg=$(ping -q -w 10 "$l" | sed '$!d;s_.*=[^/]*/\([^/]*\)/.*_\1_') echo "Average respond time for $l: $avg ms" >> avg_time done < "urls"

Пример run

Здесь выше сценарий был назван avg.

$ cat urls askubuntu.com unix.stackexchange.com stackoverflow.com $ ./avg $ cat avg_time Average respond time for askubuntu.com: 37.742 ms Average respond time for unix.stackexchange.com: 35.966 ms Average respond time for stackoverflow.com: 38.982 ms

Пояснения

#!/bin/bash эта так называемая shebang определяет, с какой оболочки должен запускаться ваш скрипт, вот это bash while IFS='' read -r l || [ -n "$l" ]; do stuff; done < "urls" read файл по имени urls, назначая содержимое текущей обрабатываемой строки переменной l и выполняя stuff с ней ping -q -w 10 "$l" (= ping -qw10 "$l") вызывают ping с содержимым переменной l как аргумент и параметры -q uiet (меньше результата, который нам не нужен) и -w 10 (таймаут в секундах), так что текущий обработанный URL-адрес пингуется точно 10 секунд - вы можете настроить это значение на свой а также указать другие параметры (см. man ping) для списка) avg=$(ping … | sed …) вывести выходной сигнал от ping до sed, который вырезает среднее время ответа и сохраняет это значение в переменной avg sed '$!d;s_.*=[^/]*/\([^/]*\)/.*_\1_' sed '$!d не (!) d elete последняя строка ($), но весь остаток sed 's/a/b/' s ubstitute a на b - также может быть записан, например, sed 's_a_b_', если это полезно, таким образом нам не нужно избегать буквенных символов косой черты в строках .* - взять все = и / - буквальное «=» и «/» [^/]* - взять все это не (^) косая черта \([^/]*\) - возьмите все, что не является (^), косой чертой и сохраните ее в группе \1 - первая группа, сохраненная с \(…\), до того, как можно будет выполнить ту же работу с awk -F/ '/^rtt/{print$5}': -F/ - определить / как разделитель i F /^rtt/{…} - выбрать начало линии (^) с помощью «rtt» и сделать … с ним print$5 - print ] только поле no. 5 echo "Average respond time for $l: $avg ms" >> avg_time распечатать текст, вставляя содержимое переменных l и avg и перенаправлять этот вывод в файл avg_time, добавляя его содержимое
8
ответ дан 18 July 2018 в 03:29

Этот ответ, как и ответ Сергия, пришел из Loop над текстовым файлом с URL-адресами и выполнил ping для каждого из них.

Предполагая, что файл urls находится в текущем каталоге и содержит только ваши URL-адреса, по одному на строку :

#!/bin/bash while IFS='' read -r l || [ -n "$l" ]; do avg=$(ping -q -w 10 "$l" | sed '$!d;s_.*=[^/]*/\([^/]*\)/.*_\1_') echo "Average respond time for $l: $avg ms" >> avg_time done < "urls"

Пример run

Здесь выше сценарий был назван avg.

$ cat urls askubuntu.com unix.stackexchange.com stackoverflow.com $ ./avg $ cat avg_time Average respond time for askubuntu.com: 37.742 ms Average respond time for unix.stackexchange.com: 35.966 ms Average respond time for stackoverflow.com: 38.982 ms

Пояснения

#!/bin/bash эта так называемая shebang определяет, с какой оболочки должен запускаться ваш скрипт, вот это bash while IFS='' read -r l || [ -n "$l" ]; do stuff; done < "urls" read файл по имени urls, назначая содержимое текущей обрабатываемой строки переменной l и выполняя stuff с ней ping -q -w 10 "$l" (= ping -qw10 "$l") вызывают ping с содержимым переменной l как аргумент и параметры -q uiet (меньше результата, который нам не нужен) и -w 10 (таймаут в секундах), так что текущий обработанный URL-адрес пингуется точно 10 секунд - вы можете настроить это значение на свой а также указать другие параметры (см. man ping) для списка) avg=$(ping … | sed …) вывести выходной сигнал от ping до sed, который вырезает среднее время ответа и сохраняет это значение в переменной avg sed '$!d;s_.*=[^/]*/\([^/]*\)/.*_\1_' sed '$!d не (!) d elete последняя строка ($), но весь остаток sed 's/a/b/' s ubstitute a на b - также может быть записан, например, sed 's_a_b_', если это полезно, таким образом нам не нужно избегать буквенных символов косой черты в строках .* - взять все = и / - буквальное «=» и «/» [^/]* - взять все это не (^) косая черта \([^/]*\) - возьмите все, что не является (^), косой чертой и сохраните ее в группе \1 - первая группа, сохраненная с \(…\), до того, как можно будет выполнить ту же работу с awk -F/ '/^rtt/{print$5}': -F/ - определить / как разделитель i F /^rtt/{…} - выбрать начало линии (^) с помощью «rtt» и сделать … с ним print$5 - print ] только поле no. 5 echo "Average respond time for $l: $avg ms" >> avg_time распечатать текст, вставляя содержимое переменных l и avg и перенаправлять этот вывод в файл avg_time, добавляя его содержимое
8
ответ дан 24 July 2018 в 17:51

Для одной простой команды, такой как ping, можно использовать xargs. Замечательная вещь о xargs заключается в том, что у нее есть опция --arg-file, которая позволяет вам указать файл, который xargs будет использовать для предоставления позиционных параметров команде, которую вы пытаетесь запустить; в вашем случае это будет один сайт на строку в текстовом файле.

В частности, вам нужна команда:

xargs -I% --arg-file=./input.txt ping -c 4 % -I позволяет нам выбирать держатель места для каждого аргумента, который xargs внутренне --arg-file является файлом из которого будут получены позиционные параметры; обратите внимание, что мы используем ./, чтобы указать, что файл находится в текущем рабочем каталоге ping -c 4, будет пытаться ping на каждом сайте, который исходит из input.txt, с 4 пакетами

Обратите внимание, что мы также может использовать опцию -q для ping, которая предотвратит печать строки для каждого полученного / переданного пакета, при этом выводятся только статистические данные. Оттуда мы можем еще больше очистить выход с помощью awk или любой другой утилиты для обработки текста (помните, что вывод будет буферизирован при переходе по каналу и ждет, пока ping фактически закончит и выведет статистику, так что появится на экране немного медленнее):

$ xargs -I% --arg-file=./input.txt ping -c 4 % -q | awk '/^---/||/avg/' --- askubuntu.com ping statistics --- rtt min/avg/max/mdev = 49.677/73.403/94.312/19.276 ms --- unix.stackexchange.com ping statistics --- rtt min/avg/max/mdev = 40.015/59.099/115.545/32.590 ms --- stackoverflow.com ping statistics --- rtt min/avg/max/mdev = 40.130/40.878/42.685/1.056 ms $ xargs -I% --arg-file=./input.txt ping -c 4 % -q | awk -F'[ /]' '/^---/{print $2};/avg/{print $8}' askubuntu.com 39.809 unix.stackexchange.com 189.557 stackoverflow.com 161.974
7
ответ дан 18 July 2018 в 03:29

Для одной простой команды, такой как ping, можно использовать xargs. Замечательная вещь о xargs заключается в том, что у нее есть опция --arg-file, которая позволяет вам указать файл, который xargs будет использовать для предоставления позиционных параметров команде, которую вы пытаетесь запустить; в вашем случае это будет один сайт на строку в текстовом файле.

В частности, вам нужна команда:

xargs -I% --arg-file=./input.txt ping -c 4 % -I позволяет нам выбирать держатель места для каждого аргумента, который xargs внутренне --arg-file является файлом из которого будут получены позиционные параметры; обратите внимание, что мы используем ./, чтобы указать, что файл находится в текущем рабочем каталоге ping -c 4, будет пытаться ping на каждом сайте, который исходит из input.txt, с 4 пакетами

Обратите внимание, что мы также может использовать опцию -q для ping, которая предотвратит печать строки для каждого полученного / переданного пакета, при этом выводятся только статистические данные. Оттуда мы можем еще больше очистить выход с помощью awk или любой другой утилиты для обработки текста (помните, что вывод будет буферизирован при переходе по каналу и ждет, пока ping фактически закончит и выведет статистику, так что появится на экране немного медленнее):

$ xargs -I% --arg-file=./input.txt ping -c 4 % -q | awk '/^---/||/avg/' --- askubuntu.com ping statistics --- rtt min/avg/max/mdev = 49.677/73.403/94.312/19.276 ms --- unix.stackexchange.com ping statistics --- rtt min/avg/max/mdev = 40.015/59.099/115.545/32.590 ms --- stackoverflow.com ping statistics --- rtt min/avg/max/mdev = 40.130/40.878/42.685/1.056 ms $ xargs -I% --arg-file=./input.txt ping -c 4 % -q | awk -F'[ /]' '/^---/{print $2};/avg/{print $8}' askubuntu.com 39.809 unix.stackexchange.com 189.557 stackoverflow.com 161.974
7
ответ дан 24 July 2018 в 17:51

Другие вопросы по тегам:

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