为什么 /etc/network/interfaces 在程序更改和随后的重新启动后为空?
Why would /etc/network/interfaces be empty after programmatic changes and subsequent reboot?
我 运行 嵌入式设备上的一个 node.js 服务器提供了一个网络 UI 以允许用户修改网络接口设置 - 例如,从静态更改为 DHCP 或者反之反之亦然,或设置特定的静态 IP 设置(网络掩码、网关)等。使用这些用户驱动的配置参数,我能够以编程方式生成一个新的 /etc/network/interfaces 文件(当然,在将前一个文件备份到 [= 36=.bak 文件)。我什至对新配置文件的日志文件执行 'cat /etc/network/interfaces' 以确认新接口文件的内容和句法有效性。到目前为止,一切都很顺利。
但是,如果我的设备重新启动(在重新启动之前有或没有 /etc/init.d/networking stop/start),我发现很多时候系统会启动/etc/network/interfaces 文件为空,因此没有网络接口。 (幸运的是,我有一个允许 SSH 连接的 JTAG 接口,因此仍然可以连接到我的设备,但对于用户来说,他们的设备基本上是砖砌的。)
什么会导致 OS 清空 /etc/network/interfaces 文件?我认为这必须在系统初始化期间完成 - 但出于什么原因?
如果我使用文本编辑器手动进行相同的更改并重新启动,一切都很好 - 每次都会出现新的界面设置。
我无法解释可能导致此行为的原因。
--
以下是我考虑但已排除的其他因素:
- 可能是文件没有保存好?我已经排除了这一点,因为
cat 命令将指示它已成功保存。
- 也许还有其他文件(或持久设置)需要修改,否则配置将被视为无效和空白?我已经排除了这一点,因为我的理解是接口文件是接口设置所需的唯一配置。
- 接口文件中可能存在语法错误。我已经统治了
这是因为我将我的编程输出与有效文件进行了比较
一切看起来都很好。此外,我不认为语法错误
会导致文件空白。
编辑:我的设备基于 TI Sitara uP 运行ning Debian Wheezy 3.14 变体。我 运行 node.js v0.12.x 作为服务器后端。
修改后的文件可能没有刷新到磁盘,而是保留在缓存中。 cat
命令可以从该缓存中读取文件。
尝试使用 sync
(see here) 强制刷新到底层存储。
我 运行 嵌入式设备上的一个 node.js 服务器提供了一个网络 UI 以允许用户修改网络接口设置 - 例如,从静态更改为 DHCP 或者反之反之亦然,或设置特定的静态 IP 设置(网络掩码、网关)等。使用这些用户驱动的配置参数,我能够以编程方式生成一个新的 /etc/network/interfaces 文件(当然,在将前一个文件备份到 [= 36=.bak 文件)。我什至对新配置文件的日志文件执行 'cat /etc/network/interfaces' 以确认新接口文件的内容和句法有效性。到目前为止,一切都很顺利。
但是,如果我的设备重新启动(在重新启动之前有或没有 /etc/init.d/networking stop/start),我发现很多时候系统会启动/etc/network/interfaces 文件为空,因此没有网络接口。 (幸运的是,我有一个允许 SSH 连接的 JTAG 接口,因此仍然可以连接到我的设备,但对于用户来说,他们的设备基本上是砖砌的。)
什么会导致 OS 清空 /etc/network/interfaces 文件?我认为这必须在系统初始化期间完成 - 但出于什么原因?
如果我使用文本编辑器手动进行相同的更改并重新启动,一切都很好 - 每次都会出现新的界面设置。
我无法解释可能导致此行为的原因。
--
以下是我考虑但已排除的其他因素:
- 可能是文件没有保存好?我已经排除了这一点,因为 cat 命令将指示它已成功保存。
- 也许还有其他文件(或持久设置)需要修改,否则配置将被视为无效和空白?我已经排除了这一点,因为我的理解是接口文件是接口设置所需的唯一配置。
- 接口文件中可能存在语法错误。我已经统治了 这是因为我将我的编程输出与有效文件进行了比较 一切看起来都很好。此外,我不认为语法错误 会导致文件空白。
编辑:我的设备基于 TI Sitara uP 运行ning Debian Wheezy 3.14 变体。我 运行 node.js v0.12.x 作为服务器后端。
修改后的文件可能没有刷新到磁盘,而是保留在缓存中。 cat
命令可以从该缓存中读取文件。
尝试使用 sync
(see here) 强制刷新到底层存储。