Otrzymuję błąd Fsync nieudany. Dlaczego?


12

Próbowałem zmienić znaczniki czasu tcp w instancji Ec2 (czyli Ubuntu 12.04). Otworzyłem edytor i zmieniłem wartość 1z 0. A kiedy próbowałem zapisać plik, pojawia się ten błąd:

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

Jestem bardzo nowy w Ubuntu. Czy ktoś może mi w tym pomóc?

Odpowiedzi:


27

Twój edytor prawdopodobnie robi śmieszne rzeczy z tym plikiem (pliki w / proc nie są rzeczywistymi plikami, są interfejsem do niższych poziomów systemu operacyjnego). Chociaż zmiana prawdopodobnie działa dobrze, zwykłym sposobem aktualizowania rzeczy w proc jest bezpośrednie polecenie powłoki, takie jak:

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

Jeśli chcesz, aby to ustawienie było stosowane przy każdym uruchomieniu, utwórz plik o nazwie /etc/sysctl.d/tcp-timestamps.conf, zawierający:

net.ipv4.tcp_timestamps = 1

3
Ten wzorzec (echo WARTOŚĆ | sudo dd = = / ścieżka / do / pliku) jest bardzo przydatny. Dziękuję Ci bardzo!
Malcolm,

1
Pracowałem też dla tego i ustawiłem inne parametry jądra. Pomogło to ustawić inny parametr jądra o nazwie allow_tpm. echo 1 | sudo dd z = / sys / module / libata / parameters / allow_tpm

1
Jaki jest cel dd of? Rozumiem tylko echo i potok, ale nie rozumiem, dlaczego dd było potrzebne. Dlaczego nie >zamiast tego?
Adelin

1
@Adelin ddJest tam, aby wykonać zapis jako root. Reszta potoku poleceń nie musi być uprzywilejowana, więc dd jest jedyną częścią, którą uruchamiamy pod sudo. Gdybyśmy uruchomili całą powłokę jako root, >przekierowanie byłoby w porządku. Ale lubię minimalizować to, co jest uruchamiane z rootami.
Jeremy Kerr

7

Kiedyś otrzymywaliśmy dokładnie ten sam błąd. Po marnowaniu kilku minut na śledztwo stwierdzono, że na urządzeniu nie było już miejsca. Możesz sprawdzić, czy tak jest w Twoim przypadku. Zwolnij trochę miejsca, aby szybko rozwiązać problem.

Uwaga: To nie może być najlepszy opis techniczny problemu, ale może pomóc w szybkim rozwiązaniu problemu. Zweryfikowana odpowiedź wyjaśnia to bardziej szczegółowo. Moją odpowiedzią było tylko podzielenie się tym, jak naprawiłem ten problem.


2
Nie wiem, dlaczego zostałeś przegłosowany. Był pierwszym wynikiem w google i rozwiązał mój problem, więc bardzo dziękuję!
Johannes Stadler

3

Widzę, że dawno temu poprawnie odpowiedziano, ale istnieje prostsze polecenie:

sudo sysctl net.ipv4.tcp_timestamps=1

Możesz także zrobić to samo z innymi ustawieniami, takimi jak:

sudo sysctl vm.admin_reserve_kbytes=16384

Jak widać, możesz zmodyfikować dowolny plik w / proc / sys /, określając resztę jego lokalizacji, zmieniając jednocześnie ogranicznik z „/” na „.”

Przykład: „/ proc / sys / net / ipv4 / tcp_timestamps” określono jako „net.ipv4.tcp_timestamps”


1

Fsync nie powiódł się OSTRZEŻENIE: Oryginalny plik może zostać utracony lub uszkodzony, nie zamykaj edytora, dopóki plik nie zostanie poprawnie zapisany!

Może to być problem z miejscem, ponieważ wyczyszczenie kilku plików zadziałało dla mnie

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.