проблемы с resolv.conf

Во-первых, в простой команде (в основном, название программы, сопровождаемой некоторыми аргументами), относительное положение аргументов и перенаправлений не имеет значения. У Вас могут даже быть перенаправления перед названием команды. Следующее является всем эквивалентом:

foo --bar qux >out 2>err
foo >out --bar 2>err
>out 2>err foo --bar qux

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

output.txt

(контраст command1 , который помещает источник после первого шага обработки.)

В составных командах действительно необходимо поместить перенаправления в конец; например, в следующих отрывках, Вы не можете поместить перенаправление больше нигде:

while some_predicate; do some_action; done out
{ command1; command2; } out

Когда существует несколько перенаправлений, порядок важен, если они накладываются, т.е. если у них есть общие дескрипторы файлов. Посмотрите Порядок перенаправлений

В конвейере перенаправления относятся к каждой переданной по каналу команде. В Ваших примерах перенаправления относятся (1) sort управляйте только, (2,3) echo команда только. Как объяснено выше, (2) и (3) эквивалентны.

В (2) и (3), вывод от echo заканчивается в том же месте, которым это было перед перенаправлением. Если Вы записали echo -en "C\nB\nA\n" >&2 | sort, не было бы никакого вывода к stdout от команды на левой стороне канала, таким образом, sort видел бы пустой stdin.

Можно перенаправить ввод или вывод блока команд путем помещения их в фигурные скобки:

{ command1 | command2; } 2>error.log

Я предполагаю, что Ваш выбор перенаправлений был в демонстрационных целях только — 2>/dev/stdout >&2 сложный способ записать 2>&1 (перенаправьте стандартную погрешность (т.е. fd 2), в то везде, где стандартный вывод (т.е. fd 1) в настоящее время переходит).

1
13.12.2013, 23:29
2 ответа

Чтение приложений /etc/resolv.conf когда они запускают. При изменении того файла Вы, возможно, должны перезапустить приложения тот доступ сеть. Firefox перезапуска.

Для предотвращения этого неудобства можно выполнить локальный прокси кэширования DNS, поместить nameserver 127.0.0.1 в Вашем /etc/resolv.conf к точечным приложениям в Вашем прокси, и настраивают Ваш прокси однако, Вам нравится. Это обладает дополнительным преимуществом создания запросов DNS быстрее. Dnsmasq является популярным выбором. Не посмотрите DNS на Wi-Fi Debian после отключения кабеля DNS, и Процесс, звоня getaddrinfo () при начальной загрузке постоянно застревает в плохом/etc/resolv.conf? для примеров.

0
28.01.2020, 02:13
  • 1
    Спасибо. Ваше решение работало. Я изменил свой resolv.conf для указания на 127.0.0.1, и получение dnsmasq для указания на пользовательский файл сервера имен решило проблему. –  zam 17.12.2013, 17:16

Перезагрузка была бы самым простым способом иметь resolv.conf файл, автоматически зафиксированный.

Как несколько комментариев справедливо указывают, существуют определенно более тонкие способы восстановить файл, однако, они - зависимый распределения:

Вы могли бы проверить который соответствие Ваш, если таковые имеются:

service network-manager restart      # Debian/Ubuntu/Mint
/etc/init.d/network restart          # Suse
/sbin/service NetworkManager restart # RedHat/Fedora
/etc/rc.d/rc.inet1 restart           # Slackware
-2
28.01.2020, 02:13
  • 1
    я сказал бы, что даже перезапуск рассматриваемого сетевого интерфейса должен разрешить вещи. сегодня –  Joseph R. 13.12.2013, 23:28
  • 2
    Это - действительно побочный эффект перезагрузки, которую я предлагал под строками. Идея является людьми, намного более вероятно, будут знать, как перезагрузить, чем, как перезапустить интерфейс. –  jlliagre 14.12.2013, 00:01

Теги

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