引言:本文主要介绍linux的目录标准、目录和文件常用操作命令以及文件系统的三大组成部分。
Linux目录标准:FHS
我们使用的Linux服务器,尽管有众多不同的发行版,但它们的文件目录结构却具有一些共性。Linux目录配置依据的是FHS(https://www.php.cn/link/abbf27033c07c296a1d7cf850ecc1af6。
FHS标准主要定义了三个目录的内容:1. 根目录/ 2. /usr 3. /var。以下分别列出这三个目录下常见的目录及其存放的文件内容,具体细节请参考FHS官方文档:
一:根目录 / 下必须存在的目录及其作用
/bin:系统的可执行文件存放在此,例如常用的cd、cp、find、chmod、chown等命令。 /boot:存放系统启动所需的文件。 /dev:设备和接口设备以文件形式存在此目录,包括标准输入(stdin)、标准错误(stderr)和标准输出(stdout)。 /etc:系统的主要配置文件,如用户的账号密码和各服务的启动文件等。 /lib:系统的函数库。 /media:软盘、光盘、DVD等临时设备挂载目录。 /mnt:临时挂载一些额外的目录。 /opt:第三方辅助软件放置的目录。 /run:系统启动后的一些信息。 /sbin:启动过程中需要的命令。 /srv:一些网络服务启动后数据存放位置。 /tmp:临时文件存放。 /usr:第二层有更多目录要求。 /var:第二层有更多目录要求。
二:/usr目录下必须存在的目录
/usr/bin/:所有用户可用的命令。Centos7已将所有用户可用的命令都放置在此,根目录下的/bin链接到此。 /usr/lib/:根目录的lib链接到此目录。 /usr/local/:系统管理员为本机下载的软件。 /usr/sbin/:根目录的sbin链接到此。 /usr/share:放置一些可以共享的只读数据文件,如帮助文档、说明文档。
三:/var目录:主要存放一些经常变动的文件,例如MySQL、Redis数据库文件。
/var/cache/:应用程序运行过程中产生的一些缓存。 /var/lib/:应用程序执行过程中需要使用的数据文件。 /var/log/:日志文件存放目录。 /var/run/:某些程序启动后的PID存放于此目录,链接到/run目录。
目录和文件常用操作命令
文件目录查看:ls [-alSt]
a:显示所有文件,包括隐藏文件。 l:详细显示信息,包括文件的属性和权限等数据。 S:按文件容量大小排序。 t:按时间排序。
切换目录:cd 目录
显示当前目录:pwd
创建目录:mkdir 目录
删除目录:rmdir 目录
复制:cp [-rip] 源文件 目标文件
r:递归复制。 i:若目标文件已存在,询问是否覆盖。 p:连同文件的权限、用户、时间一起复制,通常在备份时使用。
删除:rm [-fr] 目录/文件
f:强制删除。 r:删除目录时,递归删除。
移动:mv [-fi] 源文件 目标文件
f:强制移动。 i:目标文件已存在时,询问是否覆盖。
查看文件内容:
显示全部文件内容:cat [-n] 文件
n:打印行号。
查看前n行文件:head [-n 数值] 文件
-n 数值:前n行,默认是10行。
查看倒数前n行:tail [-n 数值] 文件
-n 数值:前n行,默认是10行。
创建文件:touch [-m] 文件
m:修改文件的mtime(上次被修改的时间)。
文件打包tar命令:
打包并压缩:tar [-z|-j|-J] [cv] [-f 打包完的文件名] 需要压缩的目录/文件
解压缩:tar [-z|-j|-J] [xv] [-f 需要解压的文件] -C 目录
查看:tar [-z|-j|-J] [tv] [-f 需要查看的压缩文件]
z,j,J代表三种压缩方式,分别为:z:gzip j:bzip2 J:xz
bzip2的压缩比通常优于gzip,xz的压缩比又优于bzip2,但xz的压缩效率很低,小文件需要较长时间生成压缩包。
最常用的参数:
压缩:tar -zcv -f file1.gz /home 解压:tar -zxv -f file1.gz -C /home
查找执行文件:which [-a] command
a: 将所有由PATH目录中找到的命令都列出,默认只列出第一个。
查找命令:whereis [-l] 文件或目录名
l:列出查找了多少目录。
查找命令:locate [-ir] 文件/目录
i:忽略大小写差异。 r:文件/目录可以写正则表达式。
查找命令:find [目录] [option] [action]
例如:
find / -user xingzhou 查找属于用户xingzhou的所有文件。 find / -name xingzhou 查找文件名为xingzhou的文件。 find / -name "xingzhou" 查找文件名包含xingzhou的文件。 find / -mtime 0 查找24小时内有修改的文件。 find / -mtime 3 查找3天前的那一天24小时内有修改的文件。 find / -mtime -3 查找小于等于三天内有修改的文件。 find / -mtime +3 查找大于等于四天前有修改的文件。
说明:find命令是从磁盘上直接查找文件,会比较耗时。whereis只查找系统中的特定目录,locate从系统的数据库中查找,因此这两个命令会比较快。但系统的文件存储信息数据库不是实时更新的,所以locate查询的结果可能不那么准确。
文件系统概要:操作系统为了管理和使用磁盘,开发了文件系统。Linux常用的文件系统有ext2、ext3、ext4,这些都是索引式文件系统。索引式文件系统的目的是通过为存储在磁盘上的文件内容建立索引来更快地查找文件内容。索引式文件系统通常有三类区块来存放不同的数据:超级区块、inode区块、数据区块。超级区块存放文件系统的属性,以及inode和数据区块的总量、使用量、剩余量等信息。inode记录文件的属性,同时记录文件内容存放的数据区块(可以认为是文件系统的索引)。数据区块存放具体的文件内容。不同文件系统对于区块的划分细节会有些差异,但原理是一致的。Centos7默认开始使用xfs文件系统,xfs文件系统是一个日志文件系统(https://www.php.cn/link/434fc976ae134d4da17ea66c64721e3d。
使用:磁盘在使用之前需要进行“挂载”,挂载就是把磁盘和目录建立联系。
挂载的具体命令是:mount
依照/etc/fstab的配置挂载所有磁盘:mount -a
查看当前的挂载信息:mount
挂载某个目录:
mount [-t 文件系统] LABEL='' 目录 mount [-t 文件系统] UUID='' 目录 mount [-t 文件系统] 设备名 目录 mount --bind 目录1 目录2:把目录1挂载到目录2下,挂载的是目录而不是文件系统,此时目录1和目录2链接到了同一个inode。
取消挂载:umount [-fnl] 设备文件名/目录
f:强制取消。 n:卸载但是不更新/etc/mtab文件。 l:立刻卸载文件系统。
几个查看命令:df [-ahi] [目录/文件]
a:列出所有的文件系统,包括/proc(等下再解释这个目录)。 h:以易读的形式显示。 i:显示inode的数量,而不是磁盘容量。
du [-sham] 文件/目录
s:仅显示总量。 h:以易读的容量显示。 a:列出所有文件和目录的容量。 m:以M为单位,显示容量。
例如:du -sm /*:仅列出根目录下孩子目录的容量,不统计孙子目录。
补充说明下/proc目录:/proc是进程文件系统,proc目录下的内容都是存储在内存中的,不占用磁盘(https://www.php.cn/link/40a8e50752d27a50d1aed5747991505f)。
swap(内存交换分区)
我们执行free命令,会看到有一栏是Swap,swap是一个特殊的分区,称为内存交换分区,当系统内存不足时,可以当内存使用。其实对于绝大多数互联网的服务端开发场景,机器的内存配置往往很充足,再就是可以依靠cgroups去分配合适的内存,swap可能没那么有必要了。
如果有的业务场景,不追求速率,只要进程不挂慢慢跑就可以,这种情况下就可以设置swap。
如果排查swap开启之后,是否影响性能,可以使用vmstat 2命令,查看si和so来观察对性能的影响,这两个值越大,对性能影响越严重。
总结:关于“Linux的目录和磁盘”需要学习的地方还有很多,这里仅仅列出来了一些常用的知识点。需要系统地了解,可以通过官网、源码、技术书籍等途径去学习。
以上就是程序员必须了解的Linux基础(目录和磁盘)的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号