Linux系统目录结构

  • . :当前目录,也可以用 ./ 表示;
  • .. :上一级目录,也可以用 ../ 表示;
  • ~ : 用户自己的宿主目录;
  • / :根目录
    • Linux文件系统树形结构的最顶端,称为 Linux 文件系统的 root,它是 Linux 文件系统的入口。所有的目录、文件、设备都在 / 之下,它是 Linux 文件系统最顶层的唯一的目录;
    • 一般建议在根目录下面只有目录,不直接存放文件;
    • 根目录是 linux 系统启动时系统第一个载入的分区,所以启动过程中用到的文件应该都放在这个分区中,其中 /etc/bin/dev/lib/sbin 这 5 个子目录都应该要与根目录连在一起,不可独立成为某个分区;
  • /bin:含了引导启动所需的命令或普通用户可能用的命令(可能在引导启动后)。这些命令都是二进制文件的可执行程序(bin是binary的简称),多是系统中重要的系统文件
  • /sbin:类似 /bin ,也用于存储二进制文件。因为其中的大部分文件多是系统管理员使用的基本的系统程序,所以虽然普通用户必要且允许时可以使用,但一般不给普通用户使用,多数管理命令默认只有管理员可以使用
  • /etc :存放着各种系统的管理和配置文件
  • /root:超级用户 root 的家目录
  • /lib:根文件系统上的程序所需的共享库,存放了根文件系统程序运行所需的共享文件。 这些文件包含了可被许多程序共享的代码,以避免每个程序都包含有相同的子程序的副本,故可以使得可执行文件变得更小,节省空间。

    • /lib/modules :包含系统核心可加载各种模块,尤其是那些在恢复损坏的系统时重新引导系统所需的模块(例如网络和文件系统驱动)。
  • /boot:目录存放引导加载器(bootstrap loader)使用的文件,包括开机启动加载程序的核心文件;(如kernel和grub)
  • /mnt :临时挂载用的设备挂载点;(如磁盘分区,网络共享)
  • /media:移动存储设备默认挂载点;(如光盘)
  • /opt:额外所安装的应用程序目录,有些软件包我们可以将它安装在该目录中;(一般为空,某些应用软件安装需要这个目录)
  • /tmp:临时文件存放区域,默认被设置了粘滞位,存放程序在运行时产生的信息和数据
  • /dev:设备文件目录,即设备驱动程序,用户通过这些文件访问外部设备。比如,用户可 以通过访问/dev/mouse来访问鼠标的输入,就像访问其他文件一样,设备文件分为 2 种类型:字符设备文件和块设备文件

    • /dev/console:系统控制台,也就是直接和系统连接的监视器;
    • /dev/hd:IDE设备文件
    • /dev/sd:sata、usb、scsi等设备文件
    • /dev/fd:软驱设备文件
    • /dev/tty:虚拟控制台设备文件
    • /dev/pty:提供远程虚拟控制台设备文件
    • /dev/null:数据”黑洞”,所有写入该设备的信息都将消失,如当想要将屏幕上的输出信息隐藏起来时,只要将输出信息输入到 /dev/null 中即可;
  • /home:默认存放用户的宿主目录(除了 root 用户)

    • /home/~/.bashrc:提供 bash 环境中所需使用的别名;
    • /home/~/.bash_profile:提供 bash 环境所需的变量;
    • 一般先执行 .bashrc 后,才会再执行 .bash_profile
    • /home/~/.bash_history:用户历史命令文件,记录用户曾经输入过的所有命令;(默认为1000条,可以通过 HISTSIZE 变量更改)
    • /home/~/.bash_logout:当用户注销的同时,系统会自动执行 .bash_logout 文件,如果管理员需要记录用户注销的一些额外记录、动作或其他信息,就可以利用这个机制去完成;
  • /lost+found:当系统在运行时,有时会无法避免宕机、断电或不正常重启动,在这样的情况下,当系统重新启动时,发现某些文件写入未完成或其他问题产生,一般会使用 fsck 进行文件修复,而这些被修复或救回的文件,就会被放在这个目录下,只要是一个文件系统,系统就会自动在该文件系统所在的目录下建立 lost+found 目录
  • /sys:虚拟文件系统,被建立在内存中,是在2.6版的kernel之后才被加入到正式的文件系统中,以分类的方式将系统的信息存放在这个目录中,以方便linux用户通过不同的分类找出系统相关的信息;
  • /proc:虚拟文件系统,此目录是 kernel 加载后,在内存里面建立的一个虚拟目录,有专属的文件系统,主要提供系统一些实时的信息,此目录下不能建立和删除文件;(某些文件可以修改);/proc 主要作用可以整理为:

    • 整理系统内部的信息;
    • 存放主机硬件信息;
    • 调整系统执行时的参数;
    • 检查及修改网络和主机的参数;
    • 检查及调整系统的内存和性能;
    • /proc下常用的信息文件有:
      • /proc/cpuinfo:cpu的硬件信息,如类型、厂家、型号和性能等
      • /proc/devices:记录所有在 /dev 目录中相关的设备文件分类方式
      • /proc/filesystems:当前运行内核所配置的文件系统
      • /proc/interrupts:可以查看每一个IRQ的编号对应到哪一个硬件设备
      • /proc/loadavg:系统”平均负载”,3个数据指出系统当前的工作负载
      • /proc/dma:当前正在使用的DMA通道
      • /proc/ioports:将目前系统上所有可看到的硬件对应到内存位置的分配表的详细信息呈现出来
      • /proc/kcore:系统上可以检测到的物理内存,主机内存多大,这个文件就有多大
      • /proc/kmsg:在系统尚未进入操作系统阶段,把加载 kernel 和 initrd 的信息先记录到该文件中,后续会将日志信息写入/var/log/message文件中
      • /proc/meminfo:记录系统的内存信息
      • /proc/modules:与lsmod命令查看到的模块信息完全一致
      • /proc/mtrr:负责内存配置的机制
      • /proc/iomem:主要用于储存配置后所有内存储存的明细信息
      • /proc/partitions:这个文件可以实时呈现系统目前看到的分区
      • /proc/数字目录:数字目录很多,它们代表所有目前正在系统中运行的所有程序
      • /proc/bus:有关该主机上现有总线的所有信息,如输入设备、PCI接口、PCMCIA扩展卡及USB接口信息
      • /proc/net:存放的都是一些网络相关的虚拟配置文件,都是ASCII文件,可以查看(与ifconfig、arp、netstat等有关)
      • /proc/scsi:保存系统上所有的scsi设备信息(包括sata和usb设备的信息)
      • /proc/sys :存放系统核心所使用的一些变量,根据不同性质的文件而存放在不同的子目录中,可以通过/etc/sysctl.conf文件设置和更改其默认值;变量时实时的变更,有很多设置很象是开关,设置后马上生效;
      • /proc/tty:存放有关目前可用的正在使用的tty设备的信息
      • /proc/self:存放到查看/proc的程序的进程目录的符号连接,当2个进程查看proc时,这将会是不同的连接;主要便于程序得到它自己的进程目录;
      • /proc/stat:系统的不同状态信息;
      • /proc/uptime:系统启动的时间长度;
      • /proc/version:系统核心版本;
  • /usr:安装除操作系统本身外的一些应用程序或组件,一般可以认为linux系统上安装的应用程序默认都安装在此目录中

    • /usr/bin:一般用户有机会使用到的程序,或者该软件默认就是要让所有用户使用才会放在该目录中
    • /usr/sbin:一些系统有可能会用到的系统命令,与 /sbin 比起来,都是一些较次要的文件;
    • /usr/etc:自行安装或非系统主要的配置文件目录;
    • /usr/games:只要是电脑游戏相关的软件,就都安装到这个目录;
    • /usr/include:存放的文件都是一些系统中用户所会使用到的C语言header文件,保存的都是”.h”的文件;
    • /usr/lib:存放一些函数库、执行文件及连接文件,特别的是,存放在这里面的文件都是不希望直接被用户或shell脚本所使用的文件,在/usr/lib中有非常多的子目录,每一个软件都有其各自所需的函数库;
    • /usr/libexec:这个目录下的文件及文件夹应该都可以放置在/usr/lib下;
    • /usr/local:linux系统中安装的共享软件程序最好的方式是安装在 /usr/local 下,按照linux标准目录结构,新建立的软件都应该放在/usr/local下;
      • /usr/local/bin:存放软件执行文件的目录;
      • /usr/local/sbin:同样存放软件执行文件的目录,但此目录专门针对系统所使用的文件;
      • /usr/local/lib:软件相关的函数库;
      • /usr/local/share:当文件性质不好归属时就会放在此,man手册就放在这个目录下;
      • /usr/local/src:所安装软件的源代码放置在此;
    • /usr/share:此目录都是一些共享信息,最常被用到的就是 /usr/share/man 这个目录,/usr/share 里的信息时跨平台的;
      • /usr/share/doc:放置一些系统帮助文件的地方;
      • /usr/share/man:manpage的文件存放目录,也是使用man查看手册页时查询的路径;
    • /usr/src:主要储存内核源代码的文件;
    • /usr/X11R6:存放一些X windows系统的相关文件;
  • /var:动态文件或数据存放目录,默认日志文件都存放在这个目录下,一般建议把此目录单独划分一个分区;

    • /var/empty:默认是sshd程序用到的这个目录,当建立ssh连接,ssh服务器必须使用该目录下的sshd子目录
    • /var/ftp:ftp服务器软件一般默认会将匿名登陆的用户的宿主目录;
    • /var/lib:该目录下存放很多与应用程序名称同名的子目录,每个子目录下都是应用执行的状态信息;
    • /var/lock:每个服务一开始都会在这个目录下产生一个该服务的空文件,主要是避免服务启动冲突;
    • /var/log:常用目录,专门用来存放所有日志文件的目录,里面存放很多系统、软件、用户等相关的日志信息;里面有一些文件是比较常用的;

      • lastlog:记录用户最后一次登录的信息,使用lastlog命令读取;
      • message:记录系统的几乎所有信息,主要包括启动信息,syslogd服务记录的信息等;
      • wtmp:记录所有用户登陆及注销的信息,使用last命令读取;
      • secure:记录登录系统访问数据的文件,如ssh pop3 telnet ftp等都会记录在此文件中
      • btmp:记录失败的用户登录
      • boot.log:记录开机或一些服务启动时所显示的启动和关闭信息
      • /var/log/maillog/var/log/mail/*:记录邮件访问或往来的用户信息
      • cron: 记录 crontab 例行性服务的内容
      • dmesg:开机引导日志信息
      • sudolog:纪录使用sudo发出的命令
      • /var/run:此目录中的大部分文件都记载目前系统正在执行程序的PID值,每一个文件都是以个独立的PID记录;此目录下存放一个特殊文件utmp,此文件记录目前谁在使用系统,必须使用utmpdump命令才能看到其中的内容;
    • /var/spool:里面主要都是一些临时存放,随时会被用户所调用的数据;打印机、邮件、代理服务器等假脱机目录存放在该目录下;
    • /var/tmp:专门为了一些应用程序在安装或执行时,需要在重启后使用的某些文件时,能将该文件暂时存放在这个目录中,完成后再行删除;
有钱任性,请我吃包辣条
0%