一、磁盘管理
1、 机械式硬盘:
U盘、光盘、软盘、硬盘、磁带
2、 格式化:(Partition) 创建文件系统
MBR:主引导记录 (512byte)
Master Boot Record
Main Boot Record
446bye:BootLoader, 是一个程序。引导加载器
64bytes:
16bytes:标识一个分区
2bytes:Magic Number
标记MBR是否有效。
3、硬连接和符号连接
硬连接:是指两个存储块指向一个引导号
符号连接:(又叫软连接)是指一个文件指向另外一个文件
创建连接 :ln [-s -v] SRC (源文件) DEST(目标文件)
ln SRC DEST 硬连接
ln -s SRC DEST 软连接
硬链接特点:
1、只能对文件创建,不能应用于目录;
2、不能跨文件系统;
3、创建硬链接会增加文件被链接的次数;
符号链接:
1、可应用于目录;
2、可以跨文件系统;
3、不会增加被链接文件的链接次数;
4、其大小为指定的路径所包含的字符个数;
du:
-s 查看文件的大小
-sh 查看目录的总容量
df : 显示整个磁盘的分区情况
df -p -i
二、设备文件
b:块设备 按块为单位,随机访问的设备 (硬盘)
c:字符设备 按字符为单位,线性设备 (键盘)
/dev
主设备号:(major number) 标识设备类型
次设备号:(minor number) 标识同一种类型中不同设备
mknod
mknod [OPTION]... NAME TYPE [MAJOR MINOR]
-m MODE
硬盘设备的设备文件名:
IDE,ATA: hd
SATA:sd
SCSI:sd
USB:sd
a,b,c,... 来区别同一类型下的不同设备
IDE:
第一个IDE口:主、从
/dev/hda , /dev/hdb
第二个IDE口:主、从
/dev/hdc , /dev/hdd
hda:
hda1:第一个分区
hda2:第二个分区
hda3:第三个分区
hda4:
hda5:第一个逻辑分区
查看当前系统识别了几块硬盘: fdisk -l [/dev/to/some_device_file]
三、Linux支持的文件系统
1、管理磁盘分区:
fdisk /dev/sda
p:显示当前硬件的分区,包括没有保存的改动
n:创建新分区
e:扩展分区
p:主分区
d:删除一个分区
w:保存退出
q:不保存退出
t:修改分区类型
L:
l:显示所有支持的所有类型
2、文件系统管理
格式化分区:重新创建文件系统会损坏原有文件
mkfs:make file systemc
-t FSTYPE
文件系统类型:
ext2
ext3
cat /proc/filesystems:查看当前内核所支持文件系统类型:
3、专门管理ext系列文件:
mke2fs:
-j:创建ext3 类型文件系统
-b BLOCK_SIZE : 指定块大小,默认为 4096 可以取值为 1024 或2048或4096
-L LABEL:指定分区卷标
-m # :指定预留给超级用户的块数百分比
- i #:用于指定为多少字节的空间创建一个 inode 默认为 8192 ,这里给出的数值应该为块大小的2^n 倍。
-N :指定inode个数;
-F :强制创建文件系统
-E:用户指定额外文件系统属性;
4、blkid:查询或查看磁盘设备的相关属性
UUID
TYPE
LABEL :查看卷标
e2label :用于查看或定义卷标
e2label 设备文件 卷标 :设定卷标
5、tune2fs:调整文件系统的相关属性
-j:不损害原有数据,将ext2 升级为ext3;
-L LABEL:设定或修改卷标
-m # :调整预留百分比
-r # :指定预留多少块
-o :设定默认挂载选项;
-c # :指定挂载次数达到#次之后进行自检, 0或-1 表示关闭此功能
-i # :每挂载使用多少天后进行自检,0或-1 表示关闭此功能
-l: 显示超级块中的信息;
dumpe2fs:显示文件属性信息
-h :只显示超级块的信息
fsck :检查并修复Linux文件系统
-t FSTYPE :指定文件系统类型
-a :自动修复
e2fsck :专用于修复ext2/ext3 文件系统
-f :强制检查;
-p:自动修复
四、挂载与卸载
挂载:将新的文件系统关联至当前根文件系统
卸载:将新的文件系统从当前根文件系统中移除。
mount:挂载
mount 设备 挂载点
设备:
设备文件: /dev/sda5
卷标:LABEL=“”
UUID: UUID=“”
挂载点:目录
1、此目录没有被其他进程使用
2、目录得事先存在
3、目录中的原有的文件将会被暂时隐藏。
mount:显示当前系统已经挂载的设备及挂载点
mount [options] [-o options] DEVICE MOUNT_POINT
-a:表示挂载/etc/fstab文件中定义的所有文件系统
-n:默认情况下,mount命令每挂载一个设备,都会把挂载的设备信息保存至/etc/mtab文件;使用-n选项意味着挂载设备时,不把信息写入此文件。
-t FSTYPE:指定正在挂载设备上的文件系统的类型;不适用此选项事, mount会调用blkid命令获取对应文件系统的类型;
-r:只读挂载,挂载光盘时,常用此选项。
-w:读写挂载,一般默认是读写挂载
-o:指定额外的挂载选项,也既指定文件系统启用的属性;
remount:重新挂载当前文件系统
ro:挂载为只读
rw:读写挂载
挂载完成后,要通过挂载点访问对应文件系统上的文件。
umount:卸载某文件系统
umount 设备
umount 挂载点
卸载注意事项:
挂载的设备没有进程使用;
练习题:
1、调整其预留百分比为3%
tune2fs -m 3 -L DATA /dev/sda7
2、以重新挂载的方式挂载此文件系统为不更新访问时间戳,并验证其效果
stat /backup/inittab
cat /backup/inittab
stat
mount -o remount,noatime /backup
cat
stat
3、对此文件系统强行做一次检测
e2fsck -f /dev/sda7
4、删除复制而来的所有文件,并将此文件系统重新挂载为同步(sync);而后在此复制/etc目录中的所有文件至此挂载点,体验其性能变化:
rm -rf /dev/sda7
mount -o remount,sync /backup
cp -r /etc/* /backup
五、swap分区
free -m
fdisk命令中,调整分区类型为82:
创建交换分区:
mkswap /dev/sda8
-L LABEL
swapon /dev/sda8 :启用这个分区的swap
swapoff /dev/sda8 :停用这个分区的swap
回环设备:
loopback:使用软件来模拟实现硬件
dd命令:转化并复制一个文件
if=输入数据的来源
of=数据存储目标
bs-1
count=2
seek=# :创建数据文件时,跳过的空间大小;
dd if=/dev/sad of=/mnt/usb/mbr.backup bs=512 count=1
dd if =/mnt/usb/mbr.backup of=/dev/sda bs=512 count=1
cat /dev/cdrom > /root/rhe15.iso 制作镜像
mount命令:可以挂载iso镜像:
mount DEVICE MOUNT_POINT
-o loop: 挂载本地回环设备,因此可以挂载镜像
mount /dev/sda5 /mnt/test
文件系统的配置文件: /etc/fstab
os在初始时,会自动挂载此文件中定义的每个文件系统
要挂载的设备 挂载点 文件系统类型 挂载选项 转储频率(每多少天做一次完全备份) 文件系统检测次序(只有根可以为1,0表示不检查)
/dev/sda5 /mnt/test ext3 defaults 0 0
mount -a :挂载/etc/fstab 文件中定义的所有文件系统
fuser:验证进程正在使用的文件或套接字文件
-v:查看某文件上正在运行的进程
-k:
-m
fuser -km MOUNT_POINT :终止正在访问此挂载点的所有进程。
练习:
1、创建一个5G的分区,文件系统为ext3,卷标为MYDATA,块大小为 1024,预留管理空间为磁盘分区的3%,要求开机后可以自动挂载至/data目录,并且自动挂载的设备要使用卷标进行引用:
2、创建一个本地回环文件/var/swaptemp/swapfile来用于swap,要求大小为 512MB,卷标为SWAP—FILE ,且开机自动启用此交换设备:
mkdir /var/swaptemp
dd if=/dev/zero of=/var/swaptemp/swapfile bs=1M count=512
mkswap LABLE=SWAP-FILE /var/swaptemp/swapfile
/etc/fstab
/var/swaptemp/swapfile swap swap defaults 0 0
3、上述第一问,如何让其自动挂载的同时启用ACL功能:
/etc/fstab
LABEL=‘MYDATA’ /data ext3 defaults,acl 0 0
六、压缩、解压缩命令
压缩格式:gz ,bz2 ,xz ,zip ,Z
压缩算法:算法不同,压缩比也会不同
gzip: .gz
gzip /PATH/TO/SOMEFILE : 压缩完成后会删除原文件
-d:表示解压缩,相当于 gunnzip
-# :1-9 ,指定压缩比,默认是6
gunzip:
gunzip /PATH/TO/SOMEFILE.gz :解压完成后会删除原文件
zcat /PATH/TO/SOMEFILE.gz : 不解压的情况下,查看文件的内容
bzip2 : .bz2
比gzip有着更大压缩比的压缩工具,使用格式近似
bzip2 /PATH/TO/SOMEFILE
-d:解压缩
-#:1-9,默认是6
-k:压缩时保留原文件
bunzip2 /PATH/TO/SOMEFILE.bz2
bzcat /PATH/TO/SOMEFILE.bz2 :不解压的情况下,查看文件的内容
xz: .xz
xz /PATH/TO/SOMEFILE
-d:表示解压缩
-# :1-9,默认是6
-k :压缩时保留原文件
unxz:表示解压缩
xzcat:表示不解压查看文件内容
zip:既归档又压缩的工具
zip FILENAME.zip FILE1 FILE2 ... : 压缩后不删除源文件
unzip FILENAME.zip
archive: 归档,归档本身并不意味着压缩
tar:归档工具, .tar
-c:创建归档文件
-f FILE.tar :操作的归档文件
-x :展开归档,还原归档
--xattrs :归档时,保留文件的扩展性信息
-t :不展开归档,直接查看归档了哪些文件
-zcf:归档并调用gzip压缩
-zxf:调用gzip解压缩并展开归档
练习:写一个脚本
从键盘让用户输入几个文件,脚本能够将此几个文件归档压缩成一个文件:
read:
-p “PROMPT”:给出提示
七、while语句
脚本编程:
顺序结构
选择结构
if
case
循环结构
for
while
until
while循环: 适用于循环次数未知的场景
语法:
while CONDITION;do
statement
...
done
练习: 显示一个菜单给用户:
d|D) show disk usages。
m|M) show memory usages。
s|S) show swap usages。
*)quit
当用户给定选项后显示相应的内容:
扩展:当用户选择完成,显示相应信息后,不推出,而让用户再一次选择,再次显示相应内容;除了用户使用quit: