linux 0.11 文件系统(三)
目录项和超级块,节点的概念不同,它在设备上没有对应的磁盘数据结构。相反,它是目录文 件的一部分。linux中目录也是一种文件,类型是'd'。但是目录中的内容和普通文件不同,它是由目录项组成的。注意目录项不是目录。我们经常用路径名 执行相关操作,目录项就是为了查找方便的。
struct dirt_entry{
unsigned short inode;
char name[NAME_LEN];
};
可 以看到一个目录项中包含了文件的i节点号和文件的名称。路径有两种,一种是绝对路径,一种是相对路径。比如/home/fish就是绝对路径,它以根目录 /为开头,而 X11/xorg.conf就是相对路径,它相对于目录/etc,也就是说后者的绝对路径是/etc/X11/xorg.conf。路径是由目录项组成 的。拿 /home/fish/fish.c来说,第一个目录是/,即根目录。在根目录文件中有名字为home的目录项。然后通过home目录项中的i节点就可以 找到home文件,通过i节点中的i_mode字段可知它是一个目录,在这个文件中有名为fish的目录项,然后根据这个目录项中的i节点号找到fish 文件。同样由fish的inode->i_mode知这也是个目录。同样在fish文件中找到名为fish.c的目录项,就可以找出fish.c的 i节点,搜索完成。
namei.c 是内核中最长的一个文件,它包含了许多关于目录的操作,如find_entry(从一个目录中搜索制定的目录项),add_entry(往指定的目录中添 加一个文件目录项),get_dir(根据路径名找到指定的目录),dir_namei(返回指定目录的i节点指针),还有namei(根据路径名找到指 定路径的i节点)等等。我们就先拿find_entry来看一下。
//dir:指定目录的i节点指针。name:文件名,namelen:文件名长度。
//返回:高速缓冲区指针和相应的目录项指针。
static struct buffer_head* find_entry(struct m_inode **dir,const char*name,int namelen,struct dir_entry **res_dir)
{
int entries;
int block ,i;
struct buffer_head *bh;
struct dir_entry *de;
struct super_blocl *sb;
//如果定义了NO_TRUNCATE,则如果文件名大于最大长度NAME_LEN,返回。
相关文档:
source命令:
source命令也称为“点命令”,也就是一个点符号(.)。source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。
用法:
#vim ~/.bashrc
#source ~/.bashrc
......
1. 如何获得脚本参数:
#!/bin/she
#
while [ -n "$1" ]
do
case "$1" in
-a) echo "found the -a option";;
-b) param="$2"
echo "found the -b option";;
-c) echo "found the -c option";;
--) shift
break;;
*) echo "$1 is not an option";;
esac
shift
done
count ......
1. Sed简介
sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern
space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样
1. Sed简介
sed 是一种在线编辑器,它一次处理一行内容。处理时,把 ......
这里假定要获取当前登录用户启动的tomcat进程的cpu使用情况
#!/bin/sh
_USER=`whoami`
_PS=`ps -ef | grep $_USER | grep catalina | grep tomcat`
_PID=`echo $_PS | awk '{print $2}'`
_CPUINFO=`top -b -n 1 -p $_PID | sed '$d' | sed -n '$p' | awk '{print $9}'`
echo $_CPUINFO
......
超级块描述了整个文件系统的信息,而文件作为存储的对象,它的信息是有inode节点来描述的。i节点位图描述了inode的使用情况。
struct m_inode{
unsigned short i_mode; //文件类型
unsigned short i_uid;//文件宿主
......