Тайм-аут настраивается в /etc/resolv.conf
с timeout
параметр.
Попытка, добавляющая строку: option timeout:
кому: /etc/resolv.conf
.
От resolv.conf
страница справочника:
timeout:n
sets the amount of time the resolver will wait for a response from a remote name server before retrying the
query via a different name server. Measured in seconds, the default is RES_TIMEOUT (currently 5, see
). The value for this option is silently capped to 30.
Кредиты переходят к http://www.linuxquestions.org/questions/linux-general-1/linux-dns-resolution-timeout-869229/.
Это не оператор _<
, это аргумент _
для передачи на чтение и оператор перенаправления <
. <(cmd)
сам по себе является подстановочным процессом (который расширяется до имени файла, указывающего на трубу).
Выполняется:
read bytes _ < /proc/self/fd/x
Где fd x - читающий конец трубы.
На другом (записывающем) конце трубы выполняется процесс фоновой подоболочки du -bcm random_iso. iso | tail -1
, при этом его stdout перенаправляется в эту трубу.
Таким образом, read
будет хранить в переменной $bytes
первое слово последней строки вывода du -bcm
, а остальная часть строки - в переменной $_
.
Теперь я не знаю, где это du -bcm
имеет смысл. Ни один из вариантов -b
, -c
или -m
не является стандартным. В то время как -c
является довольно распространенным и служит для указания суммарного размера, с GNU - du
, -b
заключается в получении размера файла (а не использования диска) в байтах, в то время как -m
нужно округлить размер до следующего мебибайта, чтобы они были конфликтующими опциями (хотя, возможно, они использовали -b
для его побочного эффекта включения --видимого размера
). FreeBSD du имеет -m
(для мебибайтов), нет -b
, Solaris не имеет ни того, ни другого...
Похоже, что это был замысловатый способ записи:
wc -c < random_iso.iso
Или:
du --apparent-size -cm random_iso.iso | awk 'END{print $1}'
Если бы они действительно хотели, чтобы размер файла округлялся до следующего мебибайта в системе GNU.
. Как уже упоминалось, _<
не является редиректом. Это передача _
в качестве последнего аргумента к читается
. Затем <
интерпретируется как отдельный оператор перенаправления, перенаправляющий вывод подстановки процесса на stdin.
В Бэш-скриптах стало традиционным использовать _
в качестве "переменной выброса" в сочетании со встроенным read
. В bash _
- это специальная переменная, которая устанавливается в конечный аргумент команды после выполнения каждой команды. В этом случае это означает, что первому полю будет присвоено байт
, а остальные поля отбрасываются в переменную _
, вместо того, чтобы присваивать все оставшиеся поля в байт
.
Хотя это и является конвенцией, существует ряд веских причин, чтобы избежать злоупотребления _
таким образом.
_
не указано POSIX. Большинство оболочек не сделают с ним ничего особенного. zsh
, _
имеет атрибут только для чтения
, и использование этого приведет к ошибке оболочки. мкш
, _
имеет только поведение бэша в интерактивном режиме. В неинтерактивном скрипте _
используется для другой цели и после каждой команды ничего не присваивается. ksh93
, _
устанавливается только последний аргумент последней команды в строке. Команды должны быть физически расположены на отдельных строках кода, чтобы можно было использовать _
. Кроме того, _
в ksh93 перегружен, чтобы иметь много других применений в различных контекстах, поэтому присвоение _
для этой цели не рекомендуется и будет делать разные вещи в зависимости от контекста. Я рекомендую перед перенаправлением выделить место, чтобы сделать вещи более понятными. Некоторые рекомендации по хорошему стилю переадресации я поместил в в этой статье .