1)普通文件(-)
新建一个regular文件
echo "hello" > regular
echo "hello" > regular
用stat查看regular文件
stat regular
stat regular
结果如下:
File: `regular'
Size: 6 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 155656 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2010-11-05 04:13:21.000000000 +0800
Modify: 2010-11-05 04:13:21.000000000 +0800
Change: 2010-11-05 04:13:21.000000000 +0800
File: `regular'
Size: 6 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 155656 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2010-11-05 04:13:21.000000000 +0800
Modify: 2010-11-05 04:13:21.000000000 +0800
Change: 2010-11-05 04:13:21.000000000 +0800
分析:
File: regular
说明:
没什么好说的,就是文件名.
说明:
没什么好说的,就是文件名.
size: 6
说明:
文件的大小,这里注意我们用echo输入重定向5个字符到regular,为什么它的大小是6,这是因为他每次在行尾都会追加一个$符号.
可以用cat -A regular来查看,如下:
cat -A regular
hello$
说明:
文件的大小,这里注意我们用echo输入重定向5个字符到regular,为什么它的大小是6,这是因为他每次在行尾都会追加一个$符号.
可以用cat -A regular来查看,如下:
cat -A regular
hello$
Blocks: 8
说明:
这个文件占用了8个块,块的单位是512个字节,因为文件系统的块为4096个字节,除以512个字节,就是8个Blocks.也就是一个文件最小也要占用8个block.
说明:
这个文件占用了8个块,块的单位是512个字节,因为文件系统的块为4096个字节,除以512个字节,就是8个Blocks.也就是一个文件最小也要占用8个block.
IO Block: 4096
说明:
IO Block表示文件系统块的大小,ext3默认为4096,可以调整为2048等,但ext3最大也即是4096,可以通过tune2fs -l /dev/sda1来确认.
说明:
IO Block表示文件系统块的大小,ext3默认为4096,可以调整为2048等,但ext3最大也即是4096,可以通过tune2fs -l /dev/sda1来确认.
Device: 801h/2049d
说明:
这里表示regular文件所在的磁盘驱动器,这里的801h代表的是主设备号为8,从设备号为1,也就是一个scsi磁盘,设备节点为/dev/sda1,h代表16进制数.
如果是第二块硬盘的第一个分区,这里的数字将是811h,因为scsi磁盘最多有15个分区,0不用,所有11的十六进制就是17.
2049d是801h由十六进制到十进制转换的结果.
如果硬盘是IDE的呢?那结果就变成了301h/769d,这里的301是主设备号为3,从设备号为1,也就是一个ide硬盘的第一个分区.
说明:
这里表示regular文件所在的磁盘驱动器,这里的801h代表的是主设备号为8,从设备号为1,也就是一个scsi磁盘,设备节点为/dev/sda1,h代表16进制数.
如果是第二块硬盘的第一个分区,这里的数字将是811h,因为scsi磁盘最多有15个分区,0不用,所有11的十六进制就是17.
2049d是801h由十六进制到十进制转换的结果.
如果硬盘是IDE的呢?那结果就变成了301h/769d,这里的301是主设备号为3,从设备号为1,也就是一个ide硬盘的第一个分区.
Inode: 155656
说明:
Inode就是I节点,这里说明的是155656并不是系统已经用了这么多个inode,比如现在新建文件2,inode为1002,这时新建文件3,inode为1003,此时你删了文件2,再建文件4,它的inode还是1002.
最后要注意一个文件只有一个Inode,Inode指引我们找到文件的信息.
说明:
Inode就是I节点,这里说明的是155656并不是系统已经用了这么多个inode,比如现在新建文件2,inode为1002,这时新建文件3,inode为1003,此时你删了文件2,再建文件4,它的inode还是1002.
最后要注意一个文件只有一个Inode,Inode指引我们找到文件的信息.
Links: 1
说明:
只有这个文件名用了这个Inode.如果有两个文件名用了这个Inode,这里的数字将是2,例如一个硬链接.
说明:
只有这个文件名用了这个Inode.如果有两个文件名用了这个Inode,这里的数字将是2,例如一个硬链接.
Access: (0644/-rw-r--r--)
说明:
对于这个文件而言,删除和创建文件其实要看上级目录的脸色,如果没有写当前目录的权限,则无法删除创建该目录下的文件.
说明:
对于这个文件而言,删除和创建文件其实要看上级目录的脸色,如果没有写当前目录的权限,则无法删除创建该目录下的文件.
Uid: ( 0/ root) Gid: ( 0/ root)
说明:
文件的owner和group
说明:
文件的owner和group
Access: 2010-11-05 04:13:21.000000000 +0800
说明:
访问这个文件的时间点,例如cat regular,除了stat外,我们还可以用ls -lu来查看.
说明:
访问这个文件的时间点,例如cat regular,除了stat外,我们还可以用ls -lu来查看.
Modify: 2010-11-05 04:13:21.000000000 +0800
说明:
文件被改变,这个时间戳变改变,例如echo "change time" >> regular,但这个操作不影响atime.
说明:
文件被改变,这个时间戳变改变,例如echo "change time" >> regular,但这个操作不影响atime.
Change: 2010-11-05 04:13:21.000000000 +0800
说明:
文件状态被改变后这个时间戳会改变.它包括更改Modify时间的所有操作.同时包括了owner,权限,增/删link等操作.
说明:
文件状态被改变后这个时间戳会改变.它包括更改Modify时间的所有操作.同时包括了owner,权限,增/删link等操作.
2)目录(d)
新建目录
mkdir testdir
stat testdir
File: `testdir/'
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 801h/2049d Inode: 456075 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2010-11-09 13:08:57.000000000 +0800
Modify: 2010-11-09 13:08:57.000000000 +0800
Change: 2010-11-09 13:08:57.000000000 +0800
File: `testdir/'
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 801h/2049d Inode: 456075 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2010-11-09 13:08:57.000000000 +0800
Modify: 2010-11-09 13:08:57.000000000 +0800
Change: 2010-11-09 13:08:57.000000000 +0800
size:4096
说明:
在ext3文件系统中,目录默认的大小是4096个字节.目录是文件名和inode节点号的集合,文件过多,会超出4096,此时目录以2*IO BLOCK大小进行递增.
Blocks: 8
说明:
新建目录,默认占用的blocks(512字节)就是8个,每次递增16个blocks.
说明:
新建目录,默认占用的blocks(512字节)就是8个,每次递增16个blocks.
Links: 2
说明:
每个目录最少有2个links.也就是本目录在两个地方有引用,默认是该本目录的上级目录及当前目录.
例如:
ls -lid testdir/
456075 drwxr-xr-x 2 root root 4096 2010-11-08 15:16 testdir/
此时是用opendir打开了testdir目录的上一级目录,找到了testdir目录的INODE,并显示了该目录的信息.
说明:
每个目录最少有2个links.也就是本目录在两个地方有引用,默认是该本目录的上级目录及当前目录.
例如:
ls -lid testdir/
456075 drwxr-xr-x 2 root root 4096 2010-11-08 15:16 testdir/
此时是用opendir打开了testdir目录的上一级目录,找到了testdir目录的INODE,并显示了该目录的信息.
ls -lida testdir/.
456075 drwxr-xr-x 2 root root 4096 2010-11-08 15:16 testdir/.
此时是用opendir打开了testdir目录,找到了.目录的INODE,.表示是当前目录,也就是testdir目录.
所以我们看到有两个对testdir的硬链接引用.linux正是用这种树状的目录结构将所有的文件都组织起来了.
456075 drwxr-xr-x 2 root root 4096 2010-11-08 15:16 testdir/.
此时是用opendir打开了testdir目录,找到了.目录的INODE,.表示是当前目录,也就是testdir目录.
所以我们看到有两个对testdir的硬链接引用.linux正是用这种树状的目录结构将所有的文件都组织起来了.
Access: (0755/drwxr-xr-x)
说明:
对于目录,如果是744(rwxr--r--),则其它用户不能cd到此目录,只能用ls查看此目录.
如果是722,(rwx-w--w-),则其它用户不能cd到此目录,不能ls,也不能往目录写任何数据.
如果是711,(rwx--x--x),则其它用户能cd到此目录 不能ls,当然也不能往目录写任何数据.
说明:
对于目录,如果是744(rwxr--r--),则其它用户不能cd到此目录,只能用ls查看此目录.
如果是722,(rwx-w--w-),则其它用户不能cd到此目录,不能ls,也不能往目录写任何数据.
如果是711,(rwx--x--x),则其它用户能cd到此目录 不能ls,当然也不能往目录写任何数据.
Access: 2010-11-09 11:02:56.000000000 +0800
说明:
访问这个目录的时间点,比如ls -l testdir操作会改变这个时间点.
说明:
访问这个目录的时间点,比如ls -l testdir操作会改变这个时间点.
Modify: 2010-11-09 10:34:05.000000000 +0800
说明:
在目录下创建/删除文件都会改变目录的modify时间,因为目录里记录着文件名及对映的INODE,而改变目录下文件的owner不会改变目录的modify时间.
说明:
在目录下创建/删除文件都会改变目录的modify时间,因为目录里记录着文件名及对映的INODE,而改变目录下文件的owner不会改变目录的modify时间.
Change: 2010-11-09 11:09:38.000000000 +0800
说明:
在目录下创建/删除文件会改变目录的ctime,同时如果chown/chgrp/chmod改变目录的权限,属主的话也会改变它的ctime.
说明:
在目录下创建/删除文件会改变目录的ctime,同时如果chown/chgrp/chmod改变目录的权限,属主的话也会改变它的ctime.
3)软链接(l)
建立软链接文件
ln -s link softlink
ln -s link softlink
查看softlink文件
stat softlink
File: `softlink' -> `link'
Size: 4 Blocks: 0 IO Block: 4096 symbolic link
Device: 801h/2049d Inode: 456074 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2010-11-09 13:06:38.000000000 +0800
Modify: 2010-11-09 13:06:34.000000000 +0800
Change: 2010-11-09 13:06:34.000000000 +0800
stat softlink
File: `softlink' -> `link'
Size: 4 Blocks: 0 IO Block: 4096 symbolic link
Device: 801h/2049d Inode: 456074 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2010-11-09 13:06:38.000000000 +0800
Modify: 2010-11-09 13:06:34.000000000 +0800
Change: 2010-11-09 13:06:34.000000000 +0800
File: `softlink' -> `link'
说明:
软链接与源文件的关系
Size: 4
说明:
软链接文件大小为源文件名的长度,这里的源文件名为link,所以它的大小为4.
说明:
软链接文件大小为源文件名的长度,这里的源文件名为link,所以它的大小为4.
Blocks: 0
说明:
软链接不会占用磁盘空间,只会在目录表中增加一条记录.
说明:
软链接不会占用磁盘空间,只会在目录表中增加一条记录.
Access: (0777/lrwxrwxrwx)
说明:
软链接文件权限永远是777,更改软链接文件的权限即更改源文件的权限,链接文件不变.
例如:
查看目标文件link的权限为400
ls -l link
-r-------- 1 root root 0 2010-11-09 13:06 link
说明:
软链接文件权限永远是777,更改软链接文件的权限即更改源文件的权限,链接文件不变.
例如:
查看目标文件link的权限为400
ls -l link
-r-------- 1 root root 0 2010-11-09 13:06 link
查看软链接文件softlink的权限为777
ls -l softlink
lrwxrwxrwx 1 root root 4 2010-11-09 13:06 softlink -> link
ls -l softlink
lrwxrwxrwx 1 root root 4 2010-11-09 13:06 softlink -> link
更改软链接文件softlink的权限为755
chmod 755 softlink
chmod 755 softlink
最后我们看到link文件的权限为755
ls -l link
-rwxr-xr-x 1 root root 0 2010-11-09 13:06 link
ls -l link
-rwxr-xr-x 1 root root 0 2010-11-09 13:06 link
Uid: ( 0/ root)和Gid: ( 0/ root)
说明:
更改链接文件的属主和属组,会修改源文件的属主和属组,链接文件不变.
例如:
chown troy.troy softlink
ls -l link
-rwxr-xr-x 1 troy troy 0 2010-11-09 13:06 link
说明:
更改链接文件的属主和属组,会修改源文件的属主和属组,链接文件不变.
例如:
chown troy.troy softlink
ls -l link
-rwxr-xr-x 1 troy troy 0 2010-11-09 13:06 link
Access: 2010-11-09 13:06:38.000000000 +0800
说明:
查看链接文件,会更新源文件atime的时间戳,而用ls命令查看当前目录下的文件,会更新softlink软链接文件的时间戳.
说明:
查看链接文件,会更新源文件atime的时间戳,而用ls命令查看当前目录下的文件,会更新softlink软链接文件的时间戳.
Modify: 2010-11-09 13:06:34.000000000 +0800
说明:
修改链接文件内容,会更新源文件的mtime时间戳,不会对链接文件产生影响.
说明:
修改链接文件内容,会更新源文件的mtime时间戳,不会对链接文件产生影响.
Change: 2010-11-09 13:06:34.000000000 +0800
说明:
修改链接文件的属性等,会更新源文件的ctime时间戳,不会对链接文件产生影响.
说明:
修改链接文件的属性等,会更新源文件的ctime时间戳,不会对链接文件产生影响.
4)块设备(b)
新建块设备节点/tmp/block,主设备号1,从设备号16
mknod /tmp/block b 1 16
查看block文件
stat block
File: `block'
Size: 0 Blocks: 0 IO Block: 4096 block special file
Device: 801h/2049d Inode: 456074 Links: 1 Device type: 1,10
Access: (0644/brw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2010-11-12 19:46:37.000000000 +0800
Modify: 2010-11-12 19:46:37.000000000 +0800
Change: 2010-11-12 19:46:37.000000000 +0800
stat block
File: `block'
Size: 0 Blocks: 0 IO Block: 4096 block special file
Device: 801h/2049d Inode: 456074 Links: 1 Device type: 1,10
Access: (0644/brw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2010-11-12 19:46:37.000000000 +0800
Modify: 2010-11-12 19:46:37.000000000 +0800
Change: 2010-11-12 19:46:37.000000000 +0800
File: `block'
说明:
新建的设备节点名称
说明:
新建的设备节点名称
Size: 0
说明:
设备节点的大小为0,设备节点只有主/从设备号的概念,不占用磁盘空间.
说明:
设备节点的大小为0,设备节点只有主/从设备号的概念,不占用磁盘空间.
Blocks: 0
说明:
设备节点不占用磁盘空间,blocks为0
说明:
设备节点不占用磁盘空间,blocks为0
Device type: 1,10
说明:
块设备的主设备号为1,从设备号为16(十进制).Device type的显示输出为16进制.
说明:
块设备的主设备号为1,从设备号为16(十进制).Device type的显示输出为16进制.
Access: (0644/brw-r--r--)
说明:
块设备的权限,可以用mknod --mode 777的方式进行指定.
说明:
块设备的权限,可以用mknod --mode 777的方式进行指定.
Access: 2010-11-12 19:46:37.000000000 +0800
说明:
块设备的atime,可以通过cat /tmp/block的方式改变.
说明:
块设备的atime,可以通过cat /tmp/block的方式改变.
Modify: 2010-11-12 19:46:37.000000000 +0800
说明:
块设备的mtime,可以通过cat > /tmp/block的方式改变.
cat > block
test
说明:
块设备的mtime,可以通过cat > /tmp/block的方式改变.
cat > block
test
cat block
test
test
Change: 2010-11-12 19:46:37.000000000 +0800
说明:
块设备的ctime,可以通过chown/chmod的方式改变.
说明:
块设备的ctime,可以通过chown/chmod的方式改变.
5)字符设备(c)
新建设备节点chardev1,字符设备,主设备号4,从设备号0
mknod /tmp/chardev1 c 4 0
mknod /tmp/chardev1 c 4 0
查看chardev1设备
stat chardev1
File: `chardev1'
Size: 0 Blocks: 0 IO Block: 4096 character special file
Device: 801h/2049d Inode: 456075 Links: 1 Device type: 4,0
Access: (0644/crw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2010-11-12 20:35:03.000000000 +0800
Modify: 2010-11-12 20:35:03.000000000 +0800
Change: 2010-11-12 20:35:03.000000000 +0800
stat chardev1
File: `chardev1'
Size: 0 Blocks: 0 IO Block: 4096 character special file
Device: 801h/2049d Inode: 456075 Links: 1 Device type: 4,0
Access: (0644/crw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2010-11-12 20:35:03.000000000 +0800
Modify: 2010-11-12 20:35:03.000000000 +0800
Change: 2010-11-12 20:35:03.000000000 +0800
Size: 0
说明:
字符设备的文件大小为0,同块设备一致.
说明:
字符设备的文件大小为0,同块设备一致.
Blocks: 0
说明:
因为字符设备的文件大小为0,所以不占用blocks.
说明:
因为字符设备的文件大小为0,所以不占用blocks.
其余字段同块设备的意义一致.
6)管道(p)
新建管道fifo
mknod /tmp/fifo p
mknod /tmp/fifo p
查看fifo
stat fifo
File: `fifo'
Size: 0 Blocks: 0 IO Block: 4096 fifo
Device: 801h/2049d Inode: 456074 Links: 1
Access: (0644/prw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2010-11-12 20:43:34.000000000 +0800
Modify: 2010-11-12 20:43:34.000000000 +0800
Change: 2010-11-12 20:43:34.000000000 +0800
stat fifo
File: `fifo'
Size: 0 Blocks: 0 IO Block: 4096 fifo
Device: 801h/2049d Inode: 456074 Links: 1
Access: (0644/prw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2010-11-12 20:43:34.000000000 +0800
Modify: 2010-11-12 20:43:34.000000000 +0800
Change: 2010-11-12 20:43:34.000000000 +0800
Size: 0
说明:
管道文件的大小为0
说明:
管道文件的大小为0
Blocks: 0
说明:
管道文件大小为0,所以不占用blocks.
说明:
管道文件大小为0,所以不占用blocks.
7)套接字(s)
查看当前系统所有的套接字
netstat -x
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ] DGRAM 2499 @/org/kernel/udev/udevd
unix 6 [ ] DGRAM 3614098 /dev/log
unix 2 [ ] DGRAM 3936790
unix 2 [ ] DGRAM 3839767
unix 2 [ ] DGRAM 3817060
unix 2 [ ] DGRAM 3614233
unix 3 [ ] STREAM CONNECTED 11011 /var/run/xenstored/socket
unix 3 [ ] STREAM CONNECTED 11010
unix 3 [ ] STREAM CONNECTED 10429 /var/run/xenstored/socket
unix 3 [ ] STREAM CONNECTED 10427
unix 3 [ ] STREAM CONNECTED 9983 /var/run/xenstored/socket
unix 3 [ ] STREAM CONNECTED 9981
unix 3 [ ] STREAM CONNECTED 9420 /var/run/xenstored/socket
unix 3 [ ] STREAM CONNECTED 9419
unix 3 [ ] STREAM CONNECTED 8885 /var/run/xenstored/socket
unix 3 [ ] STREAM CONNECTED 8884
unix 3 [ ] STREAM CONNECTED 8493 /var/run/xenstored/socket
unix 3 [ ] STREAM CONNECTED 8492
unix 3 [ ] STREAM CONNECTED 7873 /var/run/xenstored/socket
unix 3 [ ] STREAM CONNECTED 7872
unix 3 [ ] STREAM CONNECTED 7819 /var/run/xenstored/socket
unix 3 [ ] STREAM CONNECTED 7818
unix 2 [ ] DGRAM 7798
unix 2 [ ] DGRAM 7017
unix 2 [ ] DGRAM 6739
unix 2 [ ] DGRAM 6046
unix 2 [ ] DGRAM 5931
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ] DGRAM 2499 @/org/kernel/udev/udevd
unix 6 [ ] DGRAM 3614098 /dev/log
unix 2 [ ] DGRAM 3936790
unix 2 [ ] DGRAM 3839767
unix 2 [ ] DGRAM 3817060
unix 2 [ ] DGRAM 3614233
unix 3 [ ] STREAM CONNECTED 11011 /var/run/xenstored/socket
unix 3 [ ] STREAM CONNECTED 11010
unix 3 [ ] STREAM CONNECTED 10429 /var/run/xenstored/socket
unix 3 [ ] STREAM CONNECTED 10427
unix 3 [ ] STREAM CONNECTED 9983 /var/run/xenstored/socket
unix 3 [ ] STREAM CONNECTED 9981
unix 3 [ ] STREAM CONNECTED 9420 /var/run/xenstored/socket
unix 3 [ ] STREAM CONNECTED 9419
unix 3 [ ] STREAM CONNECTED 8885 /var/run/xenstored/socket
unix 3 [ ] STREAM CONNECTED 8884
unix 3 [ ] STREAM CONNECTED 8493 /var/run/xenstored/socket
unix 3 [ ] STREAM CONNECTED 8492
unix 3 [ ] STREAM CONNECTED 7873 /var/run/xenstored/socket
unix 3 [ ] STREAM CONNECTED 7872
unix 3 [ ] STREAM CONNECTED 7819 /var/run/xenstored/socket
unix 3 [ ] STREAM CONNECTED 7818
unix 2 [ ] DGRAM 7798
unix 2 [ ] DGRAM 7017
unix 2 [ ] DGRAM 6739
unix 2 [ ] DGRAM 6046
unix 2 [ ] DGRAM 5931
查看套接字文件
stat /var/run/acpid.socket
File: `/var/run/acpid.socket'
Size: 0 Blocks: 0 IO Block: 4096 socket
Device: 805h/2053d Inode: 547804 Links: 1
Access: (0666/srw-rw-rw-) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2010-11-06 04:13:15.000000000 +0800
Modify: 2010-11-06 04:13:15.000000000 +0800
Change: 2010-11-06 04:13:15.000000000 +0800
stat /var/run/acpid.socket
File: `/var/run/acpid.socket'
Size: 0 Blocks: 0 IO Block: 4096 socket
Device: 805h/2053d Inode: 547804 Links: 1
Access: (0666/srw-rw-rw-) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2010-11-06 04:13:15.000000000 +0800
Modify: 2010-11-06 04:13:15.000000000 +0800
Change: 2010-11-06 04:13:15.000000000 +0800
Size: 0
说明:
套接字文件大小为0
说明:
套接字文件大小为0
Blocks: 0
说明:
套接字文件不占用磁盘空间,所以它的blocks也为0
说明:
套接字文件不占用磁盘空间,所以它的blocks也为0