मुझे Fsync विफल हो रहा है। क्यों?


12

मैंने Ec2 उदाहरण (जो Ubuntu 12.04 है) में tcp टाइमस्टैम्प को बदलने की कोशिश की। मैंने संपादक को खोला और मान 1को बदल दिया 0। और जब मैंने फ़ाइल को सहेजने का प्रयास किया तो मुझे यह त्रुटि मिली:

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

मैं उबंटू में बहुत नया हूं। क्या कोई इसमें मेरी मदद कर सकता है?

जवाबों:


27

आपका संपादक शायद उस फ़ाइल की मज़ाकिया बातें कर रहा है (फ़ाइलें इन / प्रॉप वास्तविक फ़ाइल नहीं हैं, वे ऑपरेटिंग सिस्टम के निचले-स्तर के लिए एक इंटरफ़ेस हैं)। हालांकि परिवर्तन संभवत: ठीक काम कर रहा है, सामान्य रूप से चीजों को अपडेट करने का तरीका सीधे शेल कमांड के साथ है, जैसे:

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) बहुत उपयोगी है। आपका बहुत बहुत धन्यवाद!
मैल्कम

1
इसके लिए और अन्य कर्नेल पैरामीटर सेट करने के लिए भी मेरे लिए काम किया। इसने एक और कर्नेल पैरामीटर सेट करने में मदद की, जिसे allow_tpm कहा जाता है। गूंज 1 | sudo dd of = / sys / मॉड्यूल / libata / पैरामीटर्स / allow_tpm

1
का उद्देश्य क्या है dd of? मैं समझता हूं कि सभी गूंज और पाइप हैं, लेकिन मुझे समझ में नहीं आता कि डीडी की आवश्यकता क्यों थी। >इसके बजाय क्यों नहीं ?
Adelin

1
@ Adelin ddवहाँ के रूप में लिखने के लिए जड़ है। बाकी कमांड पाइपलाइन को विशेषाधिकार प्राप्त करने की आवश्यकता नहीं है, इसलिए dd एकमात्र भाग है जिसे हम sudo के तहत चलाते हैं। यदि हम पूरे शेल को रूट के रूप में चलाते हैं, तो >पुनर्निर्देशन ठीक होगा। लेकिन मैं यह बताना पसंद करता हूं कि रूट प्राइवेट के साथ क्या चलाया जाता है।
जेरेमी केर

7

कुछ समय पहले हमें ठीक वैसी ही त्रुटि मिल रही थी। जांच में कई मिनट बर्बाद होने के बाद पाया गया कि डिवाइस में कोई जगह नहीं बची है। आप देख सकते हैं कि यह आपके लिए मामला है। समस्या को जल्दी से ठीक करने के लिए कुछ संग्रहण को मुक्त करने का प्रयास करें।

नोट: यह समस्या का सबसे अच्छा तकनीकी विवरण नहीं हो सकता है लेकिन यह समस्या को जल्दी से ठीक करने में मदद कर सकता है। सत्यापित उत्तर इसे और विस्तार से बताता है। मेरा जवाब सिर्फ यह साझा करने के लिए था कि मैंने इस मुद्दे को कैसे तय किया।


2
पता नहीं क्यों तुम निराश हो गए। Google में पहला परिणाम था और मेरी समस्या को हल किया, इसलिए बहुत-बहुत धन्यवाद!
जोहान्स स्टैडलर

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 विफल रहा है: फ़ाइल के सफलतापूर्वक लिखे जाने तक मूल फ़ाइल खो सकती है या क्षतिग्रस्त हो सकती है!

एक अंतरिक्ष मुद्दा हो सकता है क्योंकि मेरे लिए काम करने वाली कुछ फ़ाइलों को साफ़ करना

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.