LINUX常用100条命令总结【三】

2021-09-13 14:36:45 浏览数 (1)

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占用情况)
代码语言:javascript复制
[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显示所有连接
代码语言:javascript复制
[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流量
代码语言:javascript复制
[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连接)
代码语言:javascript复制
[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来显示指定到指定主机的连接
代码语言:javascript复制
[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显示基于主机与端口的连接
代码语言:javascript复制
[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 ~]

#

  • 找出监听端口
代码语言:javascript复制
[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 ~]

#

  • 找出已建立的连接
代码语言:javascript复制
[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显示指定用户打开了什么
代码语言:javascript复制
[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 ~]

#

  • 杀死指定用户所做的一切事情
代码语言:javascript复制
[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#53​Non-authoritative answer:Name:   www.haopython.comAddress: 212.64.86.215​[root@LVS ~]# nslookup > www.haopython.comServer:     192.168.1.1Address:    192.168.1.1#53​Non-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#53​Non-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#53​Non-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记录:(此处一定是域而不是主机)
代码语言:javascript复制
[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记录的列表
代码语言:javascript复制
[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
代码语言:javascript复制
[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 ~]

#

  • 查询上面所有的记录
代码语言:javascript复制
[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记录
代码语言:javascript复制
[root@LVS ~]# dig www.baidu.com AAAA  short
www.a.shifen.com.
  • 精简模式快速输出
代码语言:javascript复制
[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秒)
代码语言:javascript复制
[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 之下。
代码语言:javascript复制
mount /dev/hda1 /mnt
  • 将 /dev/hda1 用唯读模式挂在 /mnt 之下。
代码语言:javascript复制
mount -o ro /dev/hda1 /mnt
  • 将 /tmp/image.iso 这个光碟的 image 档使用 loop 模式挂在 /mnt/cdrom之下。用这种方法可以将一般网络上可以找到的 Linux 光 碟 ISO 档在不烧录成光碟的情况下检视其内容。
代码语言:javascript复制
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 显示版本信息。
[文件系统] 除了直接指定文件系统外,也可以用设备名称或挂入点来表示文件系统。

实例:

  • 分别通过设备名和挂载点卸载文件系统,同时输出详细信息
代码语言:javascript复制
# umount -v /dev/sda1          通过设备名卸载  
/dev/sda1 umounted  
# umount -v /mnt/mymount/      通过挂载点卸载  
/tmp/diskboot.img umounted 
  • 如果设备正忙,卸载即告失败。卸载失败的常见原因是,某个打开的shell当前目录为挂载点里的某个目录:
代码语言:javascript复制
#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 : 如果检查有错则由使用者回答是否修复

实例:

  • 自动修复
代码语言:javascript复制
[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

实例:

  • 制作系统盘
代码语言:javascript复制
[root@LVS ~]# dd if=boot.img of=/dev/fd0 bs=1440k
  • 将testfile文件中的所有英文字母转换为大写,然后转成为testfile_1文件
代码语言:javascript复制
 [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 ~]# 
  • 由标准输入设备读入字符串,并将字符串转换成大写后,再输出到标准输出设备
代码语言:javascript复制
[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 :扩展应用,高级功能

实例:

  • 显示当前分区情况
代码语言:javascript复制
[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硬盘的每个分区情况
代码语言:javascript复制
[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 ~]

#

0 人点赞