Запуск dig
для каждого IP-адреса будет очень неэффективным и добавит нагрузку на ваш DNS-сервер. Я бы использовал perl
здесь:
perl -MSocket -pe 's{(?<![\d.])\d+\.\d+\.\d+\.\d+(?![\d.])}{
$ip = inet_aton($&);
$cache{$ip} //= gethostbyaddr($ip,AF_INET) // "UNKNOWN[$&]"
}ge'
Это запрашивает службу имен вашей системы, поэтому, возможно, /etc/hosts
, DNS, mDNS, LDAP, NIS+... или что-то другое, настроенное для разрешения имен хостов в /etc/nsswitch.conf
или эквивалентное в вашей системе, возможно, через службу имен службы кэширования, такие как nscd
или sssd
, и мы также реализуем наше кэширование, чтобы избежать повторного запроса одного и того же IP-адреса.
Мы сопоставляем только последовательности из 4.
-разделенных десятичных чисел, а не другие форматы адресов IPv4, но обратите внимание, что для inet_aton()
начальные 0 заставляют числа считаться восьмеричными, поэтому 010.010.010.010
на самом деле8.8.8.8
(то же, что и для большинства вещей, которые принимают IP-адреса в качестве аргументов, но неdig -x
).
Если вам нужно запрашивать DNS-сервер только так, как это делает dig
, вы можете использовать Net::DNS
вместоgethostbyaddr()
:
perl -MNet::DNS -pe '
sub resolve {
my ($r) = rr($_[0]);
if (defined($r)) {
return $r->ptrdname;
} else {
return "UNKNOWN[$_[0]]";
}
}
s{(?<![\d.])\d+\.\d+\.\d+\.\d+(?![\d.])}{$cache{$&} //= resolve $&}ge'
Что ж, сейчас у меня нет ноутбука или Fedora, и я не эксперт, но у меня есть такой же монитор и та же проблема (, хотя и на Debian Buster ). Я думаю, проблема в том, что данные EDID требуют более высокой частоты синхронизации, чем мой компьютер может обеспечить при разрешении 3440x1440. Спецификация экрана от 48 Гц до 75 Гц. Из прочитанного я вижу, что многие компьютеры могут обеспечивать частоту синхронизации только в диапазоне -для этого разрешения через порт дисплея. Я использую HDMI. Правильный ответ, вероятно, состоит в том, чтобы сделать что-то умное с настройками EDID, но это было выше моего понимания.
Моя работа -началась с xorg:
~$ cvt 3440 1440 44
(44 — частота обновления, которую я использую. Я нашел это методом проб и ошибок. Начните примерно с 24, затем доведите до -. Вы должны пройти остальную часть процесса, описанного ниже, для каждого приращения, чтобы увидеть, работает ли он. )cvt советует вам модель для использования в следующей команде, в моем случае я поступил следующим образом:
~$ xrandr --newmode "3440x1440_44.00" 299.75 3440 3664 4024 4608 1440 1443 1453 1479 -hsync +vsync
~$ xrandr --addmode HDMI-1 3440x1440_44.00
~$ xrandr --output HDMI-1 --mode 3440x1440_44.00
Я поместил это в сценарий, который будет запускаться каждый раз, когда я вхожу в систему. Я уверен, что люди поумнее смогут сделать его постоянным.
Чтобы затем получить ту же частоту обновления, работающую на Wayland:
Итак, при загрузке:
проверьте, работает ли это при входе в сессию Wayland
Если это сработало, сделайте его постоянным с помощью чего-то вроде:
su --c 'gedit /etc/default/grub'
Введите в конце записи linux по умолчанию в кавычках :video=HDMI -A -1 :3440x1440@44
Затем обновите grub с помощью чего-то вроде:
su - root update-grub
перезагрузить -теперь должно работать.
Что касается того, является ли бег с такой низкой частотой синхронизации хорошей идеей, это другой вопрос..
Мое фоновое чтение: