什么是文件
在linux系统上,所有的资源都是文件,Linux系统下的文件类型包括
- 普通文件(-)
- 目录(d)
- 符号链接(l)
- 字符设备文件(c)
- 块设备文件(b)
- 套接字(s)
- 命令管道(p)
普通文件:仅仅就是字节序列,Linux并没有对其内容规定任何结构。普通文件可以是任何文件,Linux不会区别对待这些文件,只有处理这些文件的应用程序才会根据文件的内容为它们赋予相应的含义。
在DOC和Windows环境中,所有的文件名的后缀就能表示该文件的类型,Linux环境下只要是可执行的文件并且具有可执行属性它就能执行,不管其文件名后缀是什么,常见的文件后缀
- *.txt:文本文件
- *.conf:配置文件
- *.html/*.xml/*.yml/*.sql:HTML/XML/YAML/SQL文件
- *.c/*.cpp:C/C++语言源程序文件
- *.so/*.ko/*.lib:模块文件、库文件
- *.sh/*.php/*.py/*.pl/*.rb:Shell/PHP/Python/Perl/Ruby 脚本文件
- *.rpm:RPM包
- *.tar:tar存档文件
- *.gz/*.bz2/*.xz:由gzip/bzip2/xz生成的压缩文件
- *.tar.gz/*.tgz/*.tar.bz2/*.tbz/*.tar.xz/*.txz:压缩后的tar包文件
- *.lock:用于表示某个程序或某种服务正在运行的锁文件
- *~备份文件
目录和硬链接
目录文件由一组目录项组成,目录项可以是对其他文件的指向也可以是其下的子目录指向。实际上,一个文件的名称是存储在其父目录中的,而非同文件内容本身存储在一起。
硬链接:将两个文件名(存储在其父目录的目录项中)指向硬盘上一个存储控制,对两个文件中的任何一个的内容进行修改都会影响到另外一个文件。实际上就是在某目录中创建目录项,从而使不止一个目录可以引用到同一个文件,增加/删除都会影响到文件的链接数
ps:硬链接并不是一种特殊类型的文件,只是在同一个文件系统中允许多个目录项指向同一个文件的一种机制。
1 # ln file1 file2
符号链接
符号链接又称软链接:是将一个文件指向另外一个文件的文件名。它只记录了要指向的文件名而已,所以占用空间很小,增加/删除文件的链接数是不会改变的,如果删除了指向目标文件,则指向文件会称为死链接
1 # ln -s file1 file2
设备文件
设备是指计算机中的外围硬件装置,即除了CPU和内存以外的所有设备。所有的硬件设备都放/dev目录下。
/dev/hd*:IDE硬盘设备,如hda1,a表示第一块硬盘,1表示第1个分区
/dev/sd*:SCSI/SATA/SAS/USB硬盘设备,如sda1,a表示第一块硬盘,1表示第1个分区
/dev/null:空设备,通常用于屏蔽命令行输出
Linux目录结构
/: 根目录,一般根目录下只存放目录,不要存放文件,/etc、/bin、/dev、/lib、/sbin应该和根目录放置在一个分区中
/bin:/usr/bin: 可执行二进制文件的目录,如常用的命令ls、tar、mv、cat等。
/boot: 放置linux系统启动时用到的一些文件。/boot/vmlinuz为linux的内核文件,以及/boot/gurb。建议单独分区,分区大小100M即可
/dev: 存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱mount /dev/cdrom /mnt。
/etc: 系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有/etc/inittab、/etc/fstab、/etc/init.d、/etc/X11、/etc/sysconfig、/etc/xinetd.d修改配置文件之前记得备份。注:/etc/X11存放与x windows有关的设置。
/home: 系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下,~表示当前用户的家目录,~test表示用户test的家目录。建议单独分区,并设置较大的磁盘空间,方便用户存放数据
/lib:/usr/lib:/usr/local/lib: 系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助,比较重要的目录为/lib/modules。
/lost+fount: 系统异常产生错误时,会将一些遗失的片段放置于此目录下,通常这个目录会自动出现在装置目录下。如加载硬盘于/disk 中,此目录下就会自动产生目录/disk/lost+found
/mnt:/media: 光盘默认挂载点,通常光盘挂载于/mnt/cdrom下,也不一定,可以选择任意位置进行挂载。
/opt: 给主机额外安装软件所摆放的目录。如:FC4使用的Fedora 社群开发软件,如果想要自行安装新的KDE 桌面软件,可以将该软件安装在该目录下。以前的 Linux 系统中,习惯放置在 /usr/local 目录下
/proc: 此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的目录有/proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/*等
/root: 系统管理员root的家目录,系统第一个启动的分区为/,所以最好将/root和/放置在一个分区下。
/sbin:/usr/sbin:/usr/local/sbin: 放置系统管理员使用的可执行命令,如fdisk、shutdown、mount等。与/bin不同的是,这几个目录是给系统管理员root使用的命令,一般用户只能"查看"而不能设置和使用。
/tmp: 一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下
/srv: 服务启动之后需要访问的数据目录,如www服务需要访问的网页数据存放在/srv/www内
/usr: 应用程序存放目录,/usr/bin 存放应用程序, /usr/share 存放共享数据,/usr/lib 存放不能直接运行的,却是许多程序运行所必需的一些函数库文件。/usr/local:存放软件升级包。/usr/share/doc: 系统说明文件存放目录。/usr/share/man: 程序说明文件存放目录,使用 man ls时会查询/usr/share/man/man1/ls.1.gz的内容建议单独分区,设置较大的磁盘空间
/var: 放置系统执行过程中经常变化的文件,如随时更改的日志文件 /var/log,/var/log/message: 所有的登录文件存放目录,/var/spool/mail: 邮件存放的目录, /var/run: 程序或服务启动后,其PID存放在该目录下。建议单独分区,设置较大的磁盘空间
具体目录结构参考:《Linux 目录结构》