本节书摘来自异步社区《循序渐进linux(第2版) 基础知识 服务器搭建 系统管理 性能调优 虚拟化与集群应用》一书中的第4章,第4.5节,作者:高俊峰著,更多章节内容可以访问云栖社区“异步社区”公众号查看
4.5.1 df命令
1.功能说明
df命令用来检查linux系统的磁盘空间占用情况。其格式如下。
<code>df [选项]</code>
df命令的选项及其说明如表4.34所示。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLmRjYyU2Y5ITN5MjZ0UWYyQ2YzEGZidDNiFWN3cDNwE2MyQGZwMmM28CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.png)
2.举例
1)查看当前系统磁盘分区情况,并显示文件系统类型,人性化输出。
从上面的输出可以看出,每个文件系统分区的总大小、已经使用大小、剩余大小和占用的百分比等,还可以看出,上面的系统使用了ext3、ext4、tmpfs和xfs这4种类型的文件系统。
关于文件系统的概念,后面章节有详细讲述。
2)输出文件系统的inode信息。
4.5.2 du命令
du命令用来显示文件或目录所占用的磁盘空间情况。其格式如下。
<code>du [选项] 文件或目录</code>
du命令的选项及其说明如表4.35所示。
1)要显示当前目录下所有文件的大小,使用以下命令。
2)要显示当前linux系统/etc目录的总大小,使用以下命令。
4.5.3 fsck命令
fsck命令用来检查文件系统并尝试修复错误。其格式如下。
<code>fsck [选项] [-t <文件系统类型>] [设备名]</code>
fsck命令的选项及其说明如表4.36所示。
“-t <文件系统类型>”是指定要检查的文件系统类型。
注意
在执行fsck命令修复某个文件系统时,这个文件系统对应的磁盘分区一定要处于卸载状态,磁盘分区在挂载状态下进行修复是极为不安全的,数据可能遭到破坏,也有可能损坏磁盘。
检查并尝试修复出问题的磁盘分区/dev/sda10,在执行修复时进行询问,让用户得以确认并决定处理方式,显示详细修复过程。
从上面可以看出,fsck在修复文件系统的时候其实调用了/sbin/fsck.ext3命令。fsck修复经历了5个步骤的检查,中间如果发现需要修复的,就会提示用户是否修复,按y键进行修复,按其他任意键跳过修复。
当fsck命令执行时,fsck如果发现存在没有文件系统依赖的文件或者目录,就会提示用户是否把它们找回来,因为这些没有文件系统依赖的文件或者目录对用户来说是看不到的,也就无法使用,一般是由文件系统内部结构损坏导致的。如果用户同意找回,也就是上面说的按y键,fsck命令就会把这些孤立的文件或者目录放到lost+found目录下,并用这些文件自己对应的i-node号来命名,以便用户查找自己丢失的文件。lost+found的字面意思就是丢失并找回的含义。
因此当用户在利用fsck命令修复磁盘分区以后,如果发现分区中有文件丢失,就可以到对应的lost+found目录中去查找。由于此时通过文件名称已经无法分辨文件,因此可以利用file命令查看文件系统类型,进而判断哪个是需要的文件。
4.5.4 sync命令
功能说明
sync命令用来强制把内存中的数据写回硬盘,以免数据的丢失。其格式如下。
<code>sync</code>
需要说明的是:在linux系统中,修改过的操作会缓存到内存中,不会马上写入硬盘,等待适当的时候再从内存写入磁盘,这样可以提高系统读写效率。linux下默认每隔3秒系统自动执行一次sync操作,系统正常关机时也会执行sync操作,保证所有操作全部从内存写入磁盘。如果非法关机,系统内存信息无法及时同步到硬盘,就会造成数据丢失或者文件损坏,由此可见,linux系统中正常关机是非常重要的。
4.5.5 eject命令
eject命令用来退出抽取式设备,如光驱或者磁带。如果该设备已经挂载,则eject先将设备卸载,然后再退出设备。其格式如下。
<code>eject [选项] 设备名</code>
eject命令的选项及其说明如表4.37所示。
1)要显示当前系统中软盘、光盘和磁带的相应设备文件路径,使用以下命令。
2)要卸载linux系统的/tmp分区,使用以下命令。
<code>[root@mylinux ~]#eject /tmp</code>
4.5.6 mount/umount命令
挂载以及卸载指定的文件系统。在第3章我们曾经讲述过mount/umount命令,这里再深入讲述mount/umount的使用。
mount命令的选项及其说明如表4.38所示。
1)-l<标签>:标签其实就是磁盘分区标识的别名,标签可以随便起名,这样便于记忆,在linux下磁盘分区的设备名比较难记,利用标签代替设备名,简单易记。
2)-o<选项>:指定加载文件系统时的选项,这些选项如下。
async:以非同步的方式执行文件系统的输入、输出动作。
atime:每次存取都更新inode的存取时间,默认设置,取消选项为noatime。
auto:必须在/etc/fstab文件中指定此选项。指定-a选项时,会加载设置为auto的设备,取消选项为noauto。
dev:可读文件系统上的字符或块设备,取消选项为nodev。
exec:可执行二进制文件,取消选项为noexec。
noatime:每次存取时不更新inode的存取时间。
noauto:加入此选项,就无法使用-a选项来加载。
nodev:不读文件系统上的字符或块设备。
noexec:无法执行二进制文件。
nosuid:关闭set-user-identifier(设置用户id)与set-group-identifer(设置组id)设置位。
nouser:使用户无法执行加载操作,默认设置。
iocharset=xxx:指定mount分区时使用的字符集。
codepage=xxx:指定mount分区时使用的内码表。
remount:重新加载设备。通常用于改变设备的设置状态。
ro:以只读模式加载。
rw:以可读写模式加载。
suid:启动set-user-identifier(设置用户id)与set-group-identifer(设置组id)设置位,取消选项为nosuid。
sync:以同步方式执行文件系统的输入、输出动作。
user:可以让一般用户加载设备。
defaults:使用默认选项。默认选项为rw、suid、dev、exec、anto、nouser与async。
3)-t<文件系统类型>:指定设备的文件系统类型,常用选项如下。
ext3/ext2:linux目前的常用文件系统。
msdos:ms-dos的fat。
vfat:windows 95/98的vfat。
nfs:网络文件系统。
iso9660:cd-rom光盘的标准文件系统。
ntfs:windows nt的文件系统。
4)设备名:硬盘分区在linux上的设备标识,类似于/dev/sda1、/dev/hda2等。
5)挂载点:linux系统下指定的某个目录。
1)将光盘镜像文件挂载到linux系统下。
<code>[root@localhost/]#mount-o loop -t iso9660 /iso/centos-7-x86_64-dvd-1503-01.iso /ixdba</code>
在windows下访问iso镜像文件需要虚拟光驱等第三方软件,而在linux系统下光盘镜像文件可以直接通过挂载的方式实现读取。
这里的“loop”选项表示把一个镜像文件当成硬盘分区挂接到系统,“-t”指定镜像文件的类型为iso9660,也就是光盘的标准文件系统。“/iso/centos-7-x86_64-dvd-1503-01.iso”表示镜像文件的路径,而“/ixdba”表示挂载点,挂载成功后就可以通过/ixdba目录访问镜像文件的内容了。
2)windows+linux双系统并存环境,将windows下的d盘挂载到linux下的/mnt/d目录下,并且支持中文,使用以下命令。
<code>[root@localhost/]#mount -t vfat -ocodepage=936,iocharset=cp936 /dev/hda3 /mnt/d</code>
上面的命令中,“-t vfat”选项表示需要挂载的d盘是fat格式的文件系统;“-o”后面的选项指定了分区挂载后支持中文显示;“/dev/hda3”是windows下的d盘在linux下的硬件标识;“/mnt/d”是linux系统上指定的挂载点,挂载成功就可以通过访问linux下的/mnt/d目录来访问windows下的d盘内容了。
3)在一台linux系统上以只读方式挂载另一台linux系统上共享的分区,也就是我们以后要深入讲述的网络文件系统(network filesystem,nfs),使用以下命令。
<code>[root@localhost/]#mount-t nfs -o ro192.168.60.133:/home/ixdba /mnt/nfs</code>
上面的命令中,“-t nfs”指定挂载的文件系统类型是nfs;“-o ro”指定以只读方式挂载;“192.168.60.133:/home/ixdba”表示将ip地址为“192.168.60.133”的另外一台linux系统中的/home/ixdba目录共享;“/mnt/nfs”指定在本机linux系统上的挂载点。