一.与磁盘有关的小知识
1.FileSystem就像当予一个软件,
Windows:FAT16,FAT32,ntfs,
Linux:VFS(virtual filesystem) ----->虚拟文件系统就相当于一个机制,是一个虚拟接口,看上去我们好像给VFS打交
道,事实上,它只是一个代理,将其转换到磁盘上真正使用的系统。
ext2,ext3,ext4,reiserfs,ntfs,jfs,xfs
iso:关盘 iso9660
NFS,SNBFS,GFS2,OCFS ---->(这些事网络文件系统)
2.磁盘是有N个数据块组成的,数据块又按照一定的数量分成组,所以组成了块组,每一个块组的块数是一样的
对每个磁盘分区上面,第一个数据块不能使用,叫引导块,放的是引导文件系统的数据,不归文件系统管理
每一个快组,前面都有一个Super block放的是所有磁盘上的描述信息,
3.磁盘的组成:
Boot Block:Block Group 0(块组):Block Group 1:Block Group Block Group 2,......
引导块 块组
Block Group:块组的组成
Super Block:GDT:Block Bitmap:Inode Bitmap:Inode Table:Data Blocks
超级块 块组描述符 位图 索引节点表
超级块:放的是整个文件系统的信息,全局描述信息
块组描述符(GDT):描述本组信息,描述Inode Table,Data Blocks在哪里,
位图(Block Bitmap):在这里可以查看磁盘块是否被用了,
Inode Bitmap:用来存放所有的节点,包括可用的和已经用过的,用来快速定位inode是否被使用
索引节点表(Inode Table):存放的是已经分配出去的节点号
二.与文件有关的知识
1.连接:
硬链接:两个文件名指向同一个inode号,但是,这两个文件必须在同一个分区上,相当一cp了一份
删除一个硬链接,另一个连接文件没删,那么inode号还是存在的,那么源文件还是存在的
当我们ll时,用户前面会有数字,就表示被硬链接的次数,目录一般是2,因为被父目录硬链接,文件一般是1
软连接:创建了一个新文件,他自己有一个inode号,也有磁盘块,磁盘块内放的是它所指的文件的路径
可以跨分区,相当于一个快捷方式,目录禁止硬链接,但不禁止软连接
rm通常是删inode号的,而数据没有被删除
mv:当在同一个分区时,把一个文件从一个目录剪切到另一个目录去,只是在inode表中建立一个对应关系;
当不再同一个分区时,需要先把数据考到另一个分区上去,然后在建inode的对应关系
三.检查磁盘上的可用空间:Checking Free Space (333页)
1.du /etc ---->显示该目录下的每一个文件大小
2.du -s /etc ---->显示该目录占用磁盘的总大小
3.du -sh /etc --->以人类易读的方式来显示
4.# df -h ---->以易读的方式来显示磁盘的利用情况
5.# df -h /etc/ --->这显示的是目录的利用情况
6.df -i ---->显示inode号的利用率,用了多少,还剩多少
四.建立临时文件
1./tmp --->这个目录存放的是临时文件,每隔一段时间就会清除过去30天不用的文件
2.mktmp --->这是创建临时文件的命令
eg:mktemp a.XX(大写) --->这两个XX就是生成临时文件时,生成的随机数代替XX,所以我们连续生成两个这样的文
件不会重名,X个数不限
3.# mktemp -d aa.XX ----->创建临时目录
五.有关磁盘利用率的小知识
1.df -l ---->查看磁盘的利用情况
2.输出df -l 输出的磁盘分区挂在的家目录的命令
df -l |grep -v "^/dev/[^[:space:]]*[[:space:]]*$" |cut -d'%' -f2 |grep -v -E "Mounted|/dev"
解释:grep -v 是指取出查找到的相反的内容,即,是没有这一行的内容;[^[:space:]]*这表示匹配零个或多个非空格
的字符;[[:space:]]*$表示匹配空格零次或多次,并且,以空格结束的行;grep -v -E "Mounted|/dev"表示选择不匹配的
行,
3.有关上面的小脚本
#!/bin/bash
#Author:Jerry
#Date & Time:2011-02-25 08:08:38
#Description:
TMP1=`mktemp /tmp/disk.XXXXXX`
df -l |grep -v "^/dev/[^[:space:]]*[[:space:]]*$" |cut -d'%' -f2 |grep -v -E "Mounted|/dev" >$TMP1
show_memu() {
let I=1
echo "*****Please choose an choice.***"
while read LINE; do
echo "$I $LINE"
let I++
done < $TMP1
} #这个函数是为了输出行号的
show_memu
read -p "Your choice('Q' for quit):" CHOICE
select_line() {
MYLINE=`head -n $1 $TMP1 | tail -1` #这里读取的是第n行的最后一行
df -lh | grep "$MYLINE$" #这里后面的一个$是为了根,表示以根结尾
}
while [ $CHOICE!='Q' ]; do
case $CHOICE in
1) select_line 1 ;; #这里的1是形参
2) select_line 2 ;;
3) select_line 3 ;;
Q) exit 0 ;;
esac
read -p "Your choice('Q' for quit):" CHOICE
done
rm -f $TMP1
五.表示颜色
1.\033[nmSTRING \033[0m --->这是表示颜色的格式
\033[ ---->这表示颜色控制符
nm 有三种表示方式:
n要是个位数即:0-8,表示字体的
0: 表示正常字体(reset to normal mode)
1: 表示粗体(Set to bold intensity)
2: 表示输出比较紧一点(set faint intensity)
3: 表示斜体(use intalic font)
4: 表示加单下划线(use single underline)
5: 表示慢闪 (use slow blink)
6: 表示快闪 (use fast blin)
2.n要是双数时,
eg:3n :表示前景色,即字体的颜色
4n :表示背景色
这里的n表示0-7
0: 黑色(black)
1: 红色(red)
2: 橙色 (green)
3: yellow
4: blue
5: magenta
6: cyan
7: while
eg:# echo -e "\033[31mHow\033[0m"
六.压缩工具
1. gzip/gunzip .gz
bzip2/bunzip2 .bz2
zip/unzip .zip
前两个只能压缩单个文件,不能压缩目录
2.gzip 会删除源文件
-d =gunzip
bzip与gzip相同
3.zip 可以压缩多个文件,不会删除源文件
4.tar 归档
tar -cf myfile.tar file1 file2 file3
-x 展开归档
-c 打包
-t 查看tar文件内的内容
-z 用gzip压缩
-j 用bzip2压缩
-f 指定文件名,位于参数的最后面
-v 显示压缩过程中的详细过程
七.有关dialog的知识
1.yum install dialog ---->这是要安装的软件包
2.dialog就类似于在纯字符界面下生成一个图形界面窗口的,当我们安装完成dialog之后,就会生成各种形式的窗体,
如:单选框,复选框,多选款等,我们称这些窗体为widget,
3.dialog的格式
dialog --common-options --boxType "Text" Height Width --box-specific-option
关键字 公共选项 窗体类型 窗体中的内容 高 宽
eg:#dialog --backtitle “The first dialog box” --title “Hello” --yesno “Is this your first dialog
box?” 7 25
解释:dialog : 关键字 ;--backtitle:背景标题 --title:窗体的标题 --yesno:窗体的类型,后面的是窗体内容
7是高度,25是宽度
4.dialog --print-maxsize --->查看该窗体支持高度和宽度是多大
5.dialog --colors --title "Delete a file?" --msgbox "\Z1Delete a file.\Zn" 7 26
解释:\Z1Delete a file.\Zn这里的\Z表示显示颜色,1表示red,要想让\Z生效,必须要有--colors选项
# dialog --backtitle "Test..." --title "About Name" --inputbox "Please input your name:" 8 30 2>
/tmp/inputbox.out
解释:这是一个输入框,2> /tmp/inputbox.out这表示将在输入框里写入的东西重定向到文件里去
# NAME=`dialog --stdout --backtitle "Test..." --title "About Name" --inputbox "Please input your name:" 8
30`
解释:这个命令将输入框里输入的数据赋给变量,--stdout不让错误输出到标准错误输出,而是输出到标准输出上面去
,即,该处的变量上面
6.input标签还支持
--extra-button 用来增加按钮的,默认是两个,
--extra-label string 用来显示增加的按钮上的字体是什么
7.textbox 用窗口的形式显示文件的内容的
--exit-label string 用来设置退出按钮上的信息
eg:# dialog --title "Test file" --exit-label "tuichu" --textbox /etc/fstab 13 26
8.menu 框
dialog --menu text height width menu-height tag1 item1 tag2 item2 …
text :显示的是对话框里上面显示的信息,menu-height定义的是对话框里的菜单框高度,tag是指要选的内容前面的标
志;item是要选的内容
eg:# dialog --title "AAAA" --menu "Give you choice" 12 42 5 1 "Display" 2 "Show" 3 "Exit"
9.gauge 进度条的窗体
dialog --gauge text height width [<percent>]
eg:# dialog --gauge "Percent" 6 30 50 -->这是静态的进度条
下面是一个脚本,实现动态的进度条
#!/bin/bash
#Author:Jerry
#Date & Time:2011-02-25 12:45:34
#Description:
declare -i PERCENT=0 #声明变量
(
for I in /etc/*; do
if [ $PERCENT -le 100 ]; then
cp -r $I /tmp/test 2> /dev/null
echo "XXX"
echo "Copy the file $I ..." #显示在进度框上面
echo "XXX" #这与上面的echo "XXX"是为了定位中间的echo的位置的
echo $PERCENT #它才是进度条上面显示的数值
fi
let PERCENT+=1
sleep 0.1
done
) | dialog --title "Coping..." --gauge "Starting to copy files..." 6 50 0
本文出自 “linux小窝” 博客,转载请与作者联系!