转载:http://www.ahlinux.com/start/cmd/7749.html

之所以会关注到这个命令,是因为最近在研究MySQL的主从复制相关的技术,希望能实现当Slave落后Master比较多的时候自动将Slave从数据源中去除掉的功能。找了很多资料,没有比较好的现成办法。只能参考 percona-toolkit 中的 pt-heartbeat 命令的实现自己来做,这个完全可以写另一篇博客了,暂且不提罢。我们每台MySQL服务器都部署有监控用的程序,我希望把这个发送heartbeat的程 序集成到监控程序中,但这个程序只需要在Master机器上启动,这就涉及到如何确定这台MySQL服务器是Master还是Slave了,有一些 办法 ,但是都不算太好,因为MySQL的一个Slave机器也可以作为另一个Slave的Master,比较拗口,大意就是你的你的儿子也是你的孙子的爸爸。

好在我们的MySQL服务器都绑定着CNAME,访问一台MySQL服务器的时候,使用的是对应的CNAME,而不是那台机器的IP或者主机名(可以通过 hostname 命令查看,因此下文称为hostname),比如Master的机器是 abcedfg.xxx.com ,但是我们另外绑定了 master.db.xxx.com 域名,Slave机器是 hijklmn.xxx.com ,我们绑定了 slave-1.db.xxx.com 域名。

{"master" : "master.db.xxx.com","slaves" : ["slave-1.db.xxx.com", "slave-1.db.xxx.com"]
}

所以我用了一个比较奇怪的方法:通过CNAME来查找Master的hostname,如果运行该heartbeat程序的机器的hostname和刚查找到的Master的hostname一致,则说明该程序运行于一台Master机器,否者就直接退出。

因此,问题转变成如何通过CNAME来查找一个域名其真正指向的服务器的hostname。这里,我直观的想到可以用Linux的 dig 命令来解决这个问题。需要注意的是,除了这个命令以外,很多编程语言库都提供相应的支持,比如Java的 InetAddress 就可以实现 通过IP地址查找对应的域名 :

InetAddress addr = InetAddress.getByName("8.8.8.8");
String host = addr.getHostName();
System.out.println(host);

CNAME

可能需要先大概介绍一下什么是CNAME:一个域名可以有两种类型的指向,如果一个 域名指向 称为一个 记录 (Record)的话,那么就有两种 记录类型 (Record Type),分别是:

  1. A记录 :指向一个IP地址
  2. CNAME :指向一个其他的域名

下面这个图是我的域名的配置:

这里有两条A记录,一条CNAME。两条A记录指向的就是我的博客所在的VPS:第二条容易理解,就是将 www.zhouliang.pro 指向了VPS的IP地址,这样你使用 http://www.zhouliang.pro 就可以访问我的博客了;第一条有点奇怪,这里是一个泛域名,也就是将 zhouliang.pro 也指向了这个IP地址,也就是说你用 http://zhouliang.pro 也可以直接访问我的博客。

彩蛋:买域名的时候特别注意服务商是不是提供免费的泛域名解析服务,不提供的都是耍流氓,据我所知,万网就是在耍流氓。

第三条记录就是一个CNAME指向,也许你已经在浏览器中打开了 http://i.zhouliang.pro ,我将 i.zhouliang.pro 转向了网易轻博客服务,放了几张照片,你们感受一下,小清新有木有。

dig 命令

学习Linux命令只有一条路,那就是: man dig ,到控制台敲一下这个命令,输出略长。本文的目的是先大致介绍一下,深入了解还是得细读 man dig 。

在控制台输入,输出结果如下:

$ dig i.zhouliang.pro; <<>> DiG 9.8.3-P1 <<>> i.zhouliang.pro
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45515
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0;; QUESTION SECTION:
;i.zhouliang.pro.       IN  A;; ANSWER SECTION:
i.zhouliang.pro.        14400   IN  CNAME   mydomain.lofter.com.
mydomain.lofter.com.    18000   IN  A       54.248.125.234;; Query time: 211 msec
;; SERVER: 192.168.106.1#53(192.168.106.1)
;; WHEN: Fri Jan 24 00:43:26 2014
;; MSG SIZE  rcvd: 82

输出结果大致分成4个部分,实际上可能还包括更多的内容,总共会有以下6个部分:

  • Header : 包括软件版本,全局变量以及除消息头以外的其他部分的信息,比如上例中,显示有1个QUERY,2个ANSWER
  • QUESTION SECTION : 请求参数信息,也就是你的输入
  • ANSWER SECTION : 从DNS查询到的信息,也就是输出,显示 i.zhouliang.pro 是CNAME,指向 mydomain.lofter.com ,而后者是一个A记录,指向一个IP地址
  • AUTHORITY SECTION : 包含DNS域名服务器的授权信息,上例中不包含这一部分,如果用这个命令就可以看到 dig @ns1.redhat.com redhat.com ,这里的 @ 符号用于指定查询所使用的DNS服务器
  • ADDITIONAL SECTION : 包含AUTHORITY SECTION中的域名服务器的IP地址,同样,上例中也不包含这一部分
  • Stats section : 最下方的一部分,显示了查询时间等额外信息

另外,上面所有的以 ; 开头的行实际上都是注释。

可以通过下面的参数来控制显示或者不显示上面的这些部分:

  • +nocomments – 不显示注释
  • +noauthority – 不显示AUTHORITY SECTION
  • +noadditional – 不显示ADDITIONAL SECTION
  • +nostats – 不显示Stats section
  • +noanswer – 不显示ANSWER SECTION
  • +noall - 不显示所有的信息,一般会这样用 dig zhouliang.pro +noall +answer

和上面参数对应还有 +comments , +answer 等,后文有示例,此处不赘述。另外,还有如下两个参数需要了解:

  • +short - 显示简短的信息
  • -t 指定查询的记录类型,可以是CNAME、A、MX、NS,分别表示CNAME、A记录、MX记录、DNS服务器,默认是A
  • -x 表示反向查找,也就是根据IP地址查找域名

dig命令示例

下面来举几个实用的例子。

1.查看域名

$ dig i.zhouliang.pro +noall +anwser; <<>> DiG 9.8.3-P1 <<>> i.zhouliang.pro +noall +answer
;; global options: +cmd
i.zhouliang.pro.            10034    IN    CNAME    mydomain.lofter.com.
mydomain.lofter.com.        9183     IN    A        54.248.125.234

特别注意这里输出了两行,第一行是CNAME,先将 i.zhouliang.pro 解析成 mydomain.lofter.com ,第二行是A记录,将 mydomain.lofter.com 解析成IP地址。这是一个完整的域名解析过程。

2.查找域名的MX记录:

$ dig zhouliang.pro -t MX +short
10 mxdomain.qq.com.

从输出可以看出,我用了QQ提供的域名邮箱服务。

3.查找域名对应的CNAME:

$ dig i.zhouliang.pro -t CNAME +short
mydomain.lofter.com.

从输出可以看出,我用了网易Loft提供的博客服务。另外,这个方法刚好解答了本文开头所提到的那个问题。

4.根据IP地址反向查找域名

$ dig -x 8.8.8.8 +short; <<>> DiG 9.8.3-P1 <<>> -x 8.8.8.8 +noall +answer
;; global options: +cmd
8.8.8.8.in-addr.arpa.    79605    IN    PTR    google-public-dns-a.google.com.

从输出可以看出,Google的这个DNS服务器有个域名叫做google-public-dns-a.google.com

5.查询域名的解析DNS服务器地址

$ dig zhouliang.pro ns +short
ns15.bigwww.com.
ns13.bigwww.com.
  • 本文来自:爱好Linux技术网
  • 本文链接:http://www.ahlinux.com/start/cmd/7749.html

Linux dig 命令详解(重要)相关推荐

  1. linux mingetty 命令详解

    linux mingetty 命令详解 功能说明:精简版的getty. 语 法:mingetty [--long-hostname][--noclear][tty] 补充说明:mingetty适用于本 ...

  2. linux zip 命令详解

    功能说明:压缩文件.  语 法:zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-n <字尾字符串>][-t <日期 ...

  3. linux zipinfo 命令详解

    linux zipinfo 命令详解 功能说明:列出压缩文件信息. 语 法:zipinfo [-12hlmMstTvz][压缩文件][文件...][-x <范本样式>] 补充说明:执行zi ...

  4. Linux chkconfig命令详解

    Linux chkconfig命令详解 (2011-03-07 15:49:04) 转载 标签: linux shell chkconfig 杂谈 分类: 工作*Linux chkconfig:    ...

  5. linux uname 命令详解

    linux uname 命令详解 功能说明:显示系统信息. 语 法:uname [-amnrsv][--help][--version] 补充说明:uname可显示电脑以及操作系统的相关信息. 参 数 ...

  6. linux mread 命令详解

    linux mread 命令详解 功能说明:将MS-DOS文件复制到Linux/Unix的目录中. 语 法:mread [MS-DOS文件...][Linux文件或目录] 补充说明:mread为mto ...

  7. linux sort 命令详解

    linux sort 命令详解 sort命令的功能是对文件中的各行进行排序.sort命令有许多非常实用的选项,这些选项最初是用来对数据库格式的文件内容进行各种排序操作的.实际上,sort命令可以被认为 ...

  8. linux arpwatch 命令详解

    linux arpwatch 命令详解 功能说明:监听网络上ARP的记录. 语 法:arpwatch [-d][-f<记录文件>][-i<接口>][-r<记录文件> ...

  9. linux awk命令详解,使用system来内嵌系统命令,批量github,批量批下载视频, awk合并两列...

    linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...

最新文章

  1. 36晋级12第五场:冯志刚决胜入围(节目视频)
  2. windows10下,from skimage import morphology 报错的解决办法
  3. html怎么插入外部js,如何插入js,引用外部js,js在页面中的位置
  4. shopex还是ecshop
  5. 劳动力工资调整模型的探讨——数学建模
  6. 直播预告 | AAAI 2022论文解读:对称的语义感知的妆容迁移与移除网络
  7. 软件性能测试过程详解与案例剖析_推荐软件测试书籍
  8. opencv中的子库
  9. sqoop1.99.6 mysql_Alex的Hadoop菜鸟教程:第6课Sqoop2安装教程
  10. CCC认证和CQC认证的区别有哪些
  11. 微信小程序:组件间的传值
  12. 百度网盘文件真实地址解析
  13. IOS8 keyboardWillShow 在UIKeyboardWillShowNotification 调用两次 问题解决
  14. 虾皮男装类目市场如何?哪些产品好卖?
  15. 今年最后一场组队学习!
  16. 计算机网速单位是什么,文件大小和网速的单位
  17. 百度新闻爬虫搜索引擎实战---爬虫篇(2)
  18. 分类算法之决策树ID3详解
  19. java实现备忘录_JAVA中的备忘录模式实例教程
  20. 魔兽世界服务器卡顿原理,暴雪解释《魔兽世界》怀旧服卡顿原因 这款插件你还在用吗?...

热门文章

  1. 报告上集 | 《认文识字·中文字信息精准化》报告
  2. 北京做大数据分析的公司排名有哪些
  3. 使用xxtea加密或者解密文件
  4. HDU-4540 威威猫系列故事——打地鼠 (动态规划)
  5. 以下符号可直接复制使用
  6. 最新款打卡抽奖助手小程序源码,带微信通知功能,去授权
  7. 《Spring实战》读书笔记-第3章 高级装配,字节跳动四面技术面
  8. 如何将下拉框中的值传到后台
  9. c语言求10000以内的质数,for语句计算输出10000以内最大素数怎么搞最简单??各位大神们...
  10. 工业机器人综合实训考核装置