9.4 lsof
功能:列出当前系统打开文件的工具。
语法:
代码语言:javascript复制lsof -i[46] [protocol][@hostname|hostaddr][:service|port]
参数:
代码语言:javascript复制Defaults in parentheses; comma-separated set (s) items; dash-separated ranges.
-?|-h list help -a AND selections (OR) -b avoid kernel blocks
-c c cmd c ^c /c/[bix] c w COMMAND width (9) d s dir s files
-d s select by FD set D D dir D tree *SLOW?* |-e s exempt s *RISKY*
-i select IPv[46] files -K list tasKs (threads) -l list UID numbers
-n no host names -N select NFS files -o list file offset
-O no overhead *RISKY* -P no port names -R list paRent PID
-s list file size -t terse listing -T disable TCP/TPI info
-U select Unix socket -v list version info -V verbose search
|-w Warnings ( ) -X skip TCP&UDP* files -Z Z context [Z]
-- end option scan
f|-f filesystem or -file names |-f[gG] flaGs
-F [f] select fields; -F? for help
|-L [l] list ( ) suppress (-) link counts < l (0 = all; default = 0)
m [m] use|create mount supplement
|-M portMap registration (-) -o o o 0t offset digits (8)
-p s exclude(^)|select PIDs -S [t] t second stat timeout (15)
-T qs TCP/TPI Q,St (s) info
-g 展开 exclude(^)|select and print process group IDs
-i i select by IPv[46] address: [46][proto][@host|addr][:svc_list|port_list]
|-r [t[m<fmt>]] repeat every t seconds (15); until no files, - forever.
An optional suffix to t is m<fmt>; m must separate t from <fmt> and
<fmt> is an strftime(3) format for the marker line.
-s p:s exclude(^)|select protocol (p = TCP|UDP) states by name(s).
-u s exclude(^)|select login|UID set s
-x [fl] cross over d| D File systems or symbolic Links
names select named files or files on named file systems
Anyone can list all files; /dev warnings disabled; kernel ID check disabled.
[root@LVS ~]
#
实例:
- 使用-i:port来显示与指定端口相关的网络信息(查看服务器端口22占用情况)
[root@LVS ~]# lsof -i:22
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1245 root 3u IPv4 22280 0t0 TCP *:ssh (LISTEN)
sshd 1245 root 4u IPv6 22292 0t0 TCP *:ssh (LISTEN)
sshd 3456 root 3u IPv4 32140 0t0 TCP 192.168.100.106:ssh->192.168.100.103:62943 (ESTABLISHED)
[root@LVS ~]
#
- 使用-i显示所有连接
[root@LVS ~]# lsof -i
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root 46u IPv6 15646 0t0 TCP *:sunrpc (LISTEN)
systemd 1 root 47u IPv4 15647 0t0 TCP *:sunrpc (LISTEN)
chronyd 558 chrony 1u IPv4 16920 0t0 UDP localhost:323
chronyd 558 chrony 2u IPv6 16921 0t0 UDP localhost:323
chronyd 558 chrony 3u IPv4 61445 0t0 UDP 192.168.100.106:51617->sv1.ggsrv.de:ntp
avahi-dae 564 avahi 12u IPv4 17552 0t0 UDP *:mdns
avahi-dae 564 avahi 13u IPv4 17559 0t0 UDP *:50471
dhclient 769 root 6u IPv4 20109 0t0 UDP *:bootpc
dhclient 769 root 20u IPv4 20098 0t0 UDP *:9399
dhclient 769 root 21u IPv6 20099 0t0 UDP *:tr-rsrb-port
cupsd 986 root 11u IPv6 22638 0t0 TCP localhost:ipp (LISTEN)
cupsd 986 root 12u IPv4 22639 0t0 TCP localhost:ipp (LISTEN)
sshd 1245 root 3u IPv4 22280 0t0 TCP *:ssh (LISTEN)
sshd 1245 root 4u IPv6 22292 0t0 TCP *:ssh (LISTEN)
dnsmasq 2183 nobody 3u IPv4 23602 0t0 UDP *:bootps
dnsmasq 2183 nobody 5u IPv4 23609 0t0 UDP 192.168.122.1:domain
dnsmasq 2183 nobody 6u IPv4 23610 0t0 TCP 192.168.122.1:domain (LISTEN)
sshd 3456 root 3u IPv4 32140 0t0 TCP 192.168.100.106:ssh->192.168.100.103:62943 (ESTABLISHED)
sshd 3456 root 8u IPv6 32247 0t0 TCP localhost:6011 (LISTEN)
sshd 3456 root 9u IPv4 32248 0t0 TCP localhost:6011 (LISTEN)
rpcbind 3578 rpc 4u IPv6 15646 0t0 TCP *:sunrpc (LISTEN)
rpcbind 3578 rpc 5u IPv4 15647 0t0 TCP *:sunrpc (LISTEN)
rpcbind 3578 rpc 8u IPv4 33103 0t0 UDP *:sunrpc
rpcbind 3578 rpc 9u IPv4 33104 0t0 UDP *:785
rpcbind 3578 rpc 10u IPv6 33105 0t0 UDP *:sunrpc
rpcbind 3578 rpc 11u IPv6 33106 0t0 UDP *:785
[root@LVS ~]
#
- 使用-i 6仅获取IPv6流量
[root@LVS ~]# lsof -i 6
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root 46u IPv6 15646 0t0 TCP *:sunrpc (LISTEN)
chronyd 558 chrony 2u IPv6 16921 0t0 UDP localhost:323
dhclient 769 root 21u IPv6 20099 0t0 UDP *:tr-rsrb-port
cupsd 986 root 11u IPv6 22638 0t0 TCP localhost:ipp (LISTEN)
sshd 1245 root 4u IPv6 22292 0t0 TCP *:ssh (LISTEN)
sshd 3456 root 8u IPv6 32247 0t0 TCP localhost:6011 (LISTEN)
rpcbind 3578 rpc 4u IPv6 15646 0t0 TCP *:sunrpc (LISTEN)
rpcbind 3578 rpc 10u IPv6 33105 0t0 UDP *:sunrpc
rpcbind 3578 rpc 11u IPv6 33106 0t0 UDP *:785
- 仅显示TCP连接(同理可获得UDP连接)
[root@LVS ~]# lsof -iTCP
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root 46u IPv6 15646 0t0 TCP *:sunrpc (LISTEN)
systemd 1 root 47u IPv4 15647 0t0 TCP *:sunrpc (LISTEN)
cupsd 986 root 11u IPv6 22638 0t0 TCP localhost:ipp (LISTEN)
cupsd 986 root 12u IPv4 22639 0t0 TCP localhost:ipp (LISTEN)
sshd 1245 root 3u IPv4 22280 0t0 TCP *:ssh (LISTEN)
sshd 1245 root 4u IPv6 22292 0t0 TCP *:ssh (LISTEN)
dnsmasq 2183 nobody 6u IPv4 23610 0t0 TCP 192.168.122.1:domain (LISTEN)
sshd 3456 root 3u IPv4 32140 0t0 TCP 192.168.100.106:ssh->192.168.100.103:62943 (ESTABLISHED)
sshd 3456 root 8u IPv6 32247 0t0 TCP localhost:6011 (LISTEN)
sshd 3456 root 9u IPv4 32248 0t0 TCP localhost:6011 (LISTEN)
rpcbind 3578 rpc 4u IPv6 15646 0t0 TCP *:sunrpc (LISTEN)
rpcbind 3578 rpc 5u IPv4 15647 0t0 TCP *:sunrpc (LISTEN)
[root@LVS ~]
#
- 使用@host来显示指定到指定主机的连接
[root@LVS ~]# lsof -i@192.168.100.103
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 3456 root 3u IPv4 32140 0t0 TCP 192.168.100.106:ssh->192.168.100.103:62943 (ESTABLISHED)
[root@LVS ~]
# lsof -i@192.168.100.106 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME chronyd 558 chrony 3u IPv4 61445 0t0 UDP 192.168.100.106:51617->107.76.76.144.in-addr.arpa:ntp sshd 3456 root 3u IPv4 32140 0t0 TCP 192.168.100.106:ssh->192.168.100.103:62943 (ESTABLISHED)
[root@LVS ~]
#
- 使用@host:port显示基于主机与端口的连接
[root@LVS ~]# lsof -i@192.168.100.106:22
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 3456 root 3u IPv4 32140 0t0 TCP 192.168.100.106:ssh->192.168.100.103:62943 (ESTABLISHED)
[root@LVS ~]
#
- 找出监听端口
[root@LVS ~]# lsof -i -sTCP:LISTEN
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root 46u IPv6 15646 0t0 TCP *:sunrpc (LISTEN)
systemd 1 root 47u IPv4 15647 0t0 TCP *:sunrpc (LISTEN)
cupsd 986 root 11u IPv6 22638 0t0 TCP localhost:ipp (LISTEN)
cupsd 986 root 12u IPv4 22639 0t0 TCP localhost:ipp (LISTEN)
sshd 1245 root 3u IPv4 22280 0t0 TCP *:ssh (LISTEN)
sshd 1245 root 4u IPv6 22292 0t0 TCP *:ssh (LISTEN)
dnsmasq 2183 nobody 6u IPv4 23610 0t0 TCP 192.168.122.1:domain (LISTEN)
sshd 3456 root 8u IPv6 32247 0t0 TCP localhost:6011 (LISTEN)
sshd 3456 root 9u IPv4 32248 0t0 TCP localhost:6011 (LISTEN)
rpcbind 3578 rpc 4u IPv6 15646 0t0 TCP *:sunrpc (LISTEN)
rpcbind 3578 rpc 5u IPv4 15647 0t0 TCP *:sunrpc (LISTEN)
[root@LVS ~]
#
- 找出已建立的连接
[root@LVS ~]# lsof -i -sTCP:ESTABLISHED
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
chronyd 558 chrony 3u IPv4 61445 0t0 UDP 192.168.100.106:51617->107.76.76.144.in-addr.arpa:ntp
sshd 3456 root 3u IPv4 32140 0t0 TCP 192.168.100.106:ssh->192.168.100.103:62943 (ESTABLISHED)
[root@LVS ~]
#
- 使用-u显示指定用户打开了什么
[root@LVS ~]# lsof -u tomb
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 5365 tomb cwd DIR 8,1 4096 67146817 /root
bash 5365 tomb rtd DIR 8,1 4096 64 /
bash 5365 tomb txt REG 8,1 960392 100816322 /usr/bin/bash
bash 5365 tomb mem REG 8,1 61752 127376 /usr/lib64/libnss_files-2.17.so
bash 5365 tomb mem REG 8,1 106070960 67377229 /usr/lib/locale/locale-archive
bash 5365 tomb mem REG 8,1 2116736 127358 /usr/lib64/libc-2.17.so
bash 5365 tomb mem REG 8,1 19344 127364 /usr/lib64/libdl-2.17.so
bash 5365 tomb mem REG 8,1 174520 187237 /usr/lib64/libtinfo.so.5.9
bash 5365 tomb mem REG 8,1 155064 127351 /usr/lib64/ld-2.17.so
bash 5365 tomb mem REG 8,1 123267 33773547 /usr/share/locale/zh_CN/LC_MESSAGES/bash.mo
bash 5365 tomb mem REG 8,1 26254 100784447 /usr/lib64/gconv/gconv-modules.cache
bash 5365 tomb 0u CHR 136,0 0t0 3 /dev/pts/0
bash 5365 tomb 1u CHR 136,0 0t0 3 /dev/pts/0
bash 5365 tomb 2u CHR 136,0 0t0 3 /dev/pts/0
bash 5365 tomb 255u CHR 136,0 0t0 3 /dev/pts/0
[root@LVS ~]
#
- 杀死指定用户所做的一切事情
[root@LVS ~]# kill -9 `lsof -t -u tomb`
9.5 nskookup
功能:查dns信息
语法:
代码语言:javascript复制nslookup [-option] [name | -] [server]
实例:
代码语言:javascript复制 [root@LVS ~]# nslookup www.haopython.comServer: 192.168.1.1Address: 192.168.1.1#53Non-authoritative answer:Name: www.haopython.comAddress: 212.64.86.215[root@LVS ~]# nslookup > www.haopython.comServer: 192.168.1.1Address: 192.168.1.1#53Non-authoritative answer:Name: www.haopython.comAddress: 212.64.86.215> set q=mx> mail.haopython.com Server: 192.168.1.1Address: 192.168.1.1#53** server can't find mail.haopython.com: NXDOMAIN> mail.kzbd.cnServer: 192.168.1.1Address: 192.168.1.1#53Non-authoritative answer:mail.kzbd.cn canonical name = mail.mxhichina.com.Authoritative answers can be found from:mxhichina.com origin = dns1.hichina.com mail addr = hostmaster.hichina.com serial = 2018050200 refresh = 3600 retry = 1200 expire = 86400 minimum = 360> set q=any> haopython.comServer: 192.168.1.1Address: 192.168.1.1#53Non-authoritative answer:haopython.com nameserver = dns23.hichina.com.haopython.com nameserver = dns24.hichina.com.Authoritative answers can be found from:>
9.6 dig
功能:查询DNS包括NS记录,A记录,MX记录等相关信息的工具。
语法:
参数:
实例:
- 查找baidu.com的A记录:(此处一定是域而不是主机)
[root@LVS ~]# dig baidu.com A noall answer
; <<>> DiG 9.9.4-RedHat-9.9.4-37.el7 <<>> baidu.com A noall answer
;; global options: cmd
baidu.com. 93 IN A 220.181.38.148
baidu.com. 93 IN A 39.156.69.79
[root@LVS ~]
#
- 查找baidu.com MX记录的列表
[root@LVS ~]# dig baidu.com MX noall answer
; <<>> DiG 9.9.4-RedHat-9.9.4-37.el7 <<>> baidu.com MX noall answer
;; global options: cmd
baidu.com. 7200 IN MX 20 mx50.baidu.com.
baidu.com. 7200 IN MX 10 mx.maillb.baidu.com.
baidu.com. 7200 IN MX 20 mx1.baidu.com.
baidu.com. 7200 IN MX 20 jpmx.baidu.com.
baidu.com. 7200 IN MX 15 mx.n.shifen.com.
[root@LVS ~]
#
- 查找baidu.com的权威DNS
[root@LVS ~]# dig baidu.com NS noall answer
; <<>> DiG 9.9.4-RedHat-9.9.4-37.el7 <<>> baidu.com NS noall answer
;; global options: cmd
baidu.com. 69562 IN NS ns3.baidu.com.
baidu.com. 69562 IN NS ns7.baidu.com.
baidu.com. 69562 IN NS dns.baidu.com.
baidu.com. 69562 IN NS ns4.baidu.com.
baidu.com. 69562 IN NS ns2.baidu.com.
[root@LVS ~]
#
- 查询上面所有的记录
[root@LVS ~]# dig baidu.com ANY noall answer
; <<>> DiG 9.9.4-RedHat-9.9.4-37.el7 <<>> baidu.com ANY noall answer
;; global options: cmd
baidu.com. 418 IN A 39.156.69.79
baidu.com. 418 IN A 220.181.38.148
baidu.com. 67962 IN NS dns.baidu.com.
baidu.com. 67962 IN NS ns3.baidu.com.
baidu.com. 67962 IN NS ns7.baidu.com.
baidu.com. 67962 IN NS ns2.baidu.com.
baidu.com. 67962 IN NS ns4.baidu.com.
[root@LVS ~]
#
- 以使用AAAA的选项查询主机的IPv6 AAAA记录
[root@LVS ~]# dig www.baidu.com AAAA short
www.a.shifen.com.
- 精简模式快速输出
[root@LVS ~]# dig www.baidu.com short
www.a.shifen.com.
220.181.38.149
220.181.38.150
9.7 host
功能:host命令是常用的分析域名查询工具,可以用来测试域名系统工作是否正常。
语法:
代码语言:javascript复制host(选项)(参数)
参数:
代码语言:javascript复制-a 显示详细的DNS信息;
-c<类型> 指定查询类型,默认值为“IN“;
-C 查询指定主机的完整的SOA记录;
-r 在查询域名时,不使用递归的查询方式;
-t<类型> 指定查询的域名信息类型;
-v 显示指令执行的详细信息;
-w 如果域名服务器没有给出应答信息,则总是等待,直到域名服务器给出应答;
-W<时间> 指定域名查询的最长时间,如果在指定时间内域名服务器没有给出应答信息,则退出指令;
-4 使用IPv4;
-6 使用IPv6.
实例:
代码语言:javascript复制[root@LVS ~]# host www.haopython.com
www.haopython.com has address 212.64.86.215
[root@LVS ~]
# host -a www.haopython.com Trying "www.haopython.com" ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14075 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.haopython.com. IN ANY ;; ANSWER SECTION: www.haopython.com. 573 IN A 212.64.86.215 Received 51 bytes from 192.168.1.1#53 in 9 ms
[root@LVS ~]
#
9.8 traceroute
功能:信息从你的计算机到互联网另一端的主机是走的什么路径。
语法:
代码语言:javascript复制traceroute [ -46dFITnreAUDV ] [ -f first_ttl ] [ -g gate,... ] [ -i device ] [ -m max_ttl ] [ -N squeries ] [ -p port ] [ -t tos ] [ -l flow_label ] [ -w waittime ] [ -q nqueries ] [ -s src_addr ] [ -z sendwait ] [ --fwmark=num ] host [ packetlen ]
参数:
实例:
- 多命令使用(说明: -n 显示IP地址,不查主机名, -m 设置跳数 -q 4每个网关发送4个数据包 -w 把对外发探测包的等待响应时间设置为3秒)
[root@LVS ~]# traceroute -n -m 5 -q 4 -w 3 www.baidu.com
traceroute to www.baidu.com (220.181.38.149), 5 hops max, 60 byte packets
1 192.168.100.1 1.694 ms 4.476 ms 4.253 ms 4.041 ms
2 192.168.1.1 5.791 ms 7.691 ms 7.498 ms 7.276 ms
3 10.10.64.1 8.125 ms 8.125 ms 7.739 ms 7.509 ms
4 27.129.43.229 7.221 ms 8.176 ms 7.847 ms 7.635 ms
5 27.129.43.237 15.968 ms 16.080 ms 17.177 ms 16.976 ms
[root@LVS ~]
#
十、磁盘相关操作命令
10.1 mount
功能:用于挂载Linux系统外的文件。
语法:
代码语言:javascript复制 mount [-lhV]
mount -a [选项]
mount [选项] [--source] <源> | [--target] <目录>
mount [选项] <源> <目录>
mount <操作> <挂载点> [<目标>]
参数:
代码语言:javascript复制 -a, --all 挂载 fstab 中的所有文件系统
-c, --no-canonicalize 不对路径规范化
-f, --fake 空运行;跳过 mount(2) 系统调用
-F, --fork 对每个设备禁用 fork(和 -a 选项一起使用)
-T, --fstab <路径> /etc/fstab 的替代文件
-h, --help 显示此帮助并退出
-i, --internal-only 不调用 mount.<类型> 助手程序
-l, --show-labels 列出所有带有指定标签的挂载
-n, --no-mtab 不写 /etc/mtab
-o, --options <列表> 挂载选项列表,以英文逗号分隔
-O, --test-opts <列表> 限制文件系统集合(和 -a 选项一起使用)
-r, --read-only 以只读方式挂载文件系统(同 -o ro)
-t, --types <列表> 限制文件系统类型集合
--source <源> 指明源(路径、标签、uuid)
--target <目标> 指明挂载点
-v, --verbose 打印当前进行的操作
-V, --version 显示版本信息并退出
-w, --rw, --read-write 以读写方式挂载文件系统(默认)
-h, --help 显示此帮助并退出
-V, --version 输出版本信息并退出
源:
-L, --label <标签> 同 LABEL=<label>
-U, --uuid <uuid> 同 UUID=<uuid>
LABEL=<标签> 按文件系统标签指定设备
UUID=<uuid> 按文件系统 UUID 指定设备
PARTLABEL=<标签> 按分区标签指定设备
PARTUUID=<uuid> 按分区 UUID 指定设备
<设备> 按路径指定设备
<目录> 绑定挂载的挂载点(参阅 --bind/rbind)
<文件> 用于设置回环设备的常规文件
操作:
-B, --bind 挂载其他位置的子树(同 -o bind)
-M, --move 将子树移动到其他位置
-R, --rbind 挂载其他位置的子树及其包含的所有挂载
--make-shared 将子树标记为 共享
--make-slave 将子树标记为 从属
--make-private 将子树标记为 私有
--make-unbindable 将子树标记为 不可绑定
--make-rshared 递归地将整个子树标记为 共享
--make-rslave 递归地将整个子树标记为 从属
--make-rprivate 递归地将整个子树标记为 私有
--make-runbindable 递归地将整个子树标记为 不可绑定
实例:
- 将 /dev/hda1 挂在 /mnt 之下。
mount /dev/hda1 /mnt
- 将 /dev/hda1 用唯读模式挂在 /mnt 之下。
mount -o ro /dev/hda1 /mnt
- 将 /tmp/image.iso 这个光碟的 image 档使用 loop 模式挂在 /mnt/cdrom之下。用这种方法可以将一般网络上可以找到的 Linux 光 碟 ISO 档在不烧录成光碟的情况下检视其内容。
mount -o loop /tmp/image.iso /mnt/cdrom
10.2 umount
功能:卸除文件系统。
语法:
代码语言:javascript复制umount [-ahnrvV][-t <文件系统类型>][文件系统]
参数:
代码语言:javascript复制-a 卸除/etc/mtab中记录的所有文件系统。
-h 显示帮助。
-n 卸除时不要将信息存入/etc/mtab文件中。
-r 若无法成功卸除,则尝试以只读的方式重新挂入文件系统。
-t<文件系统类型> 仅卸除选项中所指定的文件系统。
-v 执行时显示详细的信息。
-V 显示版本信息。
[文件系统] 除了直接指定文件系统外,也可以用设备名称或挂入点来表示文件系统。
实例:
- 分别通过设备名和挂载点卸载文件系统,同时输出详细信息
# umount -v /dev/sda1 通过设备名卸载
/dev/sda1 umounted
# umount -v /mnt/mymount/ 通过挂载点卸载
/tmp/diskboot.img umounted
- 如果设备正忙,卸载即告失败。卸载失败的常见原因是,某个打开的shell当前目录为挂载点里的某个目录:
#umount -v /mnt/mymount/
umount: /mnt/mymount: device is busy
umount: /mnt/mymount: device is busy
10.3 fsck
功能:命令用于 检查与修复 Linux 档案系统,可以同时检查一个或多个 Linux 档案系统。
语法:
代码语言:javascript复制fsck [-sACVRP] [-t fstype] [--] [fsck-options] filesys [...]
参数:
代码语言:javascript复制filesys : device 名称(eg./dev/sda1),mount 点 (eg. / 或 /usr)
-t : 给定档案系统的型式,若在 /etc/fstab 中已有定义或 kernel 本身已支援的则不需加上此参数
-s : 依序一个一个地执行 fsck 的指令来检查
-A : 对/etc/fstab 中所有列出来的 partition 做检查
-C : 显示完整的检查进度
-d : 列印 e2fsck 的 debug 结果
-p : 同时有 -A 条件时,同时有多个 fsck 的检查一起执行
-R : 同时有 -A 条件时,省略 / 不检查
-V : 详细显示模式
-a : 如果检查有错则自动修复
-r : 如果检查有错则由使用者回答是否修复
实例:
- 自动修复
[root@LVS ~]# fsck -y /dev/sda1
fsck,来自 util-linux 2.23.2
/sbin/fsck.xfs: XFS file system.
[root@LVS ~]
#
10.4 dd
功能: 转换或复制文件
用于读取、转换并输出数据。
dd可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出。
语法:
代码语言:javascript复制dd [操作数] ...
或:dd 选项
参数:
代码语言:javascript复制Copy a file, converting and formatting according to the operands.
bs=BYTES read and write up to BYTES bytes at a time
cbs=BYTES convert BYTES bytes at a time
conv=CONVS convert the file as per the comma separated symbol list
count=N copy only N input blocks
ibs=BYTES read up to BYTES bytes at a time (default: 512)
if=FILE read from FILE instead of stdin
iflag=FLAGS read as per the comma separated symbol list
obs=BYTES write BYTES bytes at a time (default: 512)
of=FILE write to FILE instead of stdout
oflag=FLAGS write as per the comma separated symbol list
seek=N skip N obs-sized blocks at start of output
skip=N skip N ibs-sized blocks at start of input
status=LEVEL The LEVEL of information to print to stderr;
'none' suppresses everything but error messages,
'noxfer' suppresses the final transfer statistics,
'progress' shows periodic transfer statistics
N and BYTES may be followed by the following multiplicative suffixes:
c =1, w =2, b =512, kB =1000, K =1024, MB =1000*1000, M =1024*1024, xM =M
GB =1000*1000*1000, G =1024*1024*1024, and so on for T, P, E, Z, Y.
Each CONV symbol may be:
ascii from EBCDIC to ASCII
ebcdic from ASCII to EBCDIC
ibm from ASCII to alternate EBCDIC
block pad newline-terminated records with spaces to cbs-size
unblock replace trailing spaces in cbs-size records with newline
lcase change upper case to lower case
ucase change lower case to upper case
sparse try to seek rather than write the output for NUL input blocks
swab swap every pair of input bytes
sync pad every input block with NULs to ibs-size; when used
with block or unblock, pad with spaces rather than NULs
excl fail if the output file already exists
nocreat do not create the output file
notrunc 不截断输出文件
noerror 读取数据发生错误后仍然继续
fdatasync 结束前将输出文件数据写入磁盘
fsync 类似上面,但是元数据也一同写入
FLAG 符号可以是:
append 追加模式(仅对输出有意义;隐含了conv=notrunc)
direct 使用直接I/O 存取模式
directory 除非是目录,否则 directory 失败
dsync 使用同步I/O 存取模式
sync 与上者类似,但同时也对元数据生效
fullblock 为输入积累完整块(仅iflag)
nonblock 使用无阻塞I/O 存取模式
noatime 不更新存取时间
nocache 丢弃缓存数据
noctty 不根据文件指派控制终端
nofollow 不跟随链接文件
count_bytes treat 'count=N' as a byte count (iflag only)
skip_bytes treat 'skip=N' as a byte count (iflag only)
seek_bytes treat 'seek=N' as a byte count (oflag only)
Sending a USR1 signal to a running 'dd' process makes it
print I/O statistics to standard error and then resume copying.
$ dd if=/dev/zero of=/dev/null& pid=$!
$ kill -USR1 $pid; sleep 1; kill $pid
18335302 0 records in
18335302 0 records out
9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s
实例:
- 制作系统盘
[root@LVS ~]# dd if=boot.img of=/dev/fd0 bs=1440k
- 将testfile文件中的所有英文字母转换为大写,然后转成为testfile_1文件
[root@LVS ~]# cat testfile HELLO LINUX! Linux is a free unix-type opterating system. This is a linux testfile! Linux test [root@LVS ~]# dd if=testfile of=testfile_1 conv=ucase记录了0 1 的读入记录了0 1 的写出102字节(102 B)已复制,0.0003327 秒,307 kB/秒[root@LVS ~]# cat testfiletestfile testfile_1 [root@LVS ~]# cat testfile_1HELLO LINUX! LINUX IS A FREE UNIX-TYPE OPTERATING SYSTEM. THIS IS A LINUX TESTFILE! LINUX TEST [root@LVS ~]#
- 由标准输入设备读入字符串,并将字符串转换成大写后,再输出到标准输出设备
[root@LVS ~]# dd conv=ucase
mytest
MYTEST
记录了0 1 的读入
记录了0 1 的写出
7字节(7 B)已复制,5.3222 秒,0.0 kB/秒
10.5 fdisk
功能:磁盘分区命令,适用于 2TB以下磁盘分区。
语法:
代码语言:javascript复制fdisk [必要参数][选择参数]
参数:
代码语言:javascript复制必要参数:
-l 列出素所有分区表
-u 与"-l"搭配使用,显示分区数目
选择参数:
-s<分区编号> 指定分区
-v 版本信息
菜单操作说明
m :显示菜单和帮助信息
a :活动分区标记/引导分区
d :删除分区
l :显示分区类型
n :新建分区
p :显示分区信息
q :退出不保存
t :设置分区号
v :进行分区检查
w :保存修改
x :扩展应用,高级功能
实例:
- 显示当前分区情况
[root@localhost ~]# fdisk -l
磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000c72ed
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 83886079 40893440 8e Linux LVM
磁盘 /dev/mapper/cl-root:39.7 GB, 39720058880 字节,77578240 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/mapper/cl-swap:2147 MB, 2147483648 字节,4194304 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
- 显示SCSI硬盘的每个分区情况
[root@localhost ~]# fdisk -lu
磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000c72ed
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 83886079 40893440 8e Linux LVM
磁盘 /dev/mapper/cl-root:39.7 GB, 39720058880 字节,77578240 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/mapper/cl-swap:2147 MB, 2147483648 字节,4194304 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
[root@localhost ~]
#