当你列出linux系统的根目录的时候 一般你都会看到下面这些目录,如果你是运维,那么了解这些目录的含义和使用场景,是你必备的知识点
本文挑一些比较重要的目录简单介绍
[root@wxl-1 ~]# ll / | column -t
总用量 28
lrwxrwxrwx. 1 root root 7 11月 28 16:44 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 11月 28 16:49 boot
drwxr-xr-x 20 root root 3220 3月 7 15:46 dev
drwxr-xr-x. 99 root root 8192 3月 7 15:46 etc
drwxr-xr-x. 2 root root 6 4月 11 2018 home
lrwxrwxrwx. 1 root root 7 11月 28 16:44 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 11月 28 16:44 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 4月 11 2018 media
drwxr-xr-x. 3 root root 18 11月 28 16:46 mnt
drwxr-xr-x. 5 root root 52 1月 3 22:54 opt
dr-xr-xr-x 171 root root 0 3月 7 15:46 proc
dr-xr-x---. 21 root root 4096 2月 14 16:00 root
drwxr-xr-x 30 root root 800 3月 7 15:47 run
lrwxrwxrwx. 1 root root 8 11月 28 16:44 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 4月 11 2018 srv
dr-xr-xr-x 13 root root 0 3月 7 16:25 sys
drwxrwxrwt. 17 root root 4096 3月 7 15:47 tmp
drwxr-xr-x. 13 root root 155 11月 28 16:44 usr
drwxr-xr-x. 21 root root 4096 1月 18 23:36 var
1·/bin目录(可执行文件)
这里放的都是一些可执行文件,也就是我们在 linux上可以执行的那些命令,然而linux上存放命令的目录也是不止一个,也是经常有人会弄混,这里也简单区分下
/bin:里面包含了所有用户都可以执行的命令文件,普通用户和超级用户都可以执行的
/usr/bin:系统自带的一些必备基础命令,如ls,mkdir等等基础命令,这些文件轻易不要动,影响较大
/usr/local/bin:用户自己安装程序的时候,默认的可执行程序的存放路径,一般不会影响整个系统
2·/boot目录(核心文件)
启动Linux的核心文件,这个目录我们一般不用去操心,也不用去管
3·/dev目录(外部设备)
在linux 一切皆文件,/dev目录就是存放硬件相关文件的目录,该目录包含了所有linux用到的外部设备,但存放的并不是驱动程序,存放的是一个访问这些外部设备的端口,我们访问这些设备,和访问一个文件或者目录没有任何区别
常见设备文件如下:
/dev/hd[a-t]:IDE设备
/dev/sd[a-z]:SCSI设备
/dev/fd[0-7]:标准软驱
/dev/md[0-31]:软raid设备
/dev/loop[0-7]:本地回环设备
/dev/ram[0-15]:内存
/dev/null:无限数据接收设备,相当于黑洞
/dev/zero:无限零资源
/dev/tty[0-63]:虚拟终端
/dev/ttyS[0-3]:串口
/dev/lp[0-3]:并口
/dev/console:控制台
/dev/fb[0-31]:framebuffer
/dev/cdrom => /dev/hdc
/dev/modem => /dev/ttyS[0-9]
/dev/pilot => /dev/ttyS[0-9]
/dev/random:随机数设备
/dev/urandom:随机数设备
4·/etc目录(配置文件)
系统主要的配置文件几乎都放置到这个目录内,包括你安装程序的时候默认的配置文件路径也是这里
例如mysql的配置文件:/etc/my.conf
或者你安装gitlab,配置文件默认存放路径为:/etc/gitlab/gitlab.rb
5·home目录(用户的家目录)
如果建立一个用户,用户名是"xx",那么在/home目录下就有一个对应的/home/xx路径,用来存放用户的主目录。
而root用户的家目录不在/home下面,单独出来是/root目录
6·/lib和/lib64目录(库文件目录)
这个目录存放的是一些库文件,很多命令或者程序需要的库文件都在这里,你可以用strace -e open XXX 来看明朗了都用到了那些库文件,如;
可以看到pwd命令的执行用到了两个库文件
7·/opt目录(软件安装目录)
这个目录不是很重要,主要存放那些可选的程序,删除影响也不大
同时 /usr/local目录 也是 软件安装的目录,不过这里一般是用户手动安装(手动编译安装)的程序,不是通过apt-get或者yum安装的
/usr/local:用户级的程序目录,可以理解为C:/Progrem Files/。用户自己编译的软件默认会安装到这个目录下。
*比如Hadoop,Tomcat的安装目录我一般会放在/usr/目录下
/opt:给主机额外安装软件所摆放的目录。用户级的程序目录,可以理解为D:/Software,opt有可选的意思,这里可以用于放置第三方大型软件(或游戏),当你不需要时,直接rm -rf掉即可。在硬盘容量不够时,也可将/opt单独挂载到其他磁盘上使用。
*比如临时上传到Linux里的软件;tar.gz rpm等文件,用作软件仓库。
8·/proc目录(操作系统信息)
Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。
用户可以在这个目录中获取到系统硬件相关信息和进程的信息
每个进程在/proc目录下都有一个进程pid命名的目录
9·/root目录(超级用户目录)
root用户的家目录
10·/run目录(程序运行时文件)
里面的东西是系统运行时需要的, 不能随便删除. 但是重启的时候应该抛弃. 下次系统运行时重新生成
里面的文件和目录没有存储在磁盘上,而只存储在内存中。
df 命令也可以看到 /run目录是被识别成了 tmpfs , 也就是临时文件系统
11·/sbin目录(可执行命令)
这里也放的时可执行命令文件,但是于/bin不同的时,这里存放的试一下系统管理的命令,如fdisk、halt、ifconfig等等
12·/srv目录(服务数据)
主要用来存储本机或本服务器提供的服务或数据。(用户主动生产的数据、对外提供服务)
13·/sys目录(挂载sysfs文件系统)
sysfs 文件系统总是被挂载在 /sys 挂载点上,而什么时sysfs系统,下面简单介绍一下
sysfs 是 Linux 内核中设计较新的一种虚拟的基于内存的文件系统,它的作用与 proc 有些类似,但除了与 proc 相同的具有查看和设定内核参数功能之外,还有为 Linux 统一设备模型作为管理之用。相比于 proc 文件系统,使用 sysfs 导出内核数据的方式更为统一,并且组织的方式更好
想要更多的了解sysfs,可以单独区查找学习,本文只是简单介绍根目录下的各个目录的作用
14·/tmp目录(临时文件存放)
这个就是一个各个用户都可以访问的存放临时文件的目录,可以看到该目录的权限被放到了最大
15·/usr目录(日常用到的应用程序和文件几乎都在这)
/usr不是user的缩写,其实usr是Unix Software Resource的缩写,安装时会占用较大硬盘容量目录
要用到的应用程序和文件几乎都在这个目录
16·/var目录(系统一般运行时要改变的数据)
如果/usr是安装时会占用较大硬盘容量目录,那么/var就是在系统运行后才会渐渐占用硬盘容量的目录。
因为var目录主要针对常态性变动文件,包括缓存(cache)、登录文件(logfile)以及某些软件运行所产生的文件,包括程序文件(lock file,run file),或者例如Mysql数据库的文件等。
/var/log:这个是登录文件放置日志的的目录。Homestead中nginx的错误日志就放在这里。
欢迎关注我的公众号:龙叔运维
持续分享运维经验