为什么 /var/run 已迁移到 /run?

Lek*_*eyn 68 filesystem

Ubuntu 11.10 Oneiric技术概述

Ubuntu的11.10已迁移远离/var/run/var/lock/dev/shm与现在使用/run/run/lock/run/shm不是(分别)。

  • 我在应用程序中对这些路径进行了硬编码,为什么要对 Oneiric 进行此更改?
  • 我该怎么做才能使我的应用程序向后和向前兼容?除了先检查/run, 然后检查是否存在之外,还有更好的方法/var/run吗?

Jam*_*dge 60

目的是减少tmpfs文件系统的数量。在 11.04 上,tmpfs/var/lock/var/run和处有单独的文件系统/dev/shm。如果这些目录都在一个父目录下,那么只tmpfs需要一个。它还为进一步的运行时状态数据提供了一个明显的位置,这些数据不应在重新启动后持续存在。

除非您的应用程序依赖于文件的规范路径,否则您的应用程序应该不加修改地运行,因为旧位置将被符号链接到新位置。AppArmor 策略是一种确实依赖于真实路径名的情况,这就是为什么特别提到它的原因。

以下链接应有助于解释其基本原理:


Rin*_*ind 36

  1. /run 是一个新的跨分布 tmpfs 位置,用于存储瞬态文件 - 即包含运行时信息的文件,这些文件可能需要或不需要在引导过程的早期写入,并且不需要在重新启动时保留。

    使/run目录可用使我们更接近于可以在根文件系统以只读方式安装的情况下正常使用系统的地步,而不需要任何笨拙的解决方法,例如aufs/unionfs覆盖。

    /run 替换文件系统层次结构标准中描述的几个现有位置:

    • /var/run ? /run
    • /var/lock ? /run/lock
    • /dev/shm? /run/shm[目前只有 Debian 计划这样做]
    • /tmp? /run/tmp[可选的; 目前只有 Debian 计划提供这个]
    • /run 还替换了一些其他用于临时文件的位置:

    • /lib/init/rw ? /run

    • /dev/.* ? /run/*
    • /dev/shm/* ? /run/*
    • 下的可写文件/etc/run/*

    (所以你可能会期望这些也会移动)。

    来源:debian 发布目标

  2. 我建议在您的软件中创建一个部件,在其中将这些目录设置为变量,更改代码以使用这些变量,然后根据使用它的系统更改变量(但我打赌您已经知道了)。

  • 原来如此。`/etc`、`/etc/lvm/cache/`、`/etc/mtab`、`/etc/network/run/ifstate` 和`/etc/adjtime` 下的三个文件。我想他们一开始就在 `/etc` 中是不好的。 (6认同)

小智 5

从我所读到的,这是关于为什么引入 /run 的原始解释。http://lwn.net/Articles/436012/

  • 虽然这在理论上可以回答这个问题,但 [最好](​​http://meta.stackexchange.com/q/8259) 在此处包含答案的基本部分,并提供链接以供参考。 (8认同)