在编程更改和后续重启后,为什么/ etc / network / interfaces为空?

时间:2016-06-07 18:18:47

标签: linux network-programming debian embedded-linux

我在嵌入式设备上运行node.js服务器,该设备提供Web UI以允许用户修改网络接口设置 - 例如,从静态更改为DHCP或反之亦然,或者设置特定的静态IP设置(网络掩码,网关)使用这些用户驱动的配置参数,我能够以编程方式生成新的/ etc / network / interfaces文件(当然,在将前一个文件备份到/etc/network/interfaces.bak文件之后)。我甚至对新配置文件的日志文件执行'cat / etc / network / interfaces'以确认新interfaces文件的内容和语法有效性。到目前为止,一切都很糟糕。

但是,如果我的设备上有重启(在重启之前有或没有/etc/init.d/networking停止/启动),我发现系统多次出现空/ etc / network / interfaces文件,因此没有网络接口。 (幸运的是,我有一个允许SSH连接的JTAG接口,因此仍然可以连接到我的设备,但对于用户来说,他们的设备基本上是砖块。)

什么会导致操作系统将/ etc / network / interfaces文件留空?我认为这必须在系统初始化期间完成 - 但出于什么原因?

如果我使用文本编辑器手动进行相同的更改并重新启动,一切都很好 - 每次都会出现新的界面设置。

我无法解释可能导致此行为的原因。

-

以下是我考虑但已排除的其他因素:

  • 也许文件保存不正确?我已经排除了这一点,因为 cat命令表示它已成功保存。
  • 也许还有其他文件(或持久性设置)需要修改,没有这些文件,配置会被视为无效并被删除?我已经排除了这一点,因为我的理解是interfaces文件是接口设置所需的唯一配置。
  • 也许interfaces文件中存在合成错误。我已经统治了 这是因为我将程序输出与有效文件进行了比较 事情看起来很好。此外,我不认为合成错误 会导致文件被删除。

编辑:我的设备基于运行Debian Wheezy 3.14变体的TI Sitara uP。我运行node.js v0.12.x作为服务器后端。

1 个答案:

答案 0 :(得分:1)

修改后的文件可能无法刷新到磁盘并保留在缓存中。 cat命令可以从该缓存中读取文件。

尝试使用syncsee here)强制刷新底层存储空间。