fsck 磁盘检测工具。
-A将/etc/fstab内的设备扫描一次。这个是默认选项。在开机过程中就会执行此命令。
-a 自动修复有问题的扇区,不提示按y
-y 和-a类似,只是有的文件系统只支持-y。
-f 强制检查,默认情况下,当文件系统标记为clean时,是不会进行检查的。
-D 优化目录结构。
-C 显示检测进度
在进行fsck扫描时,应该先卸载分区,然后再扫描。如果在挂载的磁盘上扫描,很容易造成文件系统损坏。
badblocks 检查读取或写入来检查磁盘。-sv显示进行的进度。-w执行写入检查,通常不用。
mount 挂载 注意挂载设备与挂载目录存在一一对应关系,一个设备如果同时挂载在多个目录,命令上虽然是允许的,但是不建议这样做。同样,如果一个目录同时挂载到两个设备,那么后面挂载的将会覆盖前面挂载的设备。其实也就是一个目录同时只能挂载一个设备。
mount -a 将/etc/fstab中所有未挂载的设备全部挂载上来。
mount -l 列出卷标,默认用mount只显示所有挂载设备。如
[root@rhel6 sjb]# mount -l
/dev/sda5 on / type ext4 (rw)
/dev/sdb6 on /media/sdb6 type ext2 (rw) [winshare]
像这后面的winshare就是卷标,这个卷标在我们前面用mke2fs分区的时候,用-L命令来指定的,如下:
[root@rhel6 media]# mount -L winshare /media/sdb6
[root@rhel6 media]# ls /media/sdb6
lost+found ls
mount -t 指定挂载的文件系统类型,默认情况下,系统会自动根据id号来判断挂载的类型。有些挂载类型系统不能自动识别,就可以用-t来手动指定。如当我们挂载/dev/sdb6时,默认是ext2,可以指定为ext4来mount。
[root@rhel6 media]# df -hT
文件系统 类型 容量 已用 可用 已用%% 挂载点
/dev/sdb6 ext2 3.8G 3.4M 3.7G 1% /media/sdb6
[root@rhel6 media]# mount -t ext4 /dev/sdb6 /media/sdb6
[root@rhel6 media]# df -hT
文件系统 类型 容量 已用 可用 已用%% 挂载点
/dev/sdb6 ext4 3.8G 3.4M 3.7G 1% /media/sdb6
mount -n 不写入到/etc/mtab表中。默认情况是写入的。如果我们用-n选项之后,会发现用mount 命令不会显示该磁盘已经挂载的信息,因为mount实际就是读取/etc/mtab里面的内容。但实际上该磁盘却已经挂载了!这时候卸载磁盘时,我们要用umount /dev/sdb6 /media/sdb6 才可以,而不是umount /dev/sdb6,这样是卸载不掉的!
[root@rhel6 media]# mount -n /dev/sdb6 /media/sdb6
[root@rhel6 media]# ls sdb6
lost+found ls
[root@rhel6 media]# mount
/dev/sda5 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,rootcontext=”system_u:object_r:tmpfs_t:s0″)
/dev/sda1 on /boot type ext4 (rw)
/dev/sda2 on /home type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
/dev/sdb5 on /media/sdb5 type vfat (rw)
/dev/sdb1 on /media/sdb1 type ext4 (rw)
可以看到,sdb6已经不在mount的队列里面了。
[root@rhel6 media]# umount /dev/sdb6
umount: /dev/sdb6: not mounted
[root@rhel6 media]# ls /media/sdb6
lost+found ls
可以看到,只用umount /dev/sdb6是卸载不掉的,而不加n的挂载这样可以卸载。
[root@rhel6 media]# umount /dev/sdb6 /media/sdb6
umount: /dev/sdb6: not mounted
[root@rhel6 media]# ls sdb6
可以看到,/media/sdb6下面已经没有文件了,证明已经卸载掉了。这时候才可以重新挂载!
mount -o 后面可接很多选项。
如ro代表只读,rw可读写,默认是rw。
auto代表可被mount -a 自动挂载;noauto代表不能自动挂载。默认参数为auto。注意:这里mount -a 自动挂载是读取的/etc/fstab里面的内容,所以如果在/etc/fstab里面不存在该磁盘挂载信息,auto选项就无意义了。
suid支持suid文件,nosuid不支持suid文件。默认为suid。
exec允许运行可执行文件,noexec不允许可执行文件运行。默认exec。这个我觉得挺好,相当于windows下面不允许可执行文件执行。
dev允许建立装置档,nodev,不允许建立装置档,默认dev。
user允许分区上任何人执行mount,nouser只用root能够mount。默认nouser。
下面实验一下:
1,ro,rw
[root@rhel6 media]# echo “/media/sdb6 /dev/sdb6 ext4 defaults 0 0”>>/etc/fstab
[root@rhel6 media]# umount /dev/sdb6
[root@rhel6 media]# mount -o ro /dev/sdb6
[root@rhel6 media]# touch sdb6/abcd
touch: 无法创建”sdb6/abcd”: 只读文件系统
[root@rhel6 media]# umount /dev/sdb6
[root@rhel6 media]# mount -a
[root@rhel6 media]# touch sdb6/abcd
[root@rhel6 media]# ls sdb6/
abcd lost+found ls test
首先我们将挂载信息写到/etc/fstab表中,这样以后挂载的时候就不用去指定挂载目录了。当我们用ro时,显示只读。用默认选项重新挂载,就为rw了。
2,auto,noauto
[root@rhel6 media]# cat /etc/fstab |grep /dev/sdb6
/dev/sdb6 /media/sdb6 ext4 defaults 0 0
[root@rhel6 media]# mount |grep /dev/sdb6
[root@rhel6 media]# mount -a
[root@rhel6 media]# mount |grep /dev/sdb6
/dev/sdb6 on /media/sdb6 type ext4 (rw)
可以看到,mount -a 自动挂载成功。我们改为noauto.
[root@rhel6 media]# echo “/dev/sdb6 /media/sdb6 ext4 noauto 0 0”>>/etc/fstab
[root@rhel6 media]# cat /etc/fstab |grep /dev/sdb6
/dev/sdb6 /media/sdb6 ext4 noauto 0 0
[root@rhel6 media]# umount /dev/sdb6
[root@rhel6 media]# mount -a
[root@rhel6 media]# mount |grep /dev/sdb6
[root@rhel6 media]# ls sdb6
可以看到,这时候用mount -a并没有自动挂载!
3,suid,nosuid
[root@rhel6 media]# chattr +i sdb6/test
[root@rhel6 media]# lsattr sdb6/test
—-i———- sdb6/test
4,exec,noexec
[root@rhel6 media]# mount -o noexec /dev/sdb6 /media/sdb6
[root@rhel6 media]# echo “echo abc”>sdb6/test
[root@rhel6 media]# chmod 777 sdb6/test
[root@rhel6 media]# ./sdb6/test
bash: ./sdb6/test: 权限不够
[root@rhel6 media]# umount /dev/sdb6
[root@rhel6 media]# mount /dev/sdb6 /media/sdb6
[root@rhel6 media]# ./sdb6/test
abc
可以看到,加上了noexec后,就无法执行文件了。