我一直在查看dig文档,不明白dig +tries=x和dig +retries=x之间的区别。有人能解释一下吗?
发布于 2021-04-29 01:18:24
在这种情况下,您可能需要首先指定您正在讨论的dig版本,以避免任何可能的歧义。
在我的版本中,我只有+tries和+retry (注:单数,而不是复数),+retry上的手册行专门表示与+tries相关的内容,即:
此选项将将UDP查询重试到服务器的次数设置为T,而不是默认的2。与+尝试不同,这不包括初始查询。
如果您研究它的源代码,在https://gitlab.isc.org/isc-projects/bind9/-/blob/9c8b7a5c450d54332f25830aa47035d87490bb3a/bin/dig/dig.c获得最新版本时,您可以看到甚至解释为“更简单”的事实(实际上,这两个选项作用于同一个变量)。
case 'r':
switch (cmd[1]) {
[..]
case 'e':
switch (cmd[2]) {
[..]
case 't': /* retry / retries */
[..]
result = parse_uint(&lookup->retries, value,
MAXTRIES - 1, "retries");
if (result != ISC_R_SUCCESS) {
warn("Couldn't parse retries");
goto exit_or_usage;
}
lookup->retries++;
[..]
case 't':
switch (cmd[1]) {
[..]
case 'r':
switch (cmd[2]) {
[..]
case 'i': /* tries */
[..]
result = parse_uint(&lookup->retries, value,
MAXTRIES, "tries");
if (result != ISC_R_SUCCESS) {
warn("Couldn't parse tries");
goto exit_or_usage;
}
if (lookup->retries == 0) {
lookup->retries = 1;
}
break;因此,retry (实际上是retries )设置lookup->retries值,然后增加它,而tries只是将值设置为给定的值。tries给出了尝试的总次数,而retry给出了在第一次失败之后所做的尝试的数量,所以总尝试量是加1。同样的事情,只是不同的API/语义。
FWIW,lookup->retries在其他地方(在上面的前面)被初始化,如下所示:
int tries = 3;
[..]
*looknew = (dig_lookup_t){
[..]
.retries = tries,这个3解释了手册页面中的2,因为2是重试的次数,所以在第一次尝试之后,默认情况下总尝试数是3。
https://serverfault.com/questions/1061945
复制相似问题