1.  Linux中的文件

1.1 【文件属性概述】

Linux里一切皆文件!

Linux系统中的文件或目录属性主要包括:索引节点(inode)、文件类型、权限属性、链接数、所归属的用户和用户组、最近修改时间等内容。

       一般用ls -lhi即可查看文件属性:

[root@test testdir]# ls -lhi

total 14M

262270 -rw-r--r--. 1 root root    0 Mar 17 05:24 a.txt

262259 -rw-r--r--. 1 root root 1.3M Mar 21 09:20 big10.sh

262275 -rw-r--r--. 1 root root 1.3M Mar 21 09:20 big1.sh

262277 -rw-r--r--. 1 root root 1.3M Mar 21 09:20 big2.sh

284753 -rw-r--r--. 1 root root 1.3M Mar 21 09:20 big3.sh

284754 -rw-r--r--. 1 root root 1.3M Mar 21 09:20 big4.sh

284755 -rw-r--r--. 1 root root 1.3M Mar 21 09:20 big5.sh

284756 -rw-r--r--. 1 root root 1.3M Mar 21 09:20 big6.sh

284757 -rw-r--r--. 1 root root 1.3M Mar 21 09:20 big7.sh

284758 -rw-r--r--. 1 root root 1.3M Mar 21 09:20 big8.sh

284759 -rw-r--r--. 1 root root 1.3M Mar 21 09:20 big9.sh

262274 -rw-r--r--. 1 root root 1.3M Mar 21 09:18 big.sh

262273 -rw-r--r--. 1 root root    0 Mar 17 05:24 lidao.txt

262279 -rw-r--r--. 1 root root   64 Mar 17 05:36 num.txt

284652 -rw-r--r--. 1 root root   29 Mar 19 17:26 oldboy.txt

284819 drwxr-xr-x. 2 root root 4.0K Mar 21 10:00 scripts

262284 -rw-r--r--. 1 root root   30 Mar 17 05:53 stu.txt

262272 -rw-r--r--. 1 root root    0 Mar 17 05:24 test.txt.txt

[root@test testdir]#

 

[root@oldboyedu-35 scripts]# ls -lhi /etc/hosts

129822 -rw-r--r--. 2 root root 158 Mar 16 20:07 /etc/hosts

[root@oldboyedu-35 scripts]#

 

12988

inode号码(家庭住址)

-

文件类型

rw-r--r--.

权限

2

硬链接数(超市入口数量,可以通过多少个门进入超市)

root

属主,文件所有者

root

属组,所有者属于的组

Mar 16 20:07

文件修改时间

/etc/hosts

文件或目录的名字(不属于属性)

 

文字解释:

第一列:inode索引节点编号,每个分区里唯一(相当于人的身份证号 家庭住址,全国唯一);

系统读取文件首先通过文件名找到inode号码,然后才能读取到文件内容。

第二列:文件类型及权限。第二列共11个字符:其中第一个字符为文件类型,随后的9个字符为文件的对应权限,最后一个字符点好"."是和selinux有关的一个标识;

第三列:硬链接个数(详细参看ln命令的讲解);linux里面文件和程序的存在必须要有用户组满足相应的存在需求。

第四列:文件或目录所属的用户文件的所有者(属主);

第五列:文件或目录所属组(属组)(家庭);

第六列:文件或目录的大小;

第七八九列:文件或目录的修改时间;默认月日时分;

第十列:实际的文件或目录名。

文件名不算文件的属性

 

1.2 【索引节点inode

1.2.1 inode概述】

预备知识

硬盘的使用过程:

       硬盘要存放数据(房子住人),首先要分区(隔断),然后格式化创建文件系统(装修-装修风格),最后挂载(没有挂载:没有门窗的监狱),才能存数据(住人)。

       Inode,中文意思是索引节点(index node。在每个linux存储设备或存储设备(磁盘或硬盘)的分区(存储设备可以是硬盘、软盘、U......格式化为多个ext4centOS6.7文件系统,一般生成两部分:第一部分是Inode(很多个),第二部分是Block(很多个)。

这个Block(块)是用来存储实际数据用用的,例如:照片,视频等普通文件数据。

inode就是用来存储这些数据属性信息的(也就是ls -l的结果),inode属性信息包括不限于文件大小、属主(用户)、归属用户组、文件权限、文件类型,[修改]时间,还包含指向文件实体的指针功能(你的Block的位置,inode节点--block的对应关系)等,但是inode里面唯独不包含文件名本身。(文件的名字不是文件的属性)

 

Inode:存放的是文件/目录属性信息

Block:实际存放数据的位置/空间

 

Inode除了记录文件属性信息外,还会为每个文件进行信息索引,所以就有了inode的数值。操作系统根据指令,即可通过inode的值最快的找到相对应的文件实体。

 

 

1.2.2 linux系统中文件的访问过程】

linux系统中,文件的访问过程一般是通过文件名找到对应的inode,通过inode存储的文件信息找到对应的block,从而找到对应的文件,如下图:

 

 

1.3 inodeblock

因为inode要存放文件的属性信息,所以每个inode本身是有大小的,centOS5系列inode默认大小是128字节,而centOS6系列inode的默认大小是256字节,inode的大小在分区倍格式化创建文件系统之后定下来,格式化以后就无法更改inode的大小,格式化之前可以通过参数指定inode的大小,但是一般企业工作环境没有这个需求。

 

查看inode大小:

查看node的大小可以利用dumpe2fs来查看:

[root@test testdir]# dumpe2fs /dev/sda3 |grep -i "inode size"

dumpe2fs 1.41.12 (17-May-2010)

Inode size:           256

[root@test testdir]# dumpe2fs /dev/sda1 |grep -i "inode size"

dumpe2fs 1.41.12 (17-May-2010)

Inode size:           128

[root@test testdir]#

 

inode使用情况:

       查看inode的使用情况可以用df -i来查看:

[root@test testdir]# df -i

Filesystem     Inodes IUsed  IFree IUse% Mounted on

/dev/sda3      462384 58428 403956   13% /

tmpfs          125517     1 125516    1% /dev/shm

/dev/sda1       51200    38  51162    1% /boot

[root@test testdir]#

 

1.3.1 【有关Inode小结】

来源

    磁盘被分区并格式化ext4文件系统(装潢风格)后会生成一定数量的inodeblock

意义

       inode称为index node索引(目录)节点,它的作用是存放文件的属性信息以及作为文件内容的索引(位置)(指向文件的实体block)。

特点

ext3/ext4文件系统(centOS5.x/centOS6.x默认的文件系统)下,一个非空的文件至少要占一个inode和一个block(文件size比较大)。

       inode节点号相同的文件,互卫为链接文件,可以认为是一个文件的不同入口

       inode在某一个文件系统(分区),是唯一的。

使用

    ls -i 或者 df -i

 

1.3.2 【有关Block的小结】

来源

       磁盘被分区并格式化ext4文件系统(装潢风格)后会生成一定数量的inodeblock

意义

       block是用来存储实际数据的,每个block的大小一般有1K2K4K几种。其中引导分区等为1K,其他普通分区多为4KC6)。

特点

       磁盘读取时按block为单位读取的。

       一个文件可能占用多个block。每读取一个block就会消耗一次磁盘I/Oinput/output 磁盘读写)。

       一个block剩余空间会被浪费,无论男人多小。

使用

    dunpe2fs /dev/sda3grep -i "block size"

       df -h

block大小的查看:

[root@oldboyedu-35 /]# dumpe2fs /dev/sda3 |grep -i "block size"

dumpe2fs 1.41.12 (17-May-2010)

Block size:               4096

[root@oldboyedu-35 /]#

 

block使用情况查看:

[root@oldboyedu-35 /]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3       6.9G  1.6G  4.9G  25% /

tmpfs           491M     0  491M   0% /dev/shm

/dev/sda1       190M   33M  147M  19% /boot

[root@oldboyedu-35 /]#

 

1.4 【企业案例】

1.4.1 如果向磁盘写入数据提示如下错误:No space left on device,通过df -h查看磁盘空间,发现没满,请问可能原因是什么?企业场景什么情况下回导致这个问题发生?

 

企业案例模拟:

mkdir -p /app/logs  

dd if=/dev/zero of=/dev/sdc bs=8K  count=10

ls -l /dev/sdc

mkfs.ext4 /dev/sdc

 

tune2fs -c -1 /dev/sdc

mount -o loop /dev/sdc /app/logs

一般发生这种情况都是inode使用完了引起的。

inode满了:

[root@test ~]# #磁盘空间满了 inode满了 

[root@test logs]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3       6.9G  1.7G  4.9G  25% /

tmpfs           491M     0  491M   0% /dev/shm

/dev/sda1       190M   34M  147M  19% /boot

/dev/sdc         73K   14K   55K  21% /app/logs

[root@test logs]# df -i

Filesystem     Inodes IUsed  IFree IUse% Mounted on

/dev/sda3      462384 58765 403619   13% /

tmpfs          125517     1 125516    1% /dev/shm

/dev/sda1       51200    38  51162    1% /boot

/dev/sdc           16    11      5   69% /app/logs

[root@test logs]# cd /app/logs/

[root@test logs]# touch {1..6}

touch: cannot touch `6': No space left on device

[root@test logs]# touch oldboy.txt

touch: cannot touch `oldboy.txt': No space left on device

[root@test logs]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3       6.9G  1.7G  4.9G  25% /

tmpfs           491M     0  491M   0% /dev/shm

/dev/sda1       190M   34M  147M  19% /boot

/dev/sdc         73K   14K   55K  21% /app/logs

[root@test logs]# df -i

Filesystem     Inodes IUsed  IFree IUse% Mounted on

/dev/sda3      462384 58765 403619   13% /

tmpfs          125517     1 125516    1% /dev/shm

/dev/sda1       51200    38  51162    1% /boot

/dev/sdc           16    16      0  100% /app/logs

一般情况下,发生磁盘空间不足的情况下要检查一下两个方面:

1)检查inode是否用完

2)检查block是否用完

1.4.2 【删除文件名是乱码的文件】

方法一:通过inode来删除文件

#1.查看文件的inode号码

[root@test testdir]# ls -lhi '\-p'

284654 -rw-r--r--. 1 root root 0 Mar 22 02:05 \-p

[root@test testdir]#

#2.通过inode删除文件

[root@test testdir]# rm -f $(find /oldboy/ -inum 284654)

[root@test testdir]# ll '\-p'

ls: cannot access \-p: No such file or directory

[root@test testdir]#

 

方法二:文件名放在单引号中删除

[root@test testdir]# rm -f '\--p'

[root@test testdir]# ll '\--p'

ls: cannot access \--p: No such file or directory

[root@test testdir]#

 

方法三:

rm -f --

#--参数的结束标志,--前面的命令的参数,后面是你要处理的文件。

[root@test testdir]# rm -f -- |--o

[root@test testdir]# ll '|--o'

ls: cannot access |--o: No such file or directory

[root@test testdir]#

 

2.  文件类型及扩展名

2.1 【文件类型介绍】

Linux系统中,可以说一切(包括目录、普通文件、设备文件)皆文件。文件类型包含有普通文件、目录、字符设备文件、块设备文件、符号/软连接文件、管道文件等等。

Linux下面如何查看一个文件的文件类型:

1ls -l

2flie

 

       ls -l显示文件属性内容后,第一列的第一个字符就是用来区分文件类型的:

文件类型标识符

文件类型说明

ddirectory

这是一个目录文件,如上文ext,在ext2fs中,目录是一个特殊文件。

-(regular file)

这是一个普通文件,如上文的oldboy.txt

llink

这是一个符号/软链接文件,实际上它指向另一个文件。(相当于windows的快捷方式)

bblock

标识块设备和其他的外围设备,是特殊类型的文件。

ccharacter

标识字符设备文件。

ssocket

标识socket(套接字)文件。

pnamed pipe

标识管道文件。

 

find 命令 -type的文件类型的参数:

b   blockbufferedspecial

c   characterunbufferedspecial

d   directory

p   named pipeFIFO

f   regular file

l   symbolic link

s   socket

D   doorSolaris

 

2.2 【文件类型分别介绍】

2.2.1 【普通文件(regular file)】

[root@test testdir]# ls -l oldboy.txt

-rw-r--r--. 1 root root 29 Mar 19 17:26 oldboy.txt

[root@test testdir]#

我们通过ls -l来查看oldboy.txt的属性,可以看到第一列的内容为-rw-r-r--,第一个符号-(英文字符减号),在Linux中,以这样的字符开头的文件就表示普通文件。

       这些文件一般使用相关的应用程序或系统命令创建,比如touchcptarechocat>>>等工具命令......。普通文件的删除可以使用rm命令;

 

普通文件(regular file):第一个属性为"-",按照文件内容,又可大略分为:

1)(纯)文本文件(ASCII):文件内容可以直接读取到数据,例如:字母、数字、特殊符号等。可以用cat命令读文件,比如配置文件一般都是这种类型的

2)二进制文件(binary):Linux中的命令程序就是属于这种格式。例如cat命令就是一个二进制文件。

3)数据格式的文件(data):有些程序在运行的过程中会读取某些特定格式的文件,那些特定格式的文件可以被称为数据文件。例如:linux在登陆用户时,都会将登陆的数据巨鹿在/var/log/wtmplast命令的数据库文件)那个文件内,改文件是一个数据文件。通过last命令读取出来。cat命令读取会出现乱码。因为他属于一种特殊格式的文件。lastlog/var/log/atlog

 

2.2.2 【目录文件(directory)】

[root@test testdir]# ls -ld oldgirl/ scripts/

drwxr-xr-x. 2 root root 4096 Mar 22 02:49 oldgirl/

drwxr-xr-x. 2 root root 4096 Mar 21 10:00 scripts/

[root@test testdir]#

       如上,在oldboy目录下执行ls -ld查看目录名是,可以看到第一列的内容为drwxr-xr-x,这种开头带d字符的文件就表示目录,目录在Linux中是比较特殊的文件。

如果仅仅想看到目录属性时,可以使用ls的参数-d,搭配组合为ls -ld 目录名。

       创建目录的命令可以用mkdir命令或cp命令带参数(带-r-a),cp可以把整个目录复制为另一个目录。删除目录用rm -rrmdir(删空目录才可以)命令。

 

2.2.3 【字符设备或块设备文件】

在目录/dev/下:

[root@test testdir]# cd /dev/

[root@oldboyedu-35 dev]# ll -al /dev/tty

crw-rw-rw-. 1 root tty 5, 0 Mar 21 08:18 /dev/tty

[root@oldboyedu-35 dev]#

       /dev/tty属性是 crw-rw-rw- ,第一个字符是c,这表示字符设备文件。字符设备就是串行端口的解救设备,如猫等串口设备。

[root@oldboyedu-35 dev]# ll -al /dev/sda

brw-rw----. 1 root disk 8, 0 Mar 21 08:18 /dev/sda

[root@oldboyedu-35 dev]#

       /dev/sda的属性是brw-rw---- ,第一列的第一个字符是b,者表示块设备,块设备就是存储数据提供系统及程序访问的接口设备,如硬盘,光驱等都属于块设备;

 

       以上种类的文件,一般都可以用mkondmkond -make block or charater special files)来创建,用rm来删除。

 

2.2.4 【套接口文件】

当我们启动mysql服务时,会产生一个mysql.scok文件。这个文件的属性的第一个字符是s

 

       .scok文件也是一类特殊的文件,这类文件通常用在网络之间进程数据连接,如:我们可以启动一个程序来监听客户端的请求,在客户端可以通过套接字来进行数据通信。

 

2.2.5 【符号链接/软链接文件】

符号链接文件也被称为软链接文件。

[root@test testdir]# echo "I am a oldboy" > oldboy.txt

[root@test testdir]# # ln -s 给谁创建软链接(源文件) 软链接的名字(名字不能存在)

[root@test testdir]# ln -s oldboy.txt oldboy.txt_soft

[root@test testdir]# ll

total 16

-rw-r--r--. 1 root root   14 Mar 22 03:28 oldboy.txt

lrwxrwxrwx. 1 root root   10 Mar 22 03:31 oldboy.txt_soft -> oldboy.txt

drwxr-xr-x. 2 root root 4096 Mar 22 03:27 oldgirl

drwxr-xr-x. 2 root root 4096 Mar 21 10:00 scripts

drwxr-xr-x. 2 root root 4096 Mar 22 03:27 txtfile

[root@test testdir]#

如上所示,当我们查看文件属性时,会看到类似lrwxrwxrwx,第一个字符是l,这类文件标识链接文件(这里的是软链接文件)。

       可以通过ln -s 源文件 新文件名 创建(如果不使用-s,则会创建硬链接,但不适用于目录)。软链接的原理图如下:

 

 

2.2.6 【管道文件】

FIFO也是一个特殊的文件类型,主要是解决多个程序同时访问一个文件所造成的错误,第一个字符是pFIFOfifi - first-in first-out的缩写。

 

2.3 【文件扩展名】

Linux中虽然扩展名没有什么实际意义,但是为了兼容windows,同时,便于我们大多数习惯了windows的用户区分文件的不同,所以我们还是习惯通过扩展名来表示不同的文件类型。举例如下:

        .tartar.gztgztgztar.bz表示压缩文件,创建命令一般为targzipzip等。

    ②.sh表示shell脚本文件,通过shell语言开发的程序。

    ③.pl表示perl语言文件,通过Perl语言开发的程序。

    ④.py表示python语言文件,通过python语言开发的程序。

    ⑤.html.htm.jsp.do表示网页语言文件。

    ⑥.conf表示系统配置文件

    ⑦.rpm表示rpm安装包文件。

 

       补充:

       1)系统文件

扩展名

说明

.conf

一种配置文件。配置文件有时也有.cfg

.lock

锁(lock)文件:用来判定程序或设备是否正在被使用。

.rpm

Redhat 用来安装软件的软件包管理文件。

       2)压缩和归档文件

文件扩展名

说明

.bz2

.gz

.tar

.tbz

.rar

.zip

使用bzip2压缩的文件

使用gzip压缩的文件

使用tartap archive,磁盘归档的简写)

tarbzip压缩的文件

windows中常见,在linux中较少使用

MS-DOS中常见。Linux下使用gzip压缩,而.zip归档较少。

 

       3)编程和脚本文件

文件扩展名

说明

.c

.cpp

.h

.o

.pl

.py

.so

.sh

.java

.lcss

.ctl

C程序语言源码文件

C+程序语言的源码文件

CC++程序语言的头文件

程序的对象文件

Perl脚本

Python脚本

库文件

shell脚本

java程序源代码

java程序源代码编译后的中间代码文件

TCL脚本

 

3. 文件的权限

3.1 【文件权限概述】

Linux中的文件或目录权限和用户及用户组关系很大,要理解这部分内容,徐亚先了解Linux系统中用户管理方面额知识。

Linux中每个文件或目录都有一组9个基本权限位,每三个字符被分为一组,他们分别是属主权限位(占三个字符)、用户组权限位(占三个字符)、其他用户权限位(占三个字符)。比如rexr-xr-x,在Linux中正式这9个权限(更多权限位会在后面提到)位来控制文件属性、用户组以及其他用户的权限。如下图所示:

 

3.2 【权限位说明】

Linux文件或目录的权限室友9个权限位来控制,没三位为一组,文件的所有者权限:User Owner的读、写、执行,未见所有者属于的组的权限:Group用户组(Group)的读、写、执行,其他人Other其他用户的读、写、执行:

 

       rread)可读权限,对应数字4

       w(write)可写权限,对应数字2

       x(execute)可执行权限,对应数字1

-          没有任何权限,对应数字0

[root@test testdir]# ll -d /tmp /usr/bin/passwd `which locate` /bin/ls
-rwxr-xr-x. 1 root root    117048 May 11  2016 /bin/ls
drwxrwxrwt. 8 root root      4096 Mar 28 10:37 /tmp
-rwx--s--x. 1 root slocate  38464 Mar 12  2015 /usr/bin/locate
-rwsr-xr-x. 1 root root     30768 Nov 24  2015 /usr/bin/passwd
[root@test testdir]#

4. 链接

4.1 【链接的概念】

Linux系统中,链接可以分为两种:一种为硬链接(Hard Link,另一种为软链接或符号链接Symbolic Link or Soft Link or symlink)。ln命令用来创建链接文件,在默认不带参数的情况下,执行ln命令创建的链接是硬链接

4.2 【硬链接】

硬链接是指通过索引节点(Inode)来进行链接。在Linuxext2ext3ext4)文件系统中,保存在磁盘分区中的文件不管是什么类型都会给它分配一个编号,这个编号被称为索引节点编号(Index Inode)简称Ionde,即在系统中文件的编号。(身份证号码

       Linux同一个文件系统中,多个文件名指向同一个索引节点inode号相同)(Inode)是正常且允许的。这种情况的文件就称为硬链接

       在同一个文件系统中(装修风格),多根文件的inode号码相同,这些文件就互为硬链接文件。

       硬链接文件就相当于文件的另一个入口。硬链接的作用是允许一个文件拥有多个有效路径名(多个入口相当于超市的多个门),这样用户就可以建立硬链接到重要的文件,防止“误删”元数据(很多硬件存储,如netapp存储中的快照功能就应用了这个原理,增加一个快照就多了一个硬链接)。

       Linux系统中,删除静态文件(没有进程调用)(目录也是文件)的调节是与之相关的所有硬链接文件均被删除(暂时可以这样理解)

 

       硬链接的创建:

              直接执行命令“ln 源文件(给谁创建硬链接 目标) 硬链接文件”

4.2.1 【目录的硬链接】

目录本身,以及目录下的"."目录都是其硬链接。

[root@oldboyedu-35 /]# ll -d /oldboydir/        #/oldboy目录两个硬链接
drwxr-xr-x. 2 root root 4096 Mar 23 14:22 /oldboydir/
[root@oldboyedu-35 /]# ll -d /oldboydir/ /oldboydir/.
drwxr-xr-x. 2 root root 4096 Mar 23 14:22 /oldboydir/
drwxr-xr-x. 2 root root 4096 Mar 23 14:22 /oldboydir/.
[root@oldboyedu-35 /]#

目录本身以及其下一级目录中的".."目录也属于其硬链接。(注意:目录的硬链接只能到其下一级目录

[root@oldboyedu-35 /]# mkdir /oldboydir/test/
[root@oldboyedu-35 /]# ll -d /oldboydir/        #/oldboy
目录有三个硬链接
drwxr-xr-x. 3 root root 4096 Mar 23 14:25 /oldboydir/
[root@oldboyedu-35 /]# ll -d /oldboydir/ /oldboydir/. /oldboydir/test/..
drwxr-xr-x. 3 root root 4096 Mar 23 14:25 /oldboydir/
drwxr-xr-x. 3 root root 4096 Mar 23 14:25 /oldboydir/.
drwxr-xr-x. 3 root root 4096 Mar 23 14:25 /oldboydir/test/..
[root@oldboyedu-35 /]#

4.2.2 【硬链接知识小结】

1)来源

        a)通过执行“ln 源文件(给谁创建硬链接 目标) 硬链接文件”,即可完成创建硬链接。

        b)在同一文件系统中,具有相同的inode节点的多个文件时互为硬链接文件

2)特点

        a)硬链接与删除

               i.删除硬链接文件或者删除源文件任何之一,文件实体(block数据 文件内容)并未被删除。

               ii.只有删除了源文件及所有对应的硬链接文件(硬链接数为0),文件实体(block 数据 文件内容)才会被删除。(暂不考虑进程调用)

               iii.当所有的硬链接文件被删除后,再存放新的数据占用这个文件的空间,或者磁盘fsck检查的时候,删除的数据也会被系统回收(养成删除及多套测试环境的好习惯)。

        b)硬链接文件就是文件的另一个入口(相当于超市的前后门一样)。

        c)可以通过给文件设置硬链接文件,来防止重要文件被误删。

        d硬链接文件普通文件,因此可以用rm命令删除。

        e)文件彻底删除:

               i.对于静态文件(没有进程正在调用的文件)来讲,当对应硬链接数0i_link),文件就被删除。

 

4.2.3 【查看文件的硬链接数】

1ls -lhi / stat, i_link的查看方法(ls -lhi结果的第三列就是)。

 

4.3 【软链接】

4.3.1 【软链接的概念】

软链接(Soft Link)也称为符号链接(Symbolic Link symlink)。Linux里的软链接文件就类似于windows系统中的快捷方式。linux里的软链接实际上是一个特殊的文件,文件类型是l。软链接实际上可以理解为一个文本文件,这个文件中包含有软链接指向另一源文件的位置信息内容,因此,通过访问这个“快捷方式”就可以迅速定位到软链接所指向的源文件实体。

 

       软链接的创建:

              执行命令“ln -s 源文件 软链接文件”,即可完成创建软链接。

       误区:创建软链接源文件是需要存在的,要创建的软链接文件时不能存在的,是要用ln命令创建的。

 

4.3.2 【软链接知识小结】

1)创建:

       a)执行命令“ln -s 源文件 软链接文件”,即可完成创建软链接。

       2)含:

              a)软链接类似windows快捷方式(可以通过readlink查看其指向,ls -l)。

              b)软链接类似一个文本文件,里面存放的是源文件的路径/位置ls -l),指向源文件名/位置。

       3)特点:

              a)删除源文件,软链接文件依然存在,知识无法访问源文件(但是无妨访问指向源文件路径内容了)。

              b)失效的时候一般是白字红底闪烁提示。

              c)软链接和源文件是不同类型的文件,也是不同的文件。inode号码也不同。

       4)软链接文件的类型为"l(细目L",可以用rm命令删除。

4.4 【软连与硬链接的区别】

Linux系统中,链接分为两种:一种被称为硬链接(Hard Link),另一种被称为符号链接或软链接(Symbolic Link)。

4.4.1 【如何创建:】

1)默认不参数的情况下,ln命令创建的是硬链接,带参数-sln命令创建的是软链接

4.4.2 【含义:】

1)硬链接文件与源文件的inode节点号相同,而软链接相当于windows下面的快捷方式(inode节点号与原文件不同)。

4.4.3 【特点:】

       1不能对目录创建硬链接,但可以创建软链接,对目录的软链接经常会被用到。

       2)软链接可以跨文件系统,硬链接不可以跨文件系统。

4.4.4 【删除:】

1删除软链接文件,对源文件无任何影响;

2删除文件的硬链接文件,对源文件及软链接无任何影响;

3删除链接文件的源文件,对硬链接文件无影响,会导致软链接失效(红底白字闪烁状);

4同时删除源文件及其硬链接文件,整个文件才会被"真正"的删除

 

 

4.5 【企业案例】在配置Apache时,执行了./configure --prefix=/application/apache2.2.17来编译apache,在make instal完成后,希望用户的访问路径更简单,需要给/application/apache2.2.17目录做一个软链接/application/apache,使得内部开发或管理人员通过/application/apache就可以访问到apache的安装目录/appliction/apache2.2.17下的内容,请你给出实现的命令。(提示:apache为一个httpd web服务)

软件的安装位置 /application/apache2.2.17              给开发人员使用 /application/apache2.2.17

升级软件,新的软件安装位置    /application/apache2.4.17

 

 

 

[root@oldboyedu-35 /]# mkdir -p /application/apache2.2.17 /application/apache2.4.17

[root@oldboyedu-35 /]# ln -s /application/apache2.2.17/ /application/apache

[root@oldboyedu-35 /]# ll /application/

total 8

lrwxrwxrwx. 1 root root   26 Mar 21 21:23 apache -> /application/apache2.2.17/

drwxr-xr-x. 2 root root 4096 Mar 21 21:22 apache2.2.17

drwxr-xr-x. 2 root root 4096 Mar 21 21:22 apache2.4.17

[root@oldboyedu-35 /]# \rm -f /application/apache

[root@oldboyedu-35 /]# ln -s /application/apache2.4.17/ /application/apache

[root@oldboyedu-35 /]# ll /application/

total 8

lrwxrwxrwx. 1 root root   26 Mar 21 21:26 apache -> /application/apache2.4.17/

drwxr-xr-x. 2 root root 4096 Mar 21 21:22 apache2.2.17

drwxr-xr-x. 2 root root 4096 Mar 21 21:22 apache2.4.17

[root@oldboyedu-35 /]#

 

4.6 【链接总结】

4.6.1 【有关文件的链接小结】

①删除软链接文件对源文件及硬链接文件无任何影响;

②删除硬链接文件对源文件及软链接文件无任何影响;

③删除源文件,对硬链接文件没有影响,但会导致软链接文件失效,白字红底闪烁。

④同时删除源文件和硬链接(静态文件),文件会被真正删除。

4.6.2 【有关目录链接的小结】

①对于目录,不可以创建硬链接,但可以创建软链接。

②对于目录的软链接是生产场景运维中常用的技巧。

③由于目录的硬链接不能跨越文件系统(分区)(从硬链接原理理解)。

④每个目录下面都会有一个硬链接"."号,和对应上级目录的硬链接".."

⑤在父目录里面创建一个子目录,父目录的链接数增加1(每个子目录里面都有..来指向父目录)。但是再父目录里创建文件,父目录的链接数不会增加。

 

5.  文件的时间属性

5.1 【文件被修改或被访问的时间】

mitmemodify time):文件或目录的修改时间,文件内容修改。

ctimechange time):文件或目录属性的修改时间,大小,硬链接数,权限,所有者,所属于的组,类型。

atimeaccess time):文件或目录的访问时间,cat查看。

 

5.1.1 mitme

[root@test testdir]# stat oldboy.txt

  File: `oldboy.txt'

  Size: 246         Blocks: 8          IO Block: 4096   regular file

Device: 803h/2051d  Inode: 284823      Links: 1

Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

Access: 2017-03-24 09:16:43.329297303 +0800         #atime,查看文件内容后,改时间更新,有一定限制

Modify: 2017-03-24 09:16:30.982451900 +0800         #mtime,文件的内容修改后该时间才会更新

Change: 2017-03-24 09:16:30.982451900 +0800         #ctime,文件属性发生改变之后才会更新

[root@test testdir]#

 

[root@test testdir]# echo "modify time changed." >> /oldboy/oldboy.txt #修改文件内容

[root@test testdir]# stat oldboy.txt

  File: `oldboy.txt'

  Size: 267         Blocks: 8          IO Block: 4096   regular file

Device: 803h/2051d  Inode: 284823      Links: 1

Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

Access: 2017-03-24 09:16:43.329297303 +0800

Modify: 2017-03-25 11:39:07.776088559 +0800         #文件的mitme更新到最近一次修改内容的时间

Change: 2017-03-25 11:39:07.776088559 +0800

[root@test testdir]#

 

5.1.2 ctime

[root@test testdir]# stat oldboy.txt

  File: `oldboy.txt'

  Size: 246         Blocks: 8          IO Block: 4096   regular file

Device: 803h/2051d  Inode: 284823      Links: 1

Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

Access: 2017-03-24 09:16:43.329297303 +0800         #atime,查看文件内容后,改时间更新,有一定限制

Modify: 2017-03-24 09:16:30.982451900 +0800         #mtime,文件的内容修改后该时间才会更新

Change: 2017-03-24 09:16:30.982451900 +0800         #ctime,文件属性发生改变之后才会更新

[root@test testdir]#

 

 

[root@test testdir]# ln /oldboy/oldboy.txt oldboy.txt_link  #修改文件的硬链接数

[root@test testdir]# stat oldboy.txt

  File: `oldboy.txt'

  Size: 267         Blocks: 8          IO Block: 4096   regular file

Device: 803h/2051d  Inode: 284823      Links: 2

Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

Access: 2017-03-24 09:16:43.329297303 +0800

Modify: 2017-03-25 11:39:07.776088559 +0800

Change: 2017-03-25 11:42:21.192660572 +0800         #文件的ctime更新到最近一次修改文件属性的时间

[root@test testdir]#

 

5.1.3 atime

[root@test testdir]# stat oldboy.txt

  File: `oldboy.txt'

  Size: 246         Blocks: 8          IO Block: 4096   regular file

Device: 803h/2051d  Inode: 284823      Links: 1

Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

Access: 2017-03-24 09:16:43.329297303 +0800         #atime,查看文件内容后,改时间更新,有一定限制

Modify: 2017-03-24 09:16:30.982451900 +0800         #mtime,文件的内容修改后该时间才会更新

Change: 2017-03-24 09:16:30.982451900 +0800         #ctime,文件属性发生改变之后才会更新

[root@test testdir]#

 

 

[root@test testdir]# cat oldboy.txt         #查看文件内容

I am oldboy teacher!

I teach linux.

 

I like badminton ball ,billiard ball and chinese chess!

my blog is http://oldboy.blog.51cto.com

our site is http://www.etiantian.org

my qq num is 49000448.

 

not 4900000448.

my god ,i am not oldbey,but OLDBOY!

modify time changed.

[root@test testdir]# stat oldboy.txt

  File: `oldboy.txt'

  Size: 267         Blocks: 8          IO Block: 4096   regular file

Device: 803h/2051d  Inode: 284823      Links: 2

Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

Access: 2017-03-25 11:44:52.725757426 +0800     #atime更新到最近一次查看文件内容的时间,但是,atime改变有一定时间限制,不能短时间内多次修改

Modify: 2017-03-25 11:39:07.776088559 +0800                

Change: 2017-03-25 11:42:21.192660572 +0800

[root@test testdir]#

 

touch命令可以不修改文件内容来修改文件访问时间。


转载至http://blog.sina.com.cn/s/blog_bea8af1a0102xk4a.html

Logo

更多推荐