深入网络操作命令(mail mutt nslookup dig traceroute df du fsck dd)
1. mail
1.1. 直接编辑文字邮件与发送邮件
[root@stu412 ~]# mail qxl_work@163.com
Subject: test #邮件标题
body #邮件内容
aasds
. #这一行只有一个小圆点,代表输入结束
Cc: xleequ@163.com #抄送给谁
1.2. 利用"纯文本文件"发送邮件
[root@stu412 ~]# cat file.py
def function():
var = 5
next = 6
third = 7
[root@stu412 ~]# mail -s 'title' qxl_work@163.com <~/file.py
1.3. 以附件方式发送邮件
[root@stu412 ~]# rpm -qa sharitils
[root@stu412 ~]# yum install -y sharutils
[root@stu412 ~]# uuencode /etc/hosts myhosts | mail -s 'test file' qxl_work@163.com
2. mutt
mutt - The Mutt Mail User Agent
mutt是一个文字模式的邮件管理程序,提供了全屏幕的操作界面。
#mutt [-a 附件] [-i body文件] [-b 秘密副本] [-c 一般副本] \
> [-s 邮件标题 ] email地址
选项与参数:
-a 附件
-i body文件:Specify a file to include into the body of a message.
邮件的body部分,先编写成为文件而已;
-b 地址:指定密件副本的收信人地址。
原收件者不知道这封信还会寄给后面的那个秘密副本收件者;
-c 地址 :抄送给谁
-s 邮件标题
1.4. 在线编辑邮件,然后发出去
[root@stu412 mail]# mutt -s "test send 2012" qxl_work@163.com
y:Send q:Abort t:To c:CC s:Subj a:Attach file d:Descrip ?:Help
#y:发送 q:中止 t:To c:CC s:Subj a:Attach file d:Descrip ?:Help
From: root <root@stu412.localdomain>
To: qxl_work@163.com
Cc:
Bcc:
Subject: test send 2012
Reply-To:
Fcc:
PGP: Clear
-- Attachments
- I 1 /tmp/mutt-stu412-11803-0 [text/plain, 7bit, us-ascii, 0.1K]
-- Mutt: Compose [Approx. msg size: 0.1K Atts: 1]---------------------
1.5. 添加附件发送邮件
[root@stu412 ~]# mutt -s 'file' -a /etc/hosts -- qxl_work@163.com
y:Send q:Abort t:To c:CC s:Subj a:Attach file d:Descrip ?:Help
From: root <root@stu412.localdomain>
To: qxl_work@163.com
Cc:
Bcc:
Subject: file
Reply-To:
Fcc:
PGP: Clear
-- Attachments
- I 1 /tmp/mutt-stu412-11894-0 [text/plain, 7bit, us-ascii, 0.1K]
A 2 /etc/hosts [text/plain, 7bit, us-ascii, 0.2K]
-- Mutt: Compose [Approx. msg size: 0.2K Atts: 2]---------------------
echo "内容" | mutt -s "邮件标题" -a "/etc/hosts" "aleco.qu@gmail.com"
注意:
(1) "-a filename"这个选项必须是在命令的最后面,如果上述改成: mutt -a /etc/hosts -s "file" ... 就不行!会失败的!
(2) 在文件名与 email 地址之间需要加上两个连续减号" -- "才行!
3. nslookup
nslookup - query Internet name servers interactively
查询ip与主机名的对应关系
语法:nslookup [-option] [hostname|IP]
#找出google的ip
[root@stu412 ~]# nslookup www.google.com
Server: 192.168.84.2
Address: 192.168.84.2#53
Non-authoritative answer:
www.google.com canonical name = www.l.google.com.
Name: www.l.google.com
Address: 74.125.71.99
...省略...
#找出74.125.71.99的对应的主机名
[root@stu412 ~]# nslookup 74.125.71.99
Server: 192.168.84.2
Address: 192.168.84.2#53
Non-authoritative answer:
99.71.125.74.in-addr.arpa name = hx-in-f99.1e100.net.
Authoritative answers can be found from:
4. dig
dig - DNS lookup utility
dig命令是一个用于询问 DNS 域名服务器的灵活的工具。
它执行 DNS 搜索,显示从受请求的域名服务器返回的答复。
#默认参数查询
[root@stu412 ~]# dig linux.vbird.org
; <<>> DiG 9.3.6-P1-RedHat-9.3.6-16.P1.el5 <<>> linux.vbird.org
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12962
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;linux.vbird.org. IN A
;; ANSWER SECTION:
linux.vbird.org. 5 IN A 140.116.44.180
;; Query time: 17 msec
;; SERVER: 192.168.84.2#53(192.168.84.2)
;; WHEN: Mon Jul 30 22:16:01 2012
;; MSG SIZE rcvd: 49
#获取SOA相关信息
[root@stu412 ~]# dig -t soa linux.vbird.org
; <<>> DiG 9.3.6-P1-RedHat-9.3.6-16.P1.el5 <<>> -t soa linux.vbird.org
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8895
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;linux.vbird.org. IN SOA
;; AUTHORITY SECTION:
vbird.org. 5 IN SOA dns.vbird.org. root.dns.vbird.org. 2007091402 28800 7200 720000 86400
;; Query time: 17 msec
;; SERVER: 192.168.84.2#53(192.168.84.2)
;; WHEN: Mon Jul 30 22:29:05 2012
;; MSG SIZE rcvd: 78
#获取快速回答
[root@stu412 ~]# dig www.google.com +short
www.l.google.com.
74.125.71.105
74.125.71.99
74.125.71.106
74.125.71.147
74.125.71.103
74.125.71.104
#查询反解信息
[root@stu412 ~]# dig -x 183.60.136.70
; <<>> DiG 9.3.6-P1-RedHat-9.3.6-16.P1.el5 <<>> -x 183.60.136.70
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 57399
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;70.136.60.183.in-addr.arpa. IN PTR
;; AUTHORITY SECTION:
60.183.in-addr.arpa. 5 IN SOA dns.guangzhou.gd.cn. root.dns.guangzhou.gd.cn. 2012040601 86400 86400 3628800 172800
;; Query time: 17 msec
;; SERVER: 192.168.84.2#53(192.168.84.2)
;; WHEN: Mon Jul 30 22:33:28 2012
;; MSG SIZE rcvd: 104
5. traceroute
traceroute - print the route packets trace to network host
查询两节点间通信状况的好坏
# traceroute [选项与参数] IP
选项与参数:
-n :可以不必进行主机的名称解析,单纯用 IP ,速度较快!
-U :使用 UDP 的 port 33434 来进行检测,这是默认的检测协议;
-I :使用 ICMP 的方式来进行检测;
-T :使用 TCP 来进行检测,一般使用 port 80 测试
-w :若对方主机在几秒钟内没有回应就表示不通...默认是 5 秒
-p 端口号:若不想使用 UDP 与 TCP 的默认端口号来检测,可在此改变端口号。
-i 设备:用在比较复杂的环境,如果你的网络接口很多很复杂时,才会用到这个参数;
举例来说,你有两条 ADSL 可以连接到外面,那你的主机会有两个 ppp,
你可以使用 -i 来选择是 ppp0 还是 ppp1 啦!
-g 路由:与 -i 的参数相仿,只是 -g 后面接的是 gateway 的 IP 就是了。
[root@linuxdb ~]# traceroute -n www.google.com.hk
traceroute to www.google.com.hk (173.194.72.199), 30 hops max, 40 byte packets
1 58.61.154.1 1.108 ms 1.364 ms 1.563 ms
2 58.60.8.173 0.352 ms 0.663 ms 0.659 ms
3 58.60.8.217 1.521 ms 58.60.8.221 1.249 ms 58.60.8.217 1.504 ms
4 58.60.8.193 0.933 ms 58.60.8.125 3.891 ms 3.886 ms
5 202.97.33.150 4.128 ms 202.97.64.10 17.299 ms 202.97.33.150 4.106 ms
6 202.97.61.222 4.084 ms 3.838 ms 3.970 ms
7 202.97.61.102 7.784 ms 7.779 ms 202.97.61.222 4.125 ms
8 202.97.61.102 7.978 ms 7.956 ms 7.921 ms
9 202.97.62.214 7.905 ms 209.85.241.58 8.470 ms *
10 209.85.241.58 9.050 ms 209.85.241.216 40.705 ms *
11 209.85.250.120 61.139 ms * 209.85.250.103 61.438 ms
12 173.194.72.199 99.236 ms 68.507 ms 98.146 ms
6. df,du
df:列出文件系统的整体磁盘使用量
du:评估文件系统的磁盘使用量(常用于评估目录所占容量)
6.1. df
df - report file system disk space usage
功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
语法:df [-ahikHTm] [目录或文件名]
说明:df命令可显示所有文件系统对i节点和磁盘块的使用情况。
该命令各个选项的含义如下:
-a, --all 显示所有文件系统的磁盘使用情况,包括0块(block)的文件系统,如/proc文件系统。
-k,like --block-size=1K 以k字节为单位显示。
-m,like --block-size=1M 以M字节为单位显示。
-h, --human-readable
print sizes in human readable format (e.g., 1K 234M 2G)
以可读的方式显示文件的大小,如1K,234M,2G
-i,--inodes显示i节点信息,而不是磁盘块。
-t,--type=TYPE显示各指定类型的文件系统的磁盘空间使用情况。
-x,--exclude-type=TYPE列出不是某一指定类型文件系统的磁盘空间使用情况(与t选项相反)。
-T,--print-type显示文件系统类型。
[root@stu412 ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 19669908 2057904 16596696 12% /
/dev/sda1 124427 11599 106404 10% /boot
tmpfs 517352 0 517352 0% /dev/shm
[root@stu412 ~]# df –h #以可读的方式显示
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 19G 2.0G 16G 12% /
/dev/sda1 122M 12M 104M 10% /boot
tmpfs 506M 0 506M 0% /dev/shm
[root@stu412 ~]# df –i #显示inode节点使用情况
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda2 5079040 58761 5020279 2% /
/dev/sda1 32128 35 32093 1% /boot
tmpfs 129338 1 129337 1% /dev/shm
[root@stu412 ~]# df –aT #显示所有文件系统及类型
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/sda2 ext3 19669908 2057908 16596692 12% /
proc proc 0 0 0 - /proc
sysfs sysfs 0 0 0 - /sys
devpts devpts 0 0 0 - /dev/pts
/dev/sda1 ext3 124427 11599 106404 10% /boot
tmpfs tmpfs 517352 0 517352 0% /dev/shm
none binfmt_misc 0 0 0 - /proc/sys/fs/binfmt_misc
sunrpc rpc_pipefs 0 0 0 - /var/lib/nfs/rpc_pipefs
nfsd nfsd 0 0 0 - /proc/fs/nfsd
[root@stu412 ~]# df -h /etc/
#df会自动分析该目录或文件所在的分区,并将该分区的容量显示出来
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 19G 2.0G 16G 12% /
6.2. du
du - estimate file space usage
# du [-ahskm] 文件或目录名称
选项与参数:
-a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。
-h :以人们较易读的容量格式 (G/M) 显示;
-s :列出总量而已,而不列出每个各别的目录占用容量;
-S :不包括子目录下的总计,与 -s 有点差别。
-k :以 KBytes 列出容量显示;
-m :以 MBytes 列出容量显示;
范例1:列出目前目录下的所有文件容量
[root@stu412 ~]# du
4 ./Mail
8 ./test
12 ./mail
4 ./destination
108040 .
#实际显示时,仅会显示目录容量(不含文件)
#输出的数值数据以 1K 为单位。
范例2:将文件容量也列出来
[root@stu412 ~]# du -a
4 ./Mail
0 ./file2
8 ./install.log.syslog
...省略...
28 ./.bash_history
108040 .
范例3:检查根目录底下每个目录所占用的容量(常用)
[root@stu412 ~]# du -sm /*
8 /bin
6 /boot
377 /data
1 /dev
63 /etc
1 /home
89 /lib
1 /lost+found
1 /media
0 /misc
1 /mnt
0 /net
1 /oldboy
1 /opt
0 /proc
106 /root
34 /sbin
1 /selinux
1 /srv
0 /sys
1 /tmp
1 /user1
1 /user2
1181 /usr
128 /var
#利用通配符 * 来代表每个目录,
7. fsck
fsck - check and repair a Linux file system #检查和修复linux文件系统
# fsck [-t 文件系统] [-ACay] 设备名称
选项与参数:
-t fslist:Specifies the type(s) of file system to be checked.
指定文件系统。
不过由于现今的 Linux 太聪明了,他会自动的通过 superblock 去分辨文件系统,
因此通常可以不需要这个选项的!
-A :Walk through the /etc/fstab file and try to check all file systems in one run.
依据 /etc/fstab 的内容,将需要的设备扫瞄一次。/etc/fstab 于下一小节说明,
通常启动过程中就会运行此一命令了。
-a :utomatically repair the file system without any questions。
自动修复检查到的有问题的扇区!
-y :与 -a 类似,但是某些 filesystem 仅支持 -y 这个参数!
-C :可以在检验的过程当中,使用一个直方图来显示目前的进度!
EXT2/EXT3 的额外选项功能:(e2fsck 这支命令所提供)
-f :强制检查!一般来说,如果 fsck 没有发现任何 unclean 的标志,不会主动进入
细化检查的,如果您想要强制 fsck 进入细部检查,就得加上 -f 标志!
-D :针对文件系统下的目录进行优化配置。
[root@stu412 ~]# fsck -C -f -t ext3 /dev/sda1
fsck 1.39 (29-May-2006)
e2fsck 1.39 (29-May-2006)
/dev/sda1 is mounted.
WARNING!!! Running e2fsck on a mounted filesystem may cause
SEVERE filesystem damage.
Do you really want to continue (y/n)? yes
/boot: recovering journal
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/boot: 35/32128 files (8.6% non-contiguous), 15660/128488 blocks
注意:通常只有身为 root 且你的文件系统有问题的时候才使用这个命令,否则在正常状况下使用此一命令, 可能会造成对系统的危害!通常使用这个命令的场合都是在系统出现极大的问题,导致你在 Linux 启动的时候得进入单人单机模式下进行维护的行为时,才必须使用此一命令!
由于 fsck 在扫瞄硬盘的时候,可能会造成部分文件系统的损坏,所以运行 fsck 时, 被检查的 分区 务必不可挂载到系统上!即是需要在卸载的状态!
8. dd
dd - convert and copy a file
dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
语法:
dd [OPERAND]...
dd OPTION
#生成1M大小的文件
[root@stu412 ~]# dd if=/dev/zero of=junk.data bs=1M count=1
1+0 records in
1+0 records out
#if代表输入文件(input file),of代表输出文件(output file),
#bs代表以字节为单位的块大小(block size),count代表要被复制的块数
#/dev/zero是一个字符设备,它会不断的返回0值字节(\0),
#如果不指定输入参数(if),默认情况下dd会从stdin中读取输入。与之类似,如果不指定输出参数(of),
#则dd会将stdout作为默认输出。
1048576 bytes (1.0 MB) copied, 0.000692656 seconds, 1.5 GB/s
[root@stu412 ~]# ls -lh junk.data
-rw-r--r-- 1 root root 1.0M Jul 31 20:27 junk.data