Linux目录结构详解

Linux目录结构结构的构成

前言

对于绝大多数编程人员来说,对于 Linux 操作系统的目录应该是非常熟悉的。但往往只限于几个常用的目录,因此,本文以 Linux 操作系统的目录结构为基本,详细解释每个目录在操作系统中的意义所在。

文件系统的目录结构

前面的文章中提到过 Linux 文件系统 「一切皆文件」,Linux 操作系统的目录结构以树形来看的话,相当于一棵倒立的树。如果你使用 tree 来查看操作系统的目录结构,你会看到下面这种结构

[root@server /]# tree -L 1
.
├── bin -> usr/bin
├── boot
├── dev
├── etc
├── home
├── lib -> usr/lib
├── lib64 -> usr/lib64
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin -> usr/sbin
├── srv
├── sys
├── tmp
├── usr
└── var

我们根据顺序来看各目录的功能和用处。

/bin 目录

binBinaries(二进制文件) 的缩写,这个目录下存放着 操作系统的系统命令。这些命令都是经过编译后的二进制文件,使用 catvim 无法看到源程序的内容。可以通过 ls 查看该目录下的所有文件。

[root@server bin]# ls
[                                    fipscheck                    mv                        sgm_dd
a2p                                  fipshmac                     nail                      sg_modes
abrt-action-analyze-backtrace        firefox                      namei                     sg_opcodes
abrt-action-analyze-c                firewall-cmd                 ndptool                   sgp_dd
abrt-action-analyze-ccpp-local       firewall-offline-cmd         needs-restarting          sg_persist
...
find2perl                            msgmerge                     sg_logs                   znew
find-jar                             msgunfmt                     sg_luns                   zsoelim
findmnt                              msguniq                      sg_map
find-repos-of-install                ms_print                     sg_map26

/bin 目录下的文件都具有可执行权限。当你登录终端后,仅需要在终端输入对应的命令和参数即可执行该二进制文件。例如,你最常用的 cpmvls 等命令都位于 /bin 目录下。

/boot 目录

/boot 目录,是 Linux操作系统中至关重要的一个目录。该目录下存放着操作系统启动所需要的镜像文件和内核映像文件。若镜像文件损坏或丢失,服务器是无法启动的。

通过在 tree 命令查看 /boot 目录包含哪些文件

[root@server boot]# tree -L 2
.
├── config-3.10.0-1160.45.1.el7.x86_64
├── config-3.10.0-1160.el7.x86_64
├── efi
│   └── EFI
├── grub
│   └── splash.xpm.gz
├── grub2
│   ├── device.map
│   ├── fonts
│   ├── grub.cfg
│   ├── grubenv
│   ├── i386-pc
│   └── locale
├── initramfs-0-rescue-c0dbfe367e164c868e38906295f5dfa1.img
├── initramfs-3.10.0-1160.45.1.el7.x86_64.img
├── initramfs-3.10.0-1160.el7.x86_64.img
├── symvers-3.10.0-1160.45.1.el7.x86_64.gz
├── symvers-3.10.0-1160.el7.x86_64.gz
├── System.map-3.10.0-1160.45.1.el7.x86_64
├── System.map-3.10.0-1160.el7.x86_64
├── vmlinuz-0-rescue-c0dbfe367e164c868e38906295f5dfa1
├── vmlinuz-3.10.0-1160.45.1.el7.x86_64
└── vmlinuz-3.10.0-1160.el7.x86_64

7 directories, 16 files

可以看到,所有以 .x86_64 为后缀的文件表示当前操作系统是基于 「x86」架构的 64 位系统,不同架构的服务器对应的标识是不一样的;所有以 .img 位后缀的文件就是镜像文件了,其中以 initramfs- 为前缀的则表明是开机启动所需的镜像文件。以 vmlinuz- 为前缀的文件为服务器开机时需要加载的内核启动文件。

以第 17 行 initramfs-3.10.0-1160.45.1.el7.x86_64.img 为例进行说明

linux-2.png

grubefi 两个目录分别对应两种启动模式:legacyUEFI ,目录下的文件为对应启动引导项的配置文件。

system.map 文件为索引文件,以内存地址的格式记录内核中富豪连接的位置。

/dev 目录

devdevice(设备) 的简写。顾名思义,/dev/ 目录下存放操作系统上的所有外设设备,包含 块设备字符设备。进入 /dev/ 目录下查看目录下的文件

[root@server dev]# ls
autofs           dm-0       log                 ptmx      tty    tty20  tty33  tty46  tty59  uinput   vcs4   vga_arbiter
block            dm-1       loop-control        pts       tty0   tty21  tty34  tty47  tty6   urandom  vcs5   vhci
bsg              dri        mapper              random    tty1   tty22  tty35  tty48  tty60  usbmon0  vcs6   vhost-net
btrfs-control    fb0        mcelog              raw       tty10  tty23  tty36  tty49  tty61  usbmon1  vcsa   virtio-ports
bus              fd         mem                 rtc       tty11  tty24  tty37  tty5   tty62  usbmon2  vcsa1  vport2p1
cdrom            full       mqueue              rtc0      tty12  tty25  tty38  tty50  tty63  usbmon3  vcsa2  vport2p2
centos           fuse       net                 sg0       tty13  tty26  tty39  tty51  tty7   usbmon4  vcsa3  zero
char             hidraw0    network_latency     shm       tty14  tty27  tty4   tty52  tty8   usbmon5  vcsa4
console          hpet       network_throughput  snapshot  tty15  tty28  tty40  tty53  tty9   usbmon6  vcsa5
core             hugepages  null                snd       tty16  tty29  tty41  tty54  ttyS0  usbmon7  vcsa6
cpu              hwrng      nvram               sr0       tty17  tty3   tty42  tty55  ttyS1  vcs      vda
cpu_dma_latency  initctl    oldmem              stderr    tty18  tty30  tty43  tty56  ttyS2  vcs1     vda1
crash            input      port                stdin     tty19  tty31  tty44  tty57  ttyS3  vcs2     vda2
disk             kmsg       ppp                 stdout    tty2   tty32  tty45  tty58  uhid   vcs3     vfio

这里以 /dev/ 目录下常用的一些作为说明

block: 该目录下为服务器上的总线设备的映射,例如磁盘等设备的槽位映射关系,以符号链接文件的形式存在;

bus: 该目录下的文件为服务器上的总线设备;

cdrom: 光驱设备。一般在文件系统中挂载镜像文件,会将镜像挂载到 cdrom 商,和 sr0 是同一个设备(链接文件,通过 ls -lh /dev/cdrom 可以看到改文件是指向 /dev/sr0 的)

cpu: 该目录下为 cpu 设备对应的硬件文件。该目录的子目录中以 cpu core 为命名,数量应与 cpu 核数一致;

dm-*: 对应服务器上的硬件设备。dm-0 对应系统盘上的第一个分区,dm-1 对应系统盘上的第二个分区;其他 dm-* 设备可能是存储介质(SSD/HDD等),或其他一些设备;

stdin|stdout|stderr: 分别为 标准输入标准输出标准错误。操作系统上的每个进程启动时,都会产生对应的 标准输出标准输入、及 标准错误

tty: 终端设备。用户登陆到操作系统时,操作系统会为登陆的用户分配一个 tty。常见的有 Last login: Mon Nov 8 19:24:56 on ttys000

null|random|zero: 特殊设备。/dev/null 俗称 黑洞。所有试图写入这里的数据都会被丢弃;/dev/random 为生成随机字符的文件;/dev/zero 为 “0”设备,使用时会生成全部为 0 的数据,常用于清除磁盘的元数据或创建 “0” 文件。

/etc 目录

/etc 目录是Linux操作系统上的系统管理配置目录,基本上所有的服务启动、用户权限、主机(系统)设置、内核(驱动)配置 等相关的配置文件都存放在该目录下;

对于Linux系统来说,配置文件在操作系统上起着一场重要的作用。往往安装一个软件、自定义一项服务,都需要使用配置文件来达到需要;

/home 目录

/home 目录为用户目录,Linux 操作系统为 多用户&多任务操作系统,允许用户间的来回切换。通过 su - {user} 切换用户角色后,默认进入的就在用户的家目录下。

Linux 上崇尚权限原则,并为每个用户配置了不同的权限,以保证文件不被随意篡改和整个操作系统的安全性。

/lib 目录 & /lib64 目录

libLibrary(库)的缩写,这个目录下放着系统最基本的动态链接库,一般是32 bit的。

正如操作系统分为 32 bit64 bit位操作系统,系统上的 动态链接库为了能满足不同 bit 位的需求,也分为 32 bit(/lib)64 bit(/lib64)。类似的还有 x86x86_64

Linux 在安装软件或服务时,往往会下载很多依赖,这些依赖文件大部分都是动态链接文件,因此众多依赖文件也被保存在 lib 目录下;

/media 目录

media 目录常用于挂载操作,通过将镜像文件挂载到本地文件系统上,以方便访问镜像中的文件。例如,通过 iso 镜像安装软件包;

/mnt 目录

mntmount(挂载) 的缩写。该目录主要用于作为操作系统的挂载点,常用于挂载光驱、USB灯设备。通过 mount 挂载的设备通常会展示在该目录下;

通过 mount 挂载一个光驱设备,在对应的挂载目录中可以看到光驱设备中的文件

[root@server mnt]# mkdir /mnt/cdrom
[root@server mnt]# mount /dev/sr0 /mnt/cdrom
mount: /dev/sr0 写保护,将以只读方式挂载
[root@server mnt]# cd cdrom/
[root@server cdrom]# ls
CentOS_BuildTag  EULA  images    LiveOS    repodata              RPM-GPG-KEY-CentOS-Testing-7
EFI              GPL   isolinux  Packages  RPM-GPG-KEY-CentOS-7  TRANS.TBL

通过 umount 命令可以取消挂载,光驱设备被卸载掉之后,对应挂载目录会变成空目录

[root@server mnt]# umount /dev/sr0
[root@server mnt]# ls cdrom/
[root@server mnt]# 
/opt 目录

opt 目录用来安装附加或第三方的软件包,是用户级的程序目录。例如,当你需要在Linux操作系统上安装 Docker 容器时,就可以将 容器 安装在 /opt/ 目录下。

作为用户级的程序目录,你完全可以在磁盘空间不够或不想使用时通过 rm -rf 进行源文件的删除,这并不会对系统造成什么影响。

甚至,你可以将 /opt 目录作为一个设备挂载到操作系统的其他目录下,以此来保证空间的充分利用。

例如,你需要在操作系统上安装一个基于RAID卡的管理工具 MegaCli,那么首选位置应该就是 /opt/ 目录。

[root@server opt]# ls MegaRAID/
MegaCli  perccli  storcli

/proc 目录

proc 的意思是 process(程序/进程)。Linux系统上的 /proc 目录是一种伪文件系统,存储的是当前操作系统上所有硬件设备和正在运行的进程的信息。

/proc/ 目录下包含很多以数字命名的目录,这些目录名表示当前正在运行的进程id,你可以通过 ps -ef | grep {proc_id} 来查看该进程的名称及运行状态。

[root@server proc]# ls
1     1365  21   28   367  388  4446  657   710  7641  buddyinfo  driver       kcore       misc          self           tty
10    1372  22   283  368  389  469   658   717  7976  bus        execdomains  keys        modules       slabinfo       uptime
1099  14    23   29   38   39   488   659   718  7998  cgroups    fb           key-users   mounts        softirqs       version
11    15    24   293  381  390  5     660   719  8     cmdline    filesystems  kmsg        mtrr          stat           vmallocinfo
1101  16    266  294  382  391  505   661   721  8185  consoles   fs           kpagecount  net           swaps          vmstat
1104  17    27   295  383  4    56    6763  731  8432  cpuinfo    interrupts   kpageflags  pagetypeinfo  sys            zoneinfo
1109  18    275  296  384  40   6     6785  738  8438  crypto     iomem        loadavg     partitions    sysrq-trigger
1120  19    276  30   385  41   654   684   745  9     devices    ioports      locks       sched_debug   sysvipc
1269  2     277  357  386  42   655   7     755  91    diskstats  irq          mdstat      schedstat     timer_list
13    20    278  358  387  43   656   708   762  acpi  dma        kallsyms     meminfo     scsi          timer_stats

这里我们以 7976 这个目录名为例,通过 ps 查看该进程id对应的 进程信息

[root@server proc]# ps -ef | grep 7976
root      7976     1  0 01:38 ?        00:00:00 /usr/bin/containerd-shim-runc-v2 -namespace moby -id 5d342dd503ef4662b99b9b59fec092fdbdf3a084a77b05073cd5f24726712cbb -address /run/containerd/containerd.sock
root      7998  7976  0 01:38 pts/0    00:00:00 /bin/bash
root      8710  6785  0 01:51 pts/0    00:00:00 grep --color=auto 7976

可以看到,7976 号进程对应的程序为 /usr/bin/containerd-shim-runc-v2 。如果你想了解进程的详细信息,那么你需要进入到 进程号 对应的目录下,去查找你需要的信息了。

例如,你想要了解该进程运行时可以使用的资源限制时,你可以

[root@server proc]# cd 7976/
[root@server 7976]# ls
attr        cmdline          environ  io         mem         ns             pagemap      sched      stack    task
autogroup   comm             exe      limits     mountinfo   numa_maps      patch_state  schedstat  stat     timers
auxv        coredump_filter  fd       loginuid   mounts      oom_adj        personality  sessionid  statm    uid_map
cgroup      cpuset           fdinfo   map_files  mountstats  oom_score      projid_map   setgroups  status   wchan
clear_refs  cwd              gid_map  maps       net         oom_score_adj  root         smaps      syscall
[root@server 7976]# cat limits
Limit                     Soft Limit           Hard Limit           Units
Max cpu time              unlimited            unlimited            seconds
Max file size             unlimited            unlimited            bytes
Max data size             unlimited            unlimited            bytes
Max stack size            8388608              unlimited            bytes
Max core file size        unlimited            unlimited            bytes
Max resident set          unlimited            unlimited            bytes
Max processes             unlimited            unlimited            processes
Max open files            1048576              1048576              files
Max locked memory         65536                65536                bytes
Max address space         unlimited            unlimited            bytes
Max file locks            unlimited            unlimited            locks
Max pending signals       3871                 3871                 signals
Max msgqueue size         819200               819200               bytes
Max nice priority         0                    0
Max realtime priority     0                    0
Max realtime timeout      unlimited            unlimited            us

对于硬件设备来说,当操作系统启动的那一刻,所有的硬件设备都以文件的形式存在于 /proc 目录下,这些文件反应着硬件设备的运行情况。

例如,/proc/cpuinfo 代表当前操作系统中 cpu 的信息

[root@server proc]# cat /proc/cpuinfo
processor   : 0
vendor_id   : GenuineIntel
cpu family  : 6
model       : 13
model name  : QEMU Virtual CPU version 2.5+
stepping    : 3
microcode   : 0x1
cpu MHz     : 2599.998
cache size  : 16384 KB
physical id : 0
siblings    : 1
core id     : 0
cpu cores   : 1
apicid      : 0
initial apicid  : 0
fpu     : yes
fpu_exception   : yes
cpuid level : 13
wp      : yes
flags       : fpu de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pse36 clflush mmx fxsr sse sse2 syscall nx lm rep_good nopl xtopology eagerfpu pni cx16 x2apic hypervisor lahf_lm
bogomips    : 5199.99
clflush size    : 64
cache_alignment : 64
address sizes   : 46 bits physical, 48 bits virtual
power management:

类似的还有很多,例如内存、磁盘、网络等等。简而言之,/proc 在操作系统中扮演着非常重要的角色,如果你对 /proc 目录非常熟悉,那么你完全通过 /proc 来监控系统的运行状态。

/root 目录

root 目录是 root 用户的家目录。作为一个用户,root 区别于其他的用户,它是Linux 操作系统的超级管理员,具有操作系统上的最高权限。

当你使用 root 用户登录操作系统时,意味着你可以对操作系统的一切资源进行分配。但事实非这样,尽管 root 用户作为超级管理员,但也并不意味着可以无法无天。

试想, root 用户想要去修改一些私有资源或正在运行中的进程的状态,最终导致资源异常或进程异常退出。那么,操作系统会允许这样的情况发生吗?答案是不会的。

Linux在声明 root 用户的的超级权限时,为了增强系统安全,又对 root 用户的权限做了限制,而这正是 SELinux(安全增强型Linux)。在保障超级权限的同时又以资源所属对用户做出限制。

/run 目录

操作系统上的 /run 目录是一个内存中的临时文件系统,主要用来存储系统启动以来的信息。当系统重启时,/run 目录下的目录和文件会被清理掉。通常,操作系统上的/var/run 会指向挂载在根目录上的 /run

因此,不妨重启试试看 /run 目录会发生什么变化。

这个目录下主要包含两种格式的文件,分别是 .pid 和 `.sock。pid 文件表示当前进程使用的 进程号;sock 文件为服务对应的守护进程与socket套接字通信使用的监听通道。参考自:(关于/var/run/docker.sock)

/sbin 目录

/sbin 目录与 /bin 目录非常类似,区别在于 /sbin 目录下存放的是系统级的管理命令,而 /bin 目录下存放的用户级的指令。

为什么会说 /sbin 目录下是系统级的管理命令呢?我们先来看看 /sbin 目录下有什么

[root@server sbin]# ls
abrt-auto-reporting      e2image                    iptables-restore     partprobe                   swaplabel
abrt-configuration       e2label                    iptables-save        partx                       swapoff
abrtd                    e2undo                     iptunnel             pcscd                       swapon
abrt-dbus                e4defrag                   irqbalance           pdata_tools                 switch_root
...
ifconfig    reboot      shutdown

其实不难看出,这个目录下的程序多是对于系统进行配置的指令。例如,ifconfigxfs_repairlvcreate等等。通过这些指令配置后往往操作系统上的所有用户都可以感知到,属于系统级的公共资源。

那为什么又说 /bin 目录是用户级的管理目录。我们同样来到 /bin 目录下查看其文件

[root@server bin]# ls
[                                    fipscheck                    mv                        sgm_dd
a2p                                  fipshmac                     nail                      sg_modes
abrt-action-analyze-backtrace        firefox                      namei                     sg_opcodes
abrt-action-analyze-c                firewall-cmd                 ndptool                   sgp_dd
...
findmnt                              msguniq                      sg_map
find-repos-of-install                ms_print                     sg_map26

例如最常用的 lsfindmount等命令都是放在 /bin 目录下的,属于功能商的应用,操作这些指令并不会对操作系统造成严重的影响,大部分仅限于资源上的消耗。我们在通过 ls -lh /bin 查看,会发现 /bin 目录是指向 /usr/bin 的。

[root@server bin]# ls -lh /bin
lrwxrwxrwx. 1 root root 7 9月   2 08:54 /bin -> usr/bin
/srv 目录

主要用来存储本机或本服务器提供的服务或数据。一般很少关注,这里不做解释。

/sys 目录

在了解 /sys 目录前,先简单来了解下 sysfs 是什么东西?

Linux 操作系统上,sysfs(System File System) 是类似于 /proc 这样的特殊文件系统,可以帮助用户更方便的对系统硬件资源进行管理。主要用于将系统上的设备组织成层次结构,并由用户态的程序调用和使用这些资源。

操作系统上的 sysfs 文件系统正是挂载在 /sys 挂载点上的。倘若需要查看该挂载点的信息,你可以通过 df -lTh /sys 进行查看

[root@server ~]# df -lTh /sys
文件系统       类型   容量  已用  可用 已用% 挂载点
sysfs          sysfs     0     0     0     - /sys

实际上,/sysfs 文件系统将服务器上的所有硬件设备以树形目录的形式挂载到 /sys 目录下,正如你在 /sys 目录下看到的

[root@server sys]# ls -F
block/  bus/  class/  dev/  devices/  firmware/  fs/  hypervisor/  kernel/  module/  power/

/sys/block 目录下是所有设备的真实对象。例如,/sys/block/dm-0/sys/block/sr0 等都指向真实的物理设备。

/sys/bus 目录是按照总线类型分层存放的,其子目录下的 devices 目录中的所有设备都是连接在总线上的设备,通过该目录下的具体设备可以找到总线分配给设备的bus号。

[root@server sys]# ls -lh bus/usb/devices/*
lrwxrwxrwx. 1 root root 0 11月  9 04:47 bus/usb/devices/1-0:1.0 -> ../../../devices/pci0000:00/0000:00:05.0/usb1/1-0:1.0
lrwxrwxrwx. 1 root root 0 11月  9 04:47 bus/usb/devices/2-0:1.0 -> ../../../devices/pci0000:00/0000:00:07.0/usb2/2-0:1.0

如上为操作系统中的 usb 设备对应在总线上的符号链接,可以看到 devices/1-0:1.0 这个设备通过总线分配的 bus 号为 0000:00:05.0。pci0000:00 则表示该设备是一个pcie设备,使用的是 pcie 总线。

/sys/class 目录是按照设备功能分类的结构模型,通过将操作系统上的所有设备以功能来区分,具有相同功能的设备则被归类到同一个目录下。

例如,/sys/class/block/ 目录则包含操作系统上的所有块设备,无论这个设备是以哪种总线连接在系统上的。

[root@server sys]# ls -lh class/block/*
lrwxrwxrwx. 1 root root 0 11月  9 04:47 class/block/dm-0 -> ../../devices/virtual/block/dm-0
lrwxrwxrwx. 1 root root 0 11月  9 04:47 class/block/dm-1 -> ../../devices/virtual/block/dm-1
lrwxrwxrwx. 1 root root 0 11月  9 04:47 class/block/sr0 -> ../../devices/pci0000:00/0000:00:01.1/ata1/host0/target0:0:1/0:0:1:0/block/sr0
lrwxrwxrwx. 1 root root 0 11月  9 04:47 class/block/vda -> ../../devices/pci0000:00/0000:00:0a.0/virtio3/block/vda
lrwxrwxrwx. 1 root root 0 11月  9 04:47 class/block/vda1 -> ../../devices/pci0000:00/0000:00:0a.0/virtio3/block/vda/vda1
lrwxrwxrwx. 1 root root 0 11月  9 04:47 class/block/vda2 -> ../../devices/pci0000:00/0000:00:0a.0/virtio3/block/vda/vda2

/sys/kernel/ 目录下为内核所有可调整参数的位置。不过,更多情况下更改内核参数会通过 /etc/sysctl.conf/proc/sysctl/kernel/ 下的文件来修改内核参数。

/sys/module 目录下包含系统上所有的模块信息。

/sys/power 目录下为系统中的电源相关的选项,可以向该目录下的文件中写入指令控制操作系统的开关机。参考自:Linux 内核/sys 文件系统介绍

/tmp 目录

/tmp 为英文单词 temporary(临时) 的意思,/tmp 目录在Linux操作系统中的作用比较奇特,当你将一个文件放在该目录下,且该文件没有任何程序或文件饮用的情况下,通过重启操作系统,系统会将 /tmp 目录下没有被引用的文件清理掉来减少已使用的存储空间。

而这,是区别于操作系统其他目录的。因此,重要文件通常是不能放在该目录下,而能被放在 /tmp 目录下的,可以是一些程序的安装包、不重要的日志信息等。

另一方面,/tmp 目录同样为内存文件系统,对应的挂载文件系统格式为 tmpfs。/tmp 目录消耗的是内存容量,而非物理磁盘。因此,若是向 /tmp 目录下写入大量文件,也会造成内存资源的严重消耗,而这往往是不被允许的。

/usr 目录

/usr 目录是Linux操作系统的核心目录,包含所有的共享文件。正如你所了解的 /bin/sbin/lib/lib64 等目录都是作为符号链接文件共享到 /usr 目录下的。

你可以通过 ls -lh / 来查看这些链接文件

[root@server usr]# ls -lh /
总用量 20K
lrwxrwxrwx.   1 root root    7 9月   2 08:54 bin -> usr/bin
dr-xr-xr-x.   5 root root 4.0K 10月 27 06:56 boot
drwxr-xr-x.  21 root root 3.2K 11月  9 04:47 dev
drwxr-xr-x.  95 root root 8.0K 10月 27 07:14 etc
drwxr-xr-x.   3 root root   20 9月   8 04:10 home
lrwxrwxrwx.   1 root root    7 9月   2 08:54 lib -> usr/lib
lrwxrwxrwx.   1 root root    9 9月   2 08:54 lib64 -> usr/lib64
drwxr-xr-x.   2 root root    6 4月  11 2018 media
drwxr-xr-x.   3 root root   19 11月  9 01:22 mnt
drwxr-xr-x.   3 root root   24 9月   8 04:20 opt
dr-xr-xr-x. 108 root root    0 11月  9 04:47 proc
dr-xr-x---.   4 root root  265 11月  4 04:05 root
drwxr-xr-x.  29 root root  880 11月  9 04:47 run
lrwxrwxrwx.   1 root root    8 9月   2 08:54 sbin -> usr/sbin
drwxr-xr-x.   2 root root    6 4月  11 2018 srv
dr-xr-xr-x.  13 root root    0 11月  9 04:47 sys
drwxrwxrwt.  12 root root 4.0K 11月 10 03:23 tmp
drwxr-xr-x.  13 root root  155 9月   2 08:54 usr
drwxr-xr-x.  19 root root  267 9月   2 21:21 var

/usr 目录专门存放各种程序和数据,即便是自定义安装的一些程序也不例外。通常,一般会将自定义安装的程序安装在 /usr/local/ 目录下;/usr/src 目录下存放的是操作系统内核的源码相关的文件;/usr/share 目录包含各种程序间使用的字体、文档、图标等资源。

/var 目录

/var 目录下主要存放操作系统中不断发生变化(常态性变化)的文件,例如,操作系统自身产生的日志文件,进程运行时产生的锁文件、用户登录活动等等。

这里对最常用的几个目录加以说明

/var/log : 该目录下为操作系统中的日志文件,包含系统日志、启动日志、用户登录日志,程序运行日志等等,你都可以在这个目录下找到相应的日志;

/var/crash : 该目录主要用于存储因系统异常崩溃产生的转储文件,最常见的有 因系统异常断电发生panic、系统运行时内存不够产生的crash等现象所产生的日志都会被记录在该目录下;

/var/spool : 这个目录主要包含用户级的邮件、定时任务、等产生的相关信息

最后

对于一个操作系统来说,其上的目录错综复杂,人的精力终究有限,难以对每个目录和文件进行深入研究。因此,我认为更应该将精力放在全局上,大致清楚目录是做什么的也是可以的。例如,当你需要修改网卡配置的时候,你应该知道自己该去哪个目录下去修改。

当然,倘若你有足够的精力,那么你完全可以深入去挖掘Linux的目录结构。本文篇幅过长,仅限于此。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容