Linux目录结构及作用

在工作中发现,有人在拷贝数据时,会习惯先把数据打包到/tmp目录。Airnet系统为什么偏偏在/home/Airnet目录下。原因在于,虽然在Linux下一切皆文件,但是在不同的目录,代表不同的功能。比如/home代表用户家目录。/tmp代表临时文件目录,/dev代表设备目录等等。

1.Linux目录

首先来看Linux根目录/下有哪些目录及文件。

Linux目录与windows目录区别

Linux目录和Windows目录有着很大的不同,Linux目录类似一个树,最顶层是其根目录,如下图:

Linux常见目录及其作用

目录名目录的作用
.表示当前目录。
..表示上一级目录。
/bin存放系统命令的目录,普通用户和超级用户都可以执行。是/usr/bin/目录的软链接。
/sbin存放系统命令的目录,只有超级用户才可以执行。是/usr/sbin/目录的软链接。
/usr/bin存放系统命令的目录,普通用户和超级用户都可以执行。
/usr/sbin存放系统命令的目录,只有超级用户才可以执行。
/boot系统启动目录,保存于系统启动相关的文件,如内核文件和启动引导程序(grub)文件等 。
/dev设备文件保存位置。
/etc配置文件保存位置。系统内所有采用默认安装方式(rpm安装)的服务配置文件全部保存在此目录中,如用户信息、服务的启动脚本、常用服务的配置文件等。
/home普通用户的家目录。在创建用户时,每个用户要有一个默认登录和保存自己数据的位置,就是用户的家目录,所有普通用户的宿主目录是在/home/下建立一个和用户名相同的目录(默认)。如用户user1的家目录就是/home/user1。
/lib系统调用的函数库保存位置。是/usr/lib64/的软链接。
/lib6464位函数库保存位置。是/usr/lib64/的软链接。
/lost+found当系统意外崩溃或机器意外关机,而产生的一些文件碎片放在这里。当系统启动的过程中国fsck工具会检查这里,并修复已经损坏的文件系统。这个目录只在每个分区中出现,例如 /lost+found 就是根分区的备份恢复目录,/boot/lost+found 就是 /boot 分区的备份恢复目录。
/media挂载目录。系统建议用来挂载媒体设备的,如软盘和光盘。
/misc挂载目录。系统建议用来挂载NFS服务的共享目录。
/mnt挂载目录。早期Linux只有这一个挂载目录,并没有细分。现在系统建议这个目录用来挂载额外的设备,如U盘、移动硬盘和其他操作系统的分区。同时也可以根据个人习惯在 /mnt 下建立不同目录挂载不同的设备,如 /mnt/cdrom 挂载光盘,/mnt/usb 挂载U盘等。
/opt第三方安装的软件保存位置。这个目录是放置和安装其他软件的位置,手工安装的源码包软件都可以安装到这个目录中。按个人习惯可以将软件放到 /usr/local/ 目录中,也就是说,/usr/local/ 目录也可以用来安装软件。
/proc虚拟文件系统。该目录中的数据并不保存在硬盘上,而是保存在内存中。主要保存系统的内核、进程、外部设备状态等。如 /proc/cpuinfo 是保存CPU信息的,/proc/devices 是保存设备驱动列表的,/proc/filesystems 是保存文件系统列表的,/proc/net 是保存网络协议信息的....
/sys虚拟文件系统。和/proc/目录相似,该目录中的数据都保存在内存中,主要保存与内核相关的信息。
/rootroot的宿主目录。普通用户宿主目录在 /home/ 下,root宿主目录直接在 “/” 下。
/run系统运行时产生的数据,如SSID,PID等相关数据。/var/run/ 是此目录的软链接。
/srv服务数据目录。一些系统服务启动之后,可以在这个目录中保存所需要的数据。
/tmp临时目录。系统存放临时文件的目录,在该目录下,所有用户都可以访问和写入。建议此目录中不保存重要数据。
/usr系统软件资源目录。注意usr不熟user的缩写,而是“UNIX Software Resource”的缩写,所以不是存放用户数据的目录,而是存放系统软件资源的目录。系统中安装的软件大多数保存在这里。
/usr/lib应用程序调用的函数库保存位置。
/usr/local手工安装软件保存位置。建议源码包软件安装在这个位置。
/usr/share应用程序的资源文件保存位置,如帮助文档、说明文档和字体目录。
/usr/src源码包保存位置。我们手工下载的源码包和内核源码包都可以保存到这里。按个人习惯不同,可把手工下载的源码包保存到 /usr/local/src/ 目录中,把内核源码保存到 /usr/src/kernels/ 目录中。
/usr/src/kernels内核源码保存位置。
/var动态数据保存位置。主要保存缓存、日志以及软件运行所产生的文件。
/var/www/htmlRPM包安装的Apache(Apache为Web服务器)的网页主目录。
/var/lib程序运行中需要调用或改变的数据保存位置。如MYSQL数据库保存在 /var/lib/mysql/ 目录中。
/var/log系统日志保存位置。
/var/run一些服务和程序运行后,他们的PID(进程ID)保存位置。是 /run/ 目录的软链接。
/var/spool放置队列数据的目录。就是排队等待其他程序使用的数据,比如邮件队列和打印队列。
/var/spool/mail新收到的邮件队列保存位置。系统新都到的邮件会保存到此目录。
/var/spool/cron系统的定时任务队列保存位置。系统的计划任务会保存在这里。

2.重要目录详细介绍

下面对 /etc/dev/usr/var/proc目录进行详细介绍。

/etc文件目录

/etc 目录包含各种系统配置文件,下面说明其中的一些。许多网络配置文件也在/etc 中。

/etc配置文件保存位置
/etc/rc.d启动、或改变运行级时运行的脚本或脚本的目录。
/etc/passwd用户数据库,其中的域给出了用户名、真实姓名、用户起始目录、加密口令和用户的其 他信息。
/etc/fstab指定启动时需要自动安装的文件系统列表。
/etc/group类似/etc/passwd ,但说明的不是用户信息而是组的信息。包括组的各种数据。
/etc/inittabinit 的配置文件。
/etc/issue包括用户在登录提示符前的输出信息。通常包括系统的一段短说明或欢迎信息。具体内容由系统管理员确定。
/etc/magic“file”的配置文件。包含不同文件格式的说明,“file”基于它猜测文件类型。
/etc/motdmotd是message of the day的缩写,用户成功登录后自动输出。内容由系统管理员确定。常用于通告信息,如计划关机时间的警告等。
/etc/mtab当前安装的文件系统列表。由脚本(scritp)初始化,并由mount命令自动更新。当需要一个当前安装的文件系统的列表时使用(例如df命令)。
/etc/shadow在安装了影子(shadow)口令软件的系统上的影子口令文件。影子口令文件将 /etc/passwd 文件中的加密口令移动到 /etc/shadow中,而后者只对超级用户(root)可读。这使破译口令更困难,以此增加系统的安全性。
/etc/login.defslogin命令的配置文件。
/etc/printcap类似 /etc/termcap ,但针对不同打印机。语法不同。
/etc/profile
/etc/csh.login
/etc/csh
登录或启动时bourne或c shells执行的文件。这允许系统管理员为所有用户建立全局缺省环境。
/etc/securetty确认安全终端,即哪个终端允许超级用户(root )登录。一般只列出虚拟控制台,这样就不可能(至少很困难)通过调制解调器(modem)或网络闯入系统并得到超级用户特权。
/etc/shells列出可以使用的shell。chsh 命令允许用户在本文件指定范围内改变登录的shell。提供一台机器ftp服务的服务进程ftpd检查用户shell是否列在 /etc/shells 文件中,如果不是,将不允许该用户登录。

/dev文件目录

/dev 目录包括所有设备的设备文件。设备文件用特定的约定命名。

/dev设备文件保存位置。
/dev/console系统控制台,也就是直接和系统连接的监视器。
/dev/hdide硬盘驱动程序接口。如:/dev/hda指的是第一个硬盘,hda1则是指/dev/hda的第一个分区。如系统中有其他的硬盘,则依次为/dev/hdb、/dev/hdc、...... ;如有多个分区则依次为 hda1、hda2 ......(小编电脑没有ide硬盘所有没有这个设备文件名)
/dev/sdscsi磁盘驱动程序接口。如有系统有scsi硬盘,就不会访问 /dev/hda,而会访问 /dev/sda。
/dev/fd软驱设备驱动程序。如:/dev/fd0 指系统的第一个软盘,也就是通常所说的a:盘,/dev/fd1指第二个软盘......而 /dev/fd1 h1440 则表示访问驱动器1中的4 . 5高密盘。
/dev/stscsi磁带驱动器驱动程序。
/dev/tty提供虚拟控制台支持。如:/dev/tty1 指的是系统的第一个虚拟控制台,/dev/tty2 则是系统 的第二个虚拟控制台。
/dev/pty提供远程登陆伪终端支持。在进行telnet登录时就要用到/dev/pty设备。
/dev/ttys计算机串行接口,对于dos来说就是“com1”口。
/dev/cua计算机串行接口,与调制解调器一起使用的设备。
/dev/null“黑洞”,所有写入该设备的信息都将消失。例如:当想要将屏幕上的输出信息隐藏起来时,只要将输出信息输入到 /dev/null 中即可。

注意:只有当电脑接入该设备的时候才有相对应的设备文件名,否则没有。

/usr文件目录

/usr系统软件资源目录。注意usr不熟user的缩写,而是“UNIX Software Resource”的缩写,是存放系统软件资源的目录。系统中安装的软件大多数保存在这里。

/usr系统软件资源目录。
/usr/bin集中了几乎所有用户命令,是系统的软件库。另有些命令在/bin 或 /usr/local/bin 中。
/usr/sbin包括了根文件系统不必要的系统管理命令,例如多数服务程序。
/usr/include包含了c语言的头文件,这些文件多以 .h 结尾,用来描述c语言程序中用到的数据结构、子过程和常量。为了保持一致性,这实际上应该放在/usr/lib 下,但习惯上一直沿用了这个名字。
/usr/lib包含了程序或子系统的不变的数据文件,包括一些site-wide配置文件。名字lib来源于库(library); 编程的原始库也存在 /usr/lib 里。当编译程序时,程序便会和其中的库进行连接。也有许多程序把配置文件存入其中。
/usr/local本地安装的软件和其他文件放在这里。这与 /usr 很相似。 /usr 通常只包含系统发行时自带的程序,而 /usr/local 则是本地系统管理员用来自由添加程序的目录。
/usr/lib6464位函数库保存位置。
/usr/share它包含了各种程序间的共享文件,如字体,图标,文档等。
/usr/share/manman手册 。
/usr/share/doc类似应用程序的 man 手册。它包含程序的说明文件,默认配置文件等。
/usr/srclinux 内核的源码和说明文档等。
/usr/tmp已经被众多发行版抛弃的临时文件夹。
/usr/games曾经包含游戏等文件,现在很少用到 。
/usr/etc一个极少用到的配置文件存放地。

/var文件目录

/var 包含系统一般运行时要改变的数据。通常这些数据所在的目录的大小是要经常变化或扩充的。主要保存缓存、日志以及软件运行所产生的文件。原来 /var目录中有些内容是在 /usr中的,但为了保持 /usr目录的相对稳定,就把那些需要经常改变的目录放到 /var 中了。每个系统是特定的,即不通过网络与其他计算机共享。

/var动态数据保存位置。主要保存缓存、日志以及软件运行所产生的文件。
/var/run保存在下一次系统引导前有效的关于系统的信息文件和系统启动后的在该系统中正在运行的进程pid号,并非所有的进程都在该目录下存在pid文件。每个pid文件的作用与其应用程序相关,基本的作用就是标志该进程已经运行,且标志出该进程的pid号。在 /var/run/subsys/ 目录中有对应的文件。当系统启动后不用删除其中的文件,系统启动后会清除该目录中的文件。/var/run/utmp 是一个二进制文件,记录当前登录系统的用户信息。可用如who、w、users、finger命令显示当中的内容。该日志文件并不能包括所有精确的信息,因为某些突发错误会终止用户登录会话,而系统没有及时更新utmp记录,因此该日志文件的记录不是百分之百值得信赖的。
/var/spool放置“假脱机(spool)”程序的目录,如mail、news、打印队列和其他队列工作的目录。每个不同的spool在 /var/spool 下有自己的子目录,例如,用户的邮箱就存放在 /var/spool/mail 中。
/var/tmp应用程序产生的临时文件,可以定时整理。比 /tmp 允许更大的或需要存在较长时间的临时文件。注意系统管理员可能不允许 /var/tmp 有很旧的文件。
/var/local存放 /usr/local 中安装的程序的可变数据(即系统管理员安装的程序)。注意,如果必要,即使本地安装的程序也会使用其他 /var 目录,例如 /var/lock 。
/var/lock锁定文件。许多程序遵循在 /var/lock 中产生一个锁定文件的约定,以用来支持他们正在使用某个特定的设备或文件。其他程序注意到这个锁定文件时,就不会再使用这个设备或文件。注意该目录不可以随便更改。
/var/log各种程序的日志(log)文件,尤其是 login(/var/log/wtmp log纪录所有到系统的登录和注销) 和syslog (/var/log/messages 纪录存储所有核心和系统程序信息)。/var/log里的文件经常不确定地增长,应该定期清除。
/var/lib程序本身执行的过程中,需要使用到的数据文件放置的目录。在此目录下各自的软件应该要有各自的目录。 举例来说,MySQL的数据库放置到 /var/lib/mysql/ 而rpm的数据库则放到 /var/lib/rpm 去。
/var/mail放置个人电子邮件信箱的目录,不过这个目录也被放置到/var/spool/mail/目录中,通常这两个目录是互为链接文件。
/var/cache应用程序本身运作过程中会产生的一些暂存档 。保存在该目录中的数据应用程序可以再生成,所以该目录中的数据丢失后不会影响系统。
/var/crash通常当程序或系统崩溃的时候会在 /var/crash 里产生一个日志文件。 可以通过该文件分析down机的原因。
/var/emptysshd使用目录
/var/optadd-on application在该目录下存放变量,在/opt下存放静态变量。
/var/preserve存放非正常结束的vi会话的信息。

/proc文件目录

/proc 文件系统是一个伪的文件系统,就是说它是一个实际上不存在的目录,因而这是一个非常特殊的目录。它并不存在于某个磁盘上,而是由核心在内存中产生。这个目录用于提供关于系统的信息。

/proc虚拟文件系统,主要保存系统的内核、进程、外部设备状态等。
/proc/xx关于进程xx的信息目录,这一x是这一进程的标识号。每个进程在/proc 下有一个名为自己进程号的目录。
/proc/cpuinfo存放处理器(cpu)的信息,如cpu的类型、制造商、型号和性能等。
/proc/devices当前运行的核心配置的设备驱动的列表。
/proc/dma显示当前使用的dma通道。
/proc/filesystems核心配置的文件系统信息。
/proc/interrupts显示被占用的中断信息和占用者的信息,以及被占用的数量。
/proc/ioports当前使用的 I/O端口。
/proc/kcore系统物理内存映像。与物理内存大小完全一样,然而实际上没有占用这么多内存;它仅仅是在程序访问它时才被创建。(注意:除非你把它拷贝到什么地方,否则/proc 下没有任何东西占用任何磁盘空间。
/proc/kmsg核心输出的消息。也会被送到syslog。
/proc/loadavg系统“平均负载”,指示器指出系统当前的工作量。
/proc/meminfo各种存储器使用信息,包括物理内存和交换分区(swap)。
/proc/modules存放当前加载了哪些核心模块信息。
/proc/net网络协议状态信息。
/proc/self存放到查看 /proc 的程序的进程目录的符号连接。当2个进程查看 /proc 时,这将会是不同的连接。这主要便于程序得到它自己的进程目录。
/proc/stat系统的不同状态,例如,系统启动后页面发生错误的次数。
/proc/uptime系统启动的时间长度。
/proc/versionLinux核心版本