linux

1.文件权限怎么修改

chmod [权限模式] [文件或目录]1、**数字模式(八进制)**:
chmod 755 myfile.sh  
# 所有者:rwx (7),组:r-x (5),其他用户:r-x (5)
7 = rwx(读+写+执行)
5 = r-x(读+执行)
4 = r--(仅读)
0 = ---(无权限)
2、符号模式:
chmod u+x myfile.sh  # 给所有者(user)添加执行权限
chmod go-w myfile.sh # 移除组(group)和其他用户(others)的写权限
u(user/所有者)、g(group/组)、o(others/其他用户)
+(添加权限)、-(移除权限)、=(设置权限)
r(读)、w(写)、x(执行)

递归修改(目录及其子文件):加上 -R(Recursive)选项:

chmod -R 755 /var/www  # 递归设置 /var/www 及其子文件的权限为 755

2.软连接和硬链接

1.文件的 inode(索引节点)

inode(Index Node,索引节点)是文件系统中用于描述和管理文件的核心数据结构。每个文件(或目录)在创建时都会被分配一个唯一的 inode,其中存储了文件的元数据(metadata)和数据块指针,但不包含文件名。文件名与 inode 的关联通过目录项(directory entry)实现。inode 是文件系统的“身份证”,记录了文件的关键信息,包括:文件类型(普通文件、目录、符号链接、设备文件等)
文件权限(读、写、执行权限)
文件所有者(UID)和所属组(GID)
文件大小(字节数)
时间戳(创建时间 `ctime`、修改时间 `mtime`、访问时间 `atime`)
硬链接计数(有多少文件名指向该 inode)
数据块指针(指向文件实际存储位置的磁盘块)

2.inode 与文件名的关系:

文件名不直接存储在 inode 中,而是由目录项(directory entry) 维护。

目录本质上是一个映射表,存储 文件名 → inode 的对应关系。多个文件名可以指向同一个 inode(即硬链接),此时 inode 的硬链接计数会递增。

在 Linux/Unix 系统中,可以使用 ls -i 或 stat 命令查看文件的 inode:ls -i file.txt   # 显示文件名及 inode 号
stat file.txt    # 显示 inode 详细信息

inode 的分配与限制

文件系统在格式化时会预先分配固定数量的 inode(可通过 df -i 查看)。如果 inode 耗尽,即使磁盘空间充足,也无法创建新文件。

3.inode 与文件操作的关系

(1)创建文件

  1. 分配一个空闲 inode。
  2. 在目录中创建 文件名 → inode 的映射。
  3. 写入文件数据,并更新 inode 的元信息(大小、时间戳等)。

(2)删除文件

  1. 减少 inode 的硬链接计数。
  2. 当硬链接计数降为 0 时,释放 inode 和数据块。
  3. 从目录中删除 文件名 → inode 的条目。

(3)硬链接 vs 软链接

操作 硬链接的影响 软链接的影响
创建链接 inode 的硬链接计数 +1 新建一个独立的 inode(存储目标路径)
删除原文件 文件仍可通过其他硬链接访问 软链接失效(悬空链接)

Q1:为什么硬链接不能跨文件系统?
因为 inode 是文件系统内部唯一的,不同文件系统的 inode 可能冲突。Q2:如何修复“No space left on device”但磁盘空间充足?
可能是 inode 耗尽,使用 df -i 检查,并清理无用的小文件。Q3:目录的 inode 有什么不同?
目录的 inode 指向的数据块存储的是 文件名 → inode 的映射表,而非文件内容。

4.软链接和硬链接的区别

在文件系统中,软链接(Symbolic Link,又称符号链接)和硬链接(Hard Link)是两种不同的文件链接方式,它们的核心区别如下:

硬链接:

硬链接是原始文件的另一个文件名(直接指向文件的 inode),与原始文件共享相同的 inode 和数据块。本质上是同一个文件的多个名称(别名);硬链接不能跨文件系统,因为 inode 是文件系统内部分配的,不同文件系统的 inode 可能冲突;硬链接通常不能对目录创建硬链接;硬链接删除原始文件或其他硬链接时,只要还存在至少一个硬链接,文件数据就不会被释放;硬链接文件大小与原始文件大小相同(本质是同一文件);[ inode 1234 ]
├─ 数据块: [文件内容]
├─ 链接计数: 2
└─ 文件名: ├─ /dir/file1.txt  (硬链接1)└─ /dir/file2.txt  (硬链接2)+-------------------+       +-------------------+
| 文件名: file1.txt |       | 文件名: file2.txt |
| inode: 1234       |------>| inode: 1234       |
+-------------------+       +-------------------+↓[ 数据块: 文件内容 ]

软链接:

软连接是一个独立的文件,拥有自己的 inode,但文件内容中存储的是目标文件的路径(类似于快捷方式);如果目标文件被删除,软链接会失效(成为“悬空链接”);软连接可以跨文件系统,因为它仅存储路径字符串,不依赖 inode;软链接**可以对目录创建软链接;软链接删除原始文件后,软链接指向的路径失效,访问时会报错“No such file or directory”;软链接文件大小由存储的目标路径字符串的长度**决定;[ inode 5678 ] (软链接自身)
├─ 数据块: "/path/to/target.txt" (目标路径)
└─ 文件名: /dir/shortcut.link[ inode 1234 ] (目标文件)
└─ 数据块: [目标文件内容]+-------------------+       +-------------------+
| 文件名: shortcut  |       | 文件名: target.txt|
| inode: 5678       |       | inode: 1234       |
| 数据: "target.txt"|------>| 数据块: 文件内容  |
+-------------------+       +-------------------+

总结对比表

特性 硬链接 软链接
inode 与原始文件相同 独立 inode
跨文件系统 不支持 支持
链接目录 通常不支持 支持
原始文件删除 不影响其他硬链接 链接失效
存储内容 直接指向文件数据 存储目标文件的路径
文件大小 与原始文件相同 等于路径字符串长度

使用场景

硬链接:适合需要多个名称指向同一文件且不希望因删除而丢失数据的场景(如备份)。

软链接:适合需要跨文件系统、链接目录或灵活指向动态路径的场景(如快捷方式)。

3、静态库与动态库

静态库(Static Library)文件扩展名:.a(Linux)、.lib(Windows)特点:编译时直接嵌入到可执行文件中,运行时无需外部依赖。生成的可执行文件较大(包含库代码)。更新库需重新编译程序。动态库(Shared Library)文件扩展名:.so(Linux)、.dll(Windows)特点:程序运行时动态加载,多个程序可共享同一库。可执行文件小,但需确保运行时库路径正确。更新库无需重新编译程序(需接口兼容)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/89002.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/89002.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/89002.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kotlin集合接口

Kotlin 集合概述 Kotlin 集合提供了对数据进行各种操作的便捷方式。它们实现了接口,因此可以操作不同类型的数据。例如,你可以编写一个函数,同时打印 Set 和 List 的所有元素。我们来看看这是如何实现的。Iterable 接口 我们已经知道&#xf…

Git 常用操作与注意事项全攻略

1. 基本配置 git config --global user.name "你的名字" git config --global user.email "你的邮箱" git config --list # 查看当前配置建议全局配置用户名和邮箱,否则提交记录可能不规范2.仓库操作 初始化本地仓库 git init只在新建项目时使…

STM32-第五节-TIM定时器-1(定时器中断)

一、定时器原理:1.介绍:对指定输入时钟进行计数,并在计数值达到设定值时触发中断。分类:基本定时器,通用定时器,高级定时器频率:72MHZ2.框图: (1)基本定时器&…

【图像处理基石】什么是色盲仿真技术?

色盲仿真概述 色盲仿真是一种将正常色彩图像转换为色盲患者感知效果的技术。人类常见的色盲类型包括: 红色盲(Protanopia):无法感知红色绿色盲(Deuteranopia):无法感知绿色蓝黄色盲(…

九、官方人格提示词汇总(中-3)

“参谋代写计划”功能输出欣赏,规则: 本部分统一使用 Gemini 2.5 Pro API。该 API 下的输出质量基本达到我的要求,已具备实用价值。严格等级均为“权衡有度(L3)”,创造力等级均为“趋势捕手(L3…

华为MateBook D 16 SE版 2024款 12代酷睿版i5集显(MCLF-XX,MCLF-16)原厂OEM预装Win11系统

适用型号:MCLF-XX,MCLF-16链接:https://pan.baidu.com/s/1OkvUqZMdCSF98YtQfWAYXw?pwdq2gh 提取码:q2gh 华为开箱状态出厂Windows11系统自带所有驱动、出厂主题壁纸、系统属性联机支持标志、系统属性专属LOGO标志、Office办公软件、华为电脑…

Python自动化:每日销售数据可视化

这是手动执行sql分组查出的Linda奶茶店每日的销售数据,那么能否图形化展示方便对比近一个月每日的销售趋势呢。如果是做在网站里,前端可以集成echart或highchart生成柱状图或线状图。如果需要每天定时推送这些数据到邮箱或其他消息通知渠道,第一步肯定是需要先生成图片到服务…

scrapy项目开发流程

1.创建项目:scrapy startproject mySpider2.生成一个爬虫:scrapy genspider itcast itcast.cn3.提取数据:根据网站结构在spider中实现数据采集相关内容4.保存数据使用pipeline进行数据后续处理和保存1.创建项目items.py-->自己预计需要爬取…

堆排序以及其插入删除

堆排序首先介绍一下堆排序属于选择排序的一种类型。其次就是他有点依赖于顺序存储树判断其孩子以及父节点的概念,接下来复习一下。堆分为大根堆和小根堆① 若满⾜:L(i)≥L(2i)且L(i)≥L(2i1) (1 ≤ i ≤n/2 )—— ⼤根堆&#xff…

Spring Boot项目结构解析:构建高效、清晰的代码框架

在当今的软件开发领域,Spring Boot因其简洁性和强大的功能而备受青睐。它不仅简化了Spring框架的配置,还提供了一套高效的项目开发模式。本文将深入探讨Spring Boot项目结构中的关键组件,包括PO、Query、VO、Config等,旨在帮助开发…

多客户端 - 服务器结构-实操

实现2个客户端之间互相聊天 要求: 1、服务器使用 select 模型实现接受多个客户端连接,以及转发消息 2、客户端要求:使用 poll 模型解决 技能够 read 读取服务器发来的消息,又能够scanf读取键盘输入的信息 3、客户端服务器不允许开…

iOS高级开发工程师面试——Objective-C 语言特性

iOS高级开发工程师面试——Objective-C 语言特性 一、多态二、继承三、代理(Delegate)1. 代理为什么用 weak 修饰呢?block和代理的区别?四、通知(NSNotificationCenter)五、KVC (Key-value Coding)六、属性七、`@property` [ˈprɒpəti]的本质是什么?ivar 、 setter …

MMpretrain 中的 LinearClsHead 结构与优化

LinearClsHead 结构与优化 一、LinearClsHead 核心结构 在 MMPretrain 中,LinearClsHead 是一个简洁高效的分类头,其核心结构如下: class LinearClsHead(BaseModule):def __init__(self,num_classes, # 类别数量in_channels, # 输入…

Spring 学习笔记

1.Spring AOP 怎么实现的AOP 即面向切面编程,是通过代理实现的,主要分为静态代理和动态代理,静态代理就是在程序运行前就已经指定并声明了代理类和增强逻辑,运行时就已经被编译为字节码文件了,而动态代理则是在运行过程…

【CVPR2024】计算机视觉|InceptionNeXt:速度与精度齐飞的CNN架构

论文地址:http://arxiv.org/pdf/2303.16900v3 代码地址:https://github.com/sail-sg/inceptionnext 关注UP CV缝合怪,分享最计算机视觉新即插即用模块,并提供配套的论文资料与代码。 https://space.bilibili.com/473764881 摘要…

7.15 窗口函数 | 二分 | 位运算 | 字符串dp

lc3316. 字符串dpdp多开一行一列后,注意原字符串下标映射dp[n][m] ( n 是source长度, m 是pattern长度)两重循环填表for i 1-nfor j 0-m三种状态转移1.不选 dp i jdp i-1 j2.不选if tag, dp[i][j]3.if(s ip j) 选,dp i…

Spring原理揭秘--初识AOP

我们知道软件开发一直在追求高效,易维护,易扩展的特性方式。在面向过程编程到面向对象编程的历程中,程序的开发有了非常大的进步。但是oop的方式缺依然存在着一些缺点。oop的方式可以将业务进行很好的分解和封装使其模块化,但是却…

Provider模式:软件架构中的“供应商“设计哲学

文章目录Provider模式:软件架构中的“供应商“设计哲学什么是Provider模式?经典应用场景1. 配置管理Provider2. 数据访问Provider4. 消息队列ProviderProvider模式的优势1. 解耦合实际项目中的应用Provider模式的最佳实践1. 命名约定2. 接口设计原则3. 错…

LTspic下载,帮助及演示电路

1.下载 LTspice是一款强大高效的免费SPICE仿真器软件、原理图采集和波形观测器,为改善模拟电路的仿真提供增强功能和模型。其原理图捕获图形界面使您能够探测原理图并生成仿真结果,这些结果可以通过内置波形查看器进一步观察分析。 链接: …

位置编码/绝对位置编码/相对位置编码/Rope原理+公式详细推导及代码实现

文章目录1. 位置编码概述1.1 为什么需要位置编码?2. 绝对位置编码 (Absolute Position Encoding)2.1 原理2.2 数学公式2.3 代码实现2.4 代码与公式的对应关系2.5 特性与优势2.6 可学习的绝对位置编码3. 相对位置编码 (Relative Position Encoding)3.1 原理3.2 数学公…