0

0

程序员必须了解的Linux基础(目录和磁盘)

看不見的法師

看不見的法師

发布时间:2025-07-13 09:20:33

|

632人浏览过

|

来源于php中文网

原创

引言:本文主要介绍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

OpenArt
OpenArt

在线AI绘画艺术图片生成器工具

下载

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(内存交换分区)

程序员必须了解的Linux基础(目录和磁盘)

我们执行free命令,会看到有一栏是Swap,swap是一个特殊的分区,称为内存交换分区,当系统内存不足时,可以当内存使用。其实对于绝大多数互联网的服务端开发场景,机器的内存配置往往很充足,再就是可以依靠cgroups去分配合适的内存,swap可能没那么有必要了。

如果有的业务场景,不追求速率,只要进程不挂慢慢跑就可以,这种情况下就可以设置swap。

如果排查swap开启之后,是否影响性能,可以使用vmstat 2命令,查看si和so来观察对性能的影响,这两个值越大,对性能影响越严重。

程序员必须了解的Linux基础(目录和磁盘)

总结:关于“Linux的目录和磁盘”需要学习的地方还有很多,这里仅仅列出来了一些常用的知识点。需要系统地了解,可以通过官网、源码、技术书籍等途径去学习。

相关专题

更多
mysql修改数据表名
mysql修改数据表名

MySQL修改数据表:1、首先查看数据库中所有的表,代码为:‘SHOW TABLES;’;2、修改表名,代码为:‘ALTER TABLE 旧表名 RENAME [TO] 新表名;’。php中文网还提供MySQL的相关下载、相关课程等内容,供大家免费下载使用。

663

2023.06.20

MySQL创建存储过程
MySQL创建存储过程

存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句分别为CREATE PROCEDURE和CREATE FUNCTION。使用CALL语句调用存储过程智能用输出变量返回值。函数可以从语句外调用(通过引用函数名),也能返回标量值。存储过程也可以调用其他存储过程。php中文网还提供MySQL创建存储过程的相关下载、相关课程等内容,供大家免费下载使用。

246

2023.06.21

mongodb和mysql的区别
mongodb和mysql的区别

mongodb和mysql的区别:1、数据模型;2、查询语言;3、扩展性和性能;4、可靠性。本专题为大家提供mongodb和mysql的区别的相关的文章、下载、课程内容,供大家免费下载体验。

281

2023.07.18

mysql密码忘了怎么查看
mysql密码忘了怎么查看

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql密码忘了怎么办呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

514

2023.07.19

mysql创建数据库
mysql创建数据库

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql怎么创建数据库呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

253

2023.07.25

mysql默认事务隔离级别
mysql默认事务隔离级别

MySQL是一种广泛使用的关系型数据库管理系统,它支持事务处理。事务是一组数据库操作,它们作为一个逻辑单元被一起执行。为了保证事务的一致性和隔离性,MySQL提供了不同的事务隔离级别。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

386

2023.08.08

sqlserver和mysql区别
sqlserver和mysql区别

SQL Server和MySQL是两种广泛使用的关系型数据库管理系统。它们具有相似的功能和用途,但在某些方面存在一些显著的区别。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

529

2023.08.11

mysql忘记密码
mysql忘记密码

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。那么忘记mysql密码我们该怎么解决呢?php中文网给大家带来了相关的教程以及其他关于mysql的文章,欢迎大家前来学习阅读。

599

2023.08.14

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

43

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.3万人学习

Git 教程
Git 教程

共21课时 | 2.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号