我收到Fsync失败错误。为什么?


12

我试图在Ec2实例(Ubuntu 12.04)中更改tcp时间戳。我打开了编辑器,并1从更改了值0。当我尝试保存文件时,出现此错误:

/proc/sys/net/ipv4/tcp_timestamps" E667: Fsync failed

我对Ubuntu非常陌生。有人可以帮我吗?

Answers:


27

您的编辑器可能正在对该文件执行有趣的操作(/ proc中的文件不是实际文件,它们是操作系统底层的接口)。虽然所做的更改可能还可以,但是在proc中更新内容的通常方法是直接使用shell命令,例如:

echo 1 | sudo dd of=/proc/sys/net/ipv4/tcp_timestamps

如果希望每次引导时都应用此设置,请创建一个名为的文件/etc/sysctl.d/tcp-timestamps.conf,其中包含以下内容:

net.ipv4.tcp_timestamps = 1

3
此模式(echo VALUE | sudo dd of = / path / to / file)非常有用。非常感谢你!
Malcolm

1
为此也为我工作,并设置其他内核参数。这有助于设置另一个名为allow_tpm的内核参数。回声1 | sudo dd = / sys / module / libata / parameters / allow_tpm

1
目的是dd of什么?我所了解的只是回声和管道,但我不明白为什么需要dd。为什么不>呢?
阿德林

1
@Adelin在dd那里以根用户身份执行写操作。命令管道的其余部分不需要特权,因此dd是我们在sudo下运行的唯一部分。如果我们以root用户身份运行整个shell,那么>重定向就可以了。但是我想最小化root特权运行的内容。
杰里米·科尔

7

有时回来,我们得到完全相同的错误。在浪费几分钟进行调查后,发现设备上没有剩余空间。您可以检查是否适合您。尝试释放一些存储空间以快速解决此问题。

注意:这可能不是问题的最佳技术描述,但可能有助于快速解决问题。经过验证的答案将对此进行更详细的说明。我的回答只是分享我如何解决此问题。


2
不知道你为什么被拒绝。是google的第一个结果,解决了我的问题,非常感谢!
Johannes Stadler '18

3

我看到很久以前就正确回答了这个问题,但是有一个更简单的命令:

sudo sysctl net.ipv4.tcp_timestamps=1

您也可以使用其他设置执行相同操作,例如:

sudo sysctl vm.admin_reserve_kbytes=16384

如您所见,您可以通过指定/ proc / sys /中的其余文件来修改任何文件,同时将分隔符从“ /”更改为“”。

示例:将“ / proc / sys / net / ipv4 / tcp_timestamps”指定为“ net.ipv4.tcp_timestamps”


1

Fsync失败警告:原始文件可能会丢失或损坏在成功写入文件之前,请不要退出编辑器!

可能是空间问题,因为清除几个文件对我有用

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.