Если код уже работает, но выполняется слишком медленно, следующий шаг - начать профилирование. При написании сценариев shell можно использовать time
(попробуйте help time
, чтобы посмотреть его справочную страницу), чтобы увидеть, сколько времени занимает выполнение каждой команды.
Я думаю, что bc
должна быть очень быстрой; sed
против одной строки также должен быть очень быстрым; и grep
тоже должен быть довольно быстрым, поэтому я решил попробовать профилировать эти две команды xrandr
на своей системе. Мне просто нужны были некоторые быстрые оценки, поэтому я попробовал выполнить команды по отдельности (вместо того, чтобы, скажем, обернуть их в сценарий, чтобы запустить их десятки раз для получения среднего значения):
$ time xrandr --prop --verbose >/dev/null
real 0m0.428s
user 0m0.004s
sys 0m0.004s
$ time xrandr --output LVDS1 --brightness 0.9
real 0m0.117s
user 0m0.000s
sys 0m0.008s
$
Если вы получите похожие результаты, возможно, ваш запрос занимает больше всего времени.
Я не совсем понимаю, что вы подразумеваете под «разделенным горизонтом».
Однако вы можете настроить dnsmasq для разрешения имен для определенного домена через выделенный сервер имен (цитируется из документации ):
Использование специальных серверов.
Dnsmasq может направлять запросы DNS для определенных доменов на определенные вышестоящие серверы имен. Эта функция была добавлена для использования с VPN, но носит общий характер. Сценарий таков: у вас есть стандартное подключение к Интернету через ISP, а dnsmasq настроен для пересылки запросов на серверы имен ISP, затем вы делаете VPN-подключение к своему сети компании, предоставляя доступ к хостам внутри брандмауэра компании. У вас есть доступ, но поскольку многие из внутренних хостов не видны в общедоступном Интернете, ваша компания не публикует их в общедоступном DNS, и вы не можете получить их IP-адреса { {1}} адрес от серверов имен интернет-провайдеров. Решение состоит в том, чтобы использовать сервер имен компании для частных доменов внутри компании, и dnsmasq позволяет это. Предполагая, что все внутренние машины компании находятся в домене internal.myco.com, а сервер имен компаний - 192.168.10.1, тогда параметр server = / internal.myco.com / 192.168.10.1 будет направлять все запросы во внутреннем домене на правильный сервер имен. Вы можете указать более одного домена в каждой опции сервера. Если существует больше , чем один сервер имен, просто включите столько параметров сервера, сколько необходимо , чтобы указать их все.
Итак, вы можете попробовать добавить что-нибудь вроде
server=/acme.corp/10.1.1.2
в вашу конфигурацию.
Возможно, это не коснется вас, но любой, кто пытается настроить свой dnsmasq в современных настольных системах, может вскоре понять, что NetworkManager порождает dnsmasq. Конфигурация собрана вместе из файлов в /etc/NetworkManager/dnsmasq.d/
.