AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 760955
Accepted
Dmitry Dmitriev
Dmitry Dmitriev
Asked: 2023-11-08 20:21:21 +0800 CST2023-11-08 20:21:21 +0800 CST 2023-11-08 20:21:21 +0800 CST

关闭操作顺序:RO root 重新挂载后写入缓冲区

  • 772

探索布莱恩·沃德 (Brian Ward) 所著的《Linux 工作原理》这本书,我通常对此毫无疑问。但是这个。在“6.7.0 关闭系统”中有一个有序的作业列表。

以只读模式 (6) 重新挂载根文件系统后,通过同步程序 (7) 写入缓冲数据。

以只读模式挂载后如何在文件系统中写入数据?可能是一个错误,正确的顺序是首先写入缓冲区(7)然后卸载(5)并重新安装(6)?

1. init asks every process to shut down cleanly. 

2. If a process doesn’t respond after a while, init kills it, first
trying a TERM signal. 

3. If the TERM signal doesn’t work, init uses the KILL signal on any
stragglers. 

4. The system locks system files into place and makes other preparations
for shutdown. 

5. The system unmounts all filesystems other than the root. 

6. The system remounts the root filesystem read-only. 

7. The system writes all buffered data out to the filesystem with the
sync program. 

8. The final step is to tell the kernel to reboot or stop with the
reboot(2) system call. This can be done by init or an auxiliary program
such as reboot, halt, or poweroff.


PS 这本书太棒了,这是几个章节中唯一解决的问题。

shutdown
  • 2 2 个回答
  • 25 Views

2 个回答

  • Voted
  1. Best Answer
    Marcus Müller
    2023-11-08T20:37:47+08:002023-11-08T20:37:47+08:00

    有文件系统驱动程序(它将某些块存储介质上的块转换为目录和文件),并且在其下面有一个缓存层(以便您可以快速将数据写入存储介质,并继续执行其他操作,而内核实际上需要关心在后台将数据写入存储设备,因为这通常相对较慢)。

    sync确保仍在该缓存层中的所有内容都写入存储。

    因此,如果您愿意的话,这是关于文件系统“下方”的数据。

    • 1
  2. Tom Yan
    2023-11-08T21:19:19+08:002023-11-08T21:19:19+08:00

    以只读模式挂载后如何在文件系统中写入数据?

    只读是挂载点的一个属性。换句话说,您无法通过挂载(点)更改文件系统。这并不意味着较低层(例如块层或缓存层)不能对文件系统进行任何更改。(可能实际上并不存在缓存层之类的东西。我猜,更像是块层负责缓存。)

    为了防止对文件系统进行任何潜在的更改,分区或驱动器本身需要通过某种方式设为只读。blockdev --setro(甚至可能不会“切断”任何缓冲数据刷新到设备上的效果。它可能需要设备本身禁止对其任何逻辑块的写访问。)

    从文件和目录的角度来看,您对它们所做的更改不会因为它们是否已写入实际存储而有所不同。换句话说,除非文件系统驱动程序以某种“同步模式”运行(如果有的话),您从文件中读取的内容可能仍然在写入缓冲区/缓存中,直到从文件系统驱动程序一直向下刷新。sync -f path/to/mountpoint请求文件系统驱动程序(例如)。(不过,由于其他原因,刷新可能会在幕后发生。)

    我确实想知道在 Linux 中,在以只读模式重新挂载挂载后,是否真的需要任何显式同步/刷新。我会有点惊讶的是,它不会导致像卸载这样的隐含问题。

    • 1

相关问题

  • 为什么 systemctl halt 要求输入密码但 systemctl reboot 和 systemctl poweroff 没有?

  • 3 关于必须进行硬关机和重启的问题

  • 如何使用 polkit 0.106 发送通知?

  • 系统在关机/重启时挂起 - 停止 UID 1000 的用户管理器

  • 了解 inittab 中的关闭命令

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve