208 में से 208 कोड
ऑपरेशन के लिए ऐसे विशेषाधिकार चाहिए जो प्रोसेस के पास नहीं हैं, जैसे किसी फ़ाइल का स्वामी बदलना, किसी दूसरे उपयोगकर्ता के प्रोसेस को सिग्नल भेजना या किसी अपरिवर्तनीय फ़ाइल (chattr +i) को बदलना। EACCES के विपरीत, यह फ़ाइल की अनुमतियाँ बदलने से हल नहीं होता: root या संबंधित capability चाहिए।
फ़ाइल या डायरेक्टरी मौजूद नहीं है। यह तब भी आता है जब पथ की कोई बीच की डायरेक्टरी गायब हो, जब कोई सिंबॉलिक लिंक ऐसे लक्ष्य की ओर इशारा करे जो मौजूद नहीं है, या जब स्क्रिप्ट की #! पंक्ति वाला इंटरप्रेटर इंस्टॉल न हो।
उस पहचानकर्ता वाला कोई प्रोसेस, प्रोसेस समूह या थ्रेड मौजूद नहीं है; उदाहरण के लिए, ऐसे PID पर kill चलाने पर जो पहले ही समाप्त हो चुका है।
सिस्टम कॉल पूरी होने से पहले एक सिग्नल ने उसे बाधित कर दिया। यह असली त्रुटि नहीं है: प्रोग्राम को कॉल दोबारा करनी चाहिए, या सिग्नल हैंडलर को SA_RESTART के साथ इंस्टॉल करना चाहिए।
निम्न-स्तरीय इनपुट/आउटपुट त्रुटि, आम तौर पर डिवाइस से पढ़ते या उसमें लिखते समय। डिस्क में यह अक्सर ख़राब सेक्टर या दोषपूर्ण केबल का संकेत होती है: dmesg और SMART स्थिति जाँचें। यह पहले से बंद हो चुके टर्मिनल में लिखते समय भी आती है।
डिवाइस या पता मौजूद नहीं है: डिवाइस फ़ाइल तो है, पर उसके पीछे कोई हार्डवेयर नहीं है, या किसी FIFO को बिना किसी रीडर के O_NONBLOCK के साथ लिखने के लिए खोला गया।
exec को दी गई आर्ग्युमेंट और एनवायरनमेंट वेरिएबल की सूची बहुत बड़ी है। यह वाइल्डकार्ड के हज़ारों फ़ाइलों में फैल जाने पर आने वाली प्रसिद्ध «Argument list too long» त्रुटि है; find -exec या xargs का उपयोग करें।
फ़ाइल का कोई पहचाना हुआ एक्ज़ीक्यूटेबल फ़ॉर्मैट नहीं है: यह किसी दूसरे आर्किटेक्चर का बाइनरी है, क्षतिग्रस्त है, या #! पंक्ति के बिना स्क्रिप्ट है।
फ़ाइल डिस्क्रिप्टर अमान्य है, पहले ही बंद हो चुका है, या ऐसे मोड में खोला गया है जो ऑपरेशन की अनुमति नहीं देता, जैसे केवल पढ़ने के लिए खोले गए डिस्क्रिप्टर में लिखना।
प्रोसेस का कोई चाइल्ड नहीं है जिसके लिए wait या waitpid से प्रतीक्षा की जा सके, अक्सर इसलिए कि SIGCHLD अनदेखा किया जाता है और चाइल्ड अपने आप साफ़ हो जाते हैं।
संसाधन फ़िलहाल उपलब्ध नहीं है और दोबारा कोशिश करनी चाहिए। नॉन-ब्लॉकिंग ऑपरेशनों में इसका अर्थ है कि अभी डेटा या जगह नहीं है; fork में, कि प्रोसेस या थ्रेड की सीमा पूरी हो गई है (ulimit -u या cgroup का pids.max)।
समान मान:EWOULDBLOCK
ऑपरेशन के लिए पर्याप्त मेमोरी नहीं है या प्रोसेस की कोई मेमोरी सीमा पार हो गई है। fork या mmap में इसका कारण overcommit नीति, cgroup की सीमा या एड्रेस स्पेस की कमी हो सकता है।
फ़ाइल की या पथ की किसी डायरेक्टरी की अनुमतियों (हर एक पर execute अनुमति चाहिए), किसी ACL, SELinux या AppArmor, या noexec वाले माउंट के कारण अनुमति अस्वीकृत। bind भी इसे लौटाता है जब बिना विशेषाधिकार के 1024 से छोटे पोर्ट का उपयोग किया जाए।
किसी सिस्टम कॉल को अमान्य मेमोरी पते का पॉइंटर दिया गया। यह प्रोग्राम में bug दर्शाता है।
ऑपरेशन को डिस्क जैसे ब्लॉक डिवाइस की ज़रूरत है और उसे दूसरी तरह की फ़ाइल मिली; उदाहरण के लिए, किसी साधारण फ़ाइल को -o loop के बिना माउंट करते समय।
डिवाइस या संसाधन उपयोग में है। यह आम तौर पर तब होता है जब ऐसे फ़ाइल सिस्टम को अनमाउंट किया जाए जिसमें फ़ाइलें खुली हों या कोई टर्मिनल उसके अंदर हो; lsof या fuser दिखाते हैं कि कौन से प्रोसेस उसका उपयोग कर रहे हैं।
उस नाम की कोई फ़ाइल, डायरेक्टरी या अन्य ऑब्जेक्ट पहले से मौजूद है, उदाहरण के लिए O_EXCL के साथ बनाते समय, -p के बिना mkdir चलाते समय या ऐसा लिंक बनाते समय जिसका गंतव्य पहले से मौजूद हो।
अलग-अलग फ़ाइल सिस्टम के बीच न हार्ड लिंक बनाया जा सकता है और न ही फ़ाइल का नाम बदला जा सकता है। mv इसे कॉपी करके और फिर हटाकर हल करता है; rename() का उपयोग करने वाले प्रोग्रामों को भी यही करना चाहिए।
डिवाइस मौजूद नहीं है या ऑपरेशन का समर्थन नहीं करता; उदाहरण के लिए, ऐसे प्रकार का फ़ाइल सिस्टम माउंट करते समय जिसका कर्नेल मॉड्यूल लोड नहीं है।
पथ का कोई घटक जिसे डायरेक्टरी होना चाहिए था, एक फ़ाइल है, या डायरेक्टरी (O_DIRECTORY) माँगी गई और वह डायरेक्टरी नहीं है।
किसी डायरेक्टरी पर फ़ाइल वाला ऑपरेशन करने की कोशिश की गई, जैसे उसे लिखने के लिए खोलना।
कोई आर्ग्युमेंट उस कॉल के लिए मान्य नहीं है: सीमा से बाहर का मान, विकल्पों का असंगत संयोजन या ऐसा ऑपरेशन जिसका ऑब्जेक्ट समर्थन नहीं करता। यह सामान्य त्रुटि है: कॉल का man पेज ठोस मामलों की सूची देता है।
पूरे सिस्टम की खुली फ़ाइलों की तालिका भर गई है। सीमा sysctl में fs.file-max से समायोजित होती है।
प्रोसेस अपने खुले डिस्क्रिप्टर की सीमा तक पहुँच गया है («Too many open files»)। ulimit -n से या systemd में LimitNOFILE से सीमा बढ़ाएँ, और जाँचें कि प्रोग्राम फ़ाइलें या सॉकेट खुले तो नहीं छोड़ रहा।
ऐसी चीज़ पर टर्मिनल ऑपरेशन (ioctl) माँगा गया जो टर्मिनल नहीं है, उदाहरण के लिए जब किसी इंटरैक्टिव प्रोग्राम का आउटपुट किसी फ़ाइल या पाइप में रीडायरेक्ट किया जाए।
एक्ज़ीक्यूटेबल उपयोग में है: चल रहे बाइनरी में लिखा नहीं जा सकता, और न ही ऐसा बाइनरी चलाया जा सकता है जो अभी भी लिखने के लिए खुला हो। इसे अपडेट करने के लिए, नई फ़ाइल लिखकर उसका नाम बदलना बेहतर है।
फ़ाइल उस अधिकतम आकार से बड़ी है जिसका फ़ाइल सिस्टम समर्थन करता है (FAT32 में 4 GB), या प्रोसेस की RLIMIT_FSIZE सीमा से।
डिवाइस पर जगह नहीं बची। अगर df ख़ाली जगह दिखाता है, तो df -i से inode जाँचें। inotify भी fs.inotify.max_user_watches ख़त्म होने पर इसे लौटाता है।
पाइप, FIFO या सॉकेट पर lseek नहीं किया जा सकता, क्योंकि उनकी कोई स्थिति (position) नहीं होती।
फ़ाइल सिस्टम केवल-पढ़ने के लिए माउंट है। अगर यह बिना किसी के कहे केवल-पढ़ने में बदल गया, तो कर्नेल ने त्रुटियाँ मिलने पर ऐसा किया है: dmesg देखें और fsck चलाएँ।
किसी फ़ाइल के हार्ड लिंक की अधिकतम संख्या पार हो गई, या कुछ फ़ाइल सिस्टम में किसी डायरेक्टरी की सबडायरेक्टरी की।
ऐसे पाइप या सॉकेट में लिखा गया जिसका दूसरा सिरा पहले ही बंद हो चुका है («Broken pipe»)। त्रुटि के अलावा, प्रोसेस को SIGPIPE मिलता है; यह सामान्य है जब पढ़ने वाला पहले समाप्त हो जाए, जैसे cmd | head में।
किसी गणितीय फ़ंक्शन का आर्ग्युमेंट उसके डोमेन से बाहर है, जैसे किसी ऋणात्मक संख्या का वर्गमूल।
फ़ंक्शन का परिणाम दर्शाए जाने के लिए बहुत बड़ा या बहुत छोटा है, या बफ़र परिणाम के लिए पर्याप्त नहीं है, जैसे छोटे बफ़र के साथ getcwd में।
एक डेडलॉक टाला गया: माँगा गया लॉक, जैसे fcntl से फ़ाइल लॉक या त्रुटि-पहचान वाला mutex, हमेशा के लिए प्रतीक्षा में रह जाता।
समान मान:EDEADLOCK
पथ या उसका कोई घटक अधिकतम लंबाई से बड़ा है: Linux में आम तौर पर हर नाम के लिए 255 बाइट और पथ के लिए 4096।
कोई लॉक उपलब्ध नहीं है। NFS में यह अक्सर दर्शाता है कि लॉकिंग सेवा (lockd या rpc.statd) नहीं चल रही।
सिस्टम कॉल इस कर्नेल में मौजूद नहीं है या लागू नहीं की गई है। यह आम तौर पर नए कर्नेल के लिए कंपाइल किए गए बाइनरी में, या कंटेनरों के उन seccomp प्रोफ़ाइल में होता है जो हाल की कॉल नहीं पहचानते।
डायरेक्टरी ख़ाली नहीं है, उदाहरण के लिए rmdir का उपयोग करते समय या किसी मौजूदा डायरेक्टरी के ऊपर नाम बदलते समय। उसे सामग्री सहित हटाने के लिए rm -r का उपयोग करें।
पथ को हल करते समय बहुत अधिक सिंबॉलिक लिंक एक के बाद एक जुड़े हैं, आम तौर पर किसी चक्र के कारण, या किसी सिंबॉलिक लिंक पर O_NOFOLLOW का उपयोग किया गया।
System V संदेश कतार में माँगे गए प्रकार का कोई संदेश नहीं है।
System V का IPC पहचानकर्ता (कतार, सेमाफ़ोर या साझा मेमोरी) प्रोसेस द्वारा उपयोग के दौरान हटा दिया गया।
चैनल संख्या सीमा से बाहर। यह पुराना कोड है जिसका Linux में कोई व्यावहारिक उपयोग नहीं।
स्तर 2 सिंक्रनाइज़ नहीं। यह System V से आया पुराना कोड है जिसका Linux में कोई व्यावहारिक उपयोग नहीं।
स्तर 3 रुका हुआ। यह System V से आया पुराना कोड है जिसका Linux में कोई व्यावहारिक उपयोग नहीं।
स्तर 3 रीसेट हुआ। यह System V से आया पुराना कोड है जिसका Linux में कोई व्यावहारिक उपयोग नहीं।
लिंक संख्या सीमा से बाहर। यह पुराना कोड है जिसका Linux में कोई व्यावहारिक उपयोग नहीं।
प्रोटोकॉल ड्राइवर जुड़ा हुआ नहीं है। इसका उपयोग कुछ ही सबसिस्टम करते हैं, जैसे कुछ Bluetooth ड्राइवर।
कोई CSI संरचना उपलब्ध नहीं है। यह पुराना कोड है जिसका Linux में कोई व्यावहारिक उपयोग नहीं।
स्तर 2 रुका हुआ। यह System V से आया पुराना कोड है जिसका Linux में कोई व्यावहारिक उपयोग नहीं।
अमान्य एक्सचेंज। यह पुराना कोड है जिसे कुछ ड्राइवर और फ़ाइल सिस्टम अपने अर्थ में दोबारा उपयोग करते हैं।
अमान्य अनुरोध डिस्क्रिप्टर। यह पुराना कोड है जिसे कुछ ड्राइवर अपने अर्थ में दोबारा उपयोग करते हैं।
एक्सचेंज भरा हुआ। यह पुराना कोड है जिसका Linux में कोई व्यावहारिक उपयोग नहीं।
कोई «anode» नहीं है। यह पुराना कोड है जिसका Linux में कोई व्यावहारिक उपयोग नहीं।
अमान्य अनुरोध कोड। यह पुराना है; कुछ ड्राइवर इसे उन कमांड के लिए उपयोग करते हैं जिनका वे समर्थन नहीं करते।
अमान्य स्लॉट। यह पुराना कोड है जिसका Linux में कोई व्यावहारिक उपयोग नहीं।
फ़ॉन्ट फ़ाइल का फ़ॉर्मैट गलत है। यह पुराना कोड है जिसका Linux में कोई व्यावहारिक उपयोग नहीं।
डिवाइस STREAM नहीं है। यह System V के STREAMS इंटरफ़ेस से संबंधित है, जिसे Linux लागू नहीं करता।
कोई डेटा उपलब्ध नहीं है। Linux में getxattr इसे तब लौटाता है जब विस्तारित एट्रिब्यूट मौजूद न हो; macOS में यह मामला ENOATTR है।
एक टाइमर समाप्त हो गया। यह STREAMS से आया है; Linux में कुछ ड्राइवर और io_uring इसे समय-सीमा वाले ऑपरेशनों के लिए उपयोग करते हैं।
STREAMS के संसाधन ख़त्म हो गए; यह एक इंटरफ़ेस है जिसे Linux लागू नहीं करता।
मशीन नेटवर्क पर नहीं है। यह कम उपयोग वाला पुराना कोड है।
पैकेज इंस्टॉल नहीं है। यह पुराना है; कुछ सबसिस्टम इसे तब उपयोग करते हैं जब कोई मॉड्यूल, जैसे कोई क्रिप्टोग्राफ़िक मॉड्यूल, मौजूद न हो।
ऑब्जेक्ट रिमोट है। NFS में यह ऐसे पथ को दर्शाता है जो किसी दूसरे सर्वर से एक्सपोर्ट होता है।
लिंक टूट गया। यह पुराना है; कुछ ड्राइवर इसे डिवाइस से कनेक्शन टूटने पर उपयोग करते हैं।
«advertise» त्रुटि। यह RFS से आया पुराना कोड है जिसका Linux में कोई उपयोग नहीं।
«srmount» त्रुटि। यह RFS से आया पुराना कोड है जिसका Linux में कोई उपयोग नहीं।
भेजते समय संचार त्रुटि। यह पुराना है; कुछ नेटवर्क और USB ड्राइवर इसका उपयोग करते हैं।
प्रोटोकॉल त्रुटि: दूसरे सिरे या डिवाइस ने कुछ अप्रत्याशित उत्तर दिया। यह USB डिवाइसों के साथ और उन कनेक्शनों में आता है जो किसी आदान-प्रदान के बीच में टूट जाते हैं।
मल्टीहॉप (multihop) का प्रयास किया गया। यह RFS से आया पुराना कोड है।
RFS-विशिष्ट त्रुटि। Linux में कोई उपयोग नहीं।
संदेश ग़लत रूप में है या दूषित है। ext4, XFS और Btrfs इसे, EFSBADCRC उपनाम के साथ, तब लौटाते हैं जब मेटाडेटा का चेकसम विफल हो जाए।
समान मान:EFSBADCRC
मान लक्ष्य डेटा प्रकार में नहीं समाता; उदाहरण के लिए, बड़ी फ़ाइलों के समर्थन के बिना कंपाइल किया गया 32-बिट प्रोग्राम जो 2 GB से बड़ी फ़ाइल खोलता है।
नाम नेटवर्क पर अद्वितीय नहीं है। यह पुराना कोड है।
फ़ाइल डिस्क्रिप्टर गलत स्थिति में है। ALSA और कुछ ड्राइवर इसे तब उपयोग करते हैं जब डिवाइस तैयार न हो।
रिमोट पता बदल गया। यह पुराना कोड है।
किसी आवश्यक साझा लाइब्रेरी तक पहुँचा नहीं जा सकता। यह a.out बाइनरी से आया पुराना कोड है।
साझा लाइब्रेरी क्षतिग्रस्त है। यह a.out बाइनरी से आया पुराना कोड है।
a.out बाइनरी का .lib सेक्शन क्षतिग्रस्त है। यह पुराना कोड है।
बहुत अधिक साझा लाइब्रेरी लिंक करने का प्रयास किया गया। यह a.out से आया पुराना कोड है।
साझा लाइब्रेरी को सीधे नहीं चलाया जा सकता। यह a.out से आया पुराना कोड है।
बाइट अनुक्रम वर्ण एन्कोडिंग के लिए मान्य नहीं है, जैसे ऐसा टेक्स्ट जो iconv या मल्टीबाइट फ़ंक्शनों से बदलते समय मान्य UTF-8 नहीं है।
बाधित कॉल को फिर से शुरू करना चाहिए। यह कर्नेल के आंतरिक उपयोग के लिए है और इसे प्रोग्रामों तक नहीं पहुँचना चाहिए।
STREAMS पाइप त्रुटि। ALSA इसे तब लौटाता है जब ऑडियो डिवाइस निलंबित (suspended) हो।
बहुत अधिक उपयोगकर्ता हैं। डिस्क कोटा सिस्टम इसे अपनी तालिका भर जाने पर लौटाता है, और यह दुर्लभ है।
ऐसे डिस्क्रिप्टर पर सॉकेट ऑपरेशन किया गया जो सॉकेट नहीं है।
गंतव्य पता नहीं दिया गया: बिना कनेक्शन वाले सॉकेट से यह बताए बिना भेजा गया कि कहाँ भेजना है।
संदेश सॉकेट के लिए बहुत बड़ा है, जैसे अधिकतम सीमा से बड़ा UDP डेटाग्राम, या फ़्रैगमेंटेशन की अनुमति न होने पर MTU से बड़ा।
प्रोटोकॉल सॉकेट के प्रकार से मेल नहीं खाता।
माँगा गया सॉकेट विकल्प या प्रोटोकॉल उपलब्ध नहीं है, उदाहरण के लिए setsockopt का कोई विकल्प जिसे कर्नेल नहीं पहचानता।
प्रोटोकॉल समर्थित नहीं है, उदाहरण के लिए क्योंकि उसका कर्नेल मॉड्यूल लोड नहीं है।
उस एड्रेस फ़ैमिली में यह सॉकेट प्रकार समर्थित नहीं है।
ऑपरेशन सॉकेट या ऑब्जेक्ट द्वारा समर्थित नहीं है। Linux में इसका मान ENOTSUP के समान है, और कई फ़ाइल सिस्टम इसे उन सुविधाओं के लिए लौटाते हैं जिन्हें वे लागू नहीं करते, जैसे fallocate या विस्तारित एट्रिब्यूट।
ऑपरेशन समर्थित नहीं है। Linux में इसका मान EOPNOTSUPP (95) के समान है; macOS में ये अलग-अलग कोड हैं।
प्रोटोकॉल फ़ैमिली समर्थित नहीं है।
एड्रेस फ़ैमिली समर्थित नहीं है; यह आम तौर पर तब होता है जब किसी ऐसे सिस्टम या कंटेनर में IPv6 का उपयोग किया जाए जिसमें वह अक्षम हो।
पता और पोर्ट पहले से उपयोग में हैं: कोई दूसरा प्रोसेस उस पोर्ट पर सुन रहा है, या पिछला कनेक्शन अभी भी TIME_WAIT में है। ss -ltnp या lsof -i :पोर्ट से प्रोसेस खोजें, या SO_REUSEADDR का उपयोग करें।
माँगा गया पता असाइन नहीं किया जा सकता: IP मशीन के किसी इंटरफ़ेस का नहीं है, या बाहर जाने वाले कनेक्शनों के लिए अल्पकालिक (ephemeral) पोर्ट ख़त्म हो गए हैं।
नेटवर्क इंटरफ़ेस डाउन है।
गंतव्य नेटवर्क तक नहीं पहुँचा जा सकता क्योंकि उस तक कोई रूट नहीं है। रूटिंग तालिका और गेटवे जाँचें; यह IPv6 कनेक्टिविटी के बिना IPv6 से कनेक्ट करने पर भी होता है।
नेटवर्क ने कनेक्शन रीसेट कर दिया, उदाहरण के लिए जब keepalive विफल हो जाए।
कनेक्शन स्थानीय पक्ष से रद्द (abort) हुआ, उदाहरण के लिए क्योंकि क्लाइंट ने उसे सर्वर द्वारा accept से स्वीकार किए जाने से पहले बंद कर दिया।
दूसरे सिरे ने RST के साथ कनेक्शन अचानक काट दिया («Connection reset by peer»): रिमोट प्रोसेस बंद हो गया, किसी फ़ायरवॉल या लोड बैलेंसर ने निष्क्रिय कनेक्शन काट दिया, या ऐसा डेटा भेजा गया जिसकी दूसरे पक्ष को अपेक्षा नहीं थी।
नेटवर्क ऑपरेशन के लिए कर्नेल में बफ़र स्थान उपलब्ध नहीं है; यह आम तौर पर भारी ट्रैफ़िक या सॉकेट की कतारें भरी होने पर आता है।
सॉकेट पहले से कनेक्टेड है।
सॉकेट कनेक्टेड नहीं है: कनेक्ट करने से पहले भेजने या प्राप्त करने की कोशिश की गई, या कनेक्शन पहले ही बंद हो चुका है। FUSE माउंट में यह «Transport endpoint is not connected» के रूप में दिखता है जब उसका प्रोसेस मर जाता है; इसे fusermount -u से अनमाउंट करके ठीक किया जाता है।
shutdown से सॉकेट की उस दिशा को बंद करने के बाद भेजा नहीं जा सकता।
बहुत अधिक रेफ़रेंस हैं; Linux में, Unix सॉकेट के ज़रिए बहुत अधिक नेस्टेड डिस्क्रिप्टर भेजने पर।
कनेक्शन का टाइमआउट हो गया क्योंकि गंतव्य ने जवाब नहीं दिया। इसका कारण आम तौर पर ऐसा फ़ायरवॉल होता है जो पैकेट चुपचाप गिरा देता है, बंद होस्ट, या ऐसा रूट जो गंतव्य तक नहीं पहुँचता।
गंतव्य ने कनेक्शन अस्वीकार कर दिया: मशीन जवाब देती है, लेकिन उस पोर्ट पर कोई नहीं सुन रहा या कोई फ़ायरवॉल अस्वीकृति भेजता है। जाँचें कि सेवा चल रही है और सही इंटरफ़ेस पर सुन रही है, न कि केवल 127.0.0.1 पर।
गंतव्य होस्ट डाउन है।
होस्ट तक कोई रूट नहीं है: वह स्थानीय नेटवर्क पर ARP का जवाब नहीं देता, या कोई राउटर या फ़ायरवॉल बताता है कि वह पहुँच से बाहर है।
सॉकेट पर पहले से एक ऑपरेशन चल रहा है, जैसे कोई नॉन-ब्लॉकिंग connect जो अभी पूरा नहीं हुआ।
ऑपरेशन जारी है: एक नॉन-ब्लॉकिंग connect शुरू हुआ है और बाद में पूरा होगा। यह त्रुटि नहीं है; poll या select से प्रतीक्षा करनी होगी।
फ़ाइल हैंडल पुराना (stale) हो गया है: NFS में, फ़ाइल या डायरेक्टरी सर्वर पर हटा दी गई या बदल दी गई। पथ को फिर से खोलकर या दोबारा माउंट करके इसे ठीक किया जाता है।
संरचना को सफ़ाई की ज़रूरत है: फ़ाइल सिस्टम में करप्शन पाया गया है (ext4 और XFS में, EFSCORRUPTED उपनाम के साथ)। इसे अनमाउंट करें और fsck या xfs_repair चलाएँ।
समान मान:EFSCORRUPTED
XENIX की नामित फ़ाइल नहीं है। यह बिना उपयोग का पुराना कोड है।
XENIX सेमाफ़ोर उपलब्ध नहीं हैं। यह बिना उपयोग का पुराना कोड है।
यह XENIX की नामित फ़ाइल है। यह बिना उपयोग का पुराना कोड है।
रिमोट I/O त्रुटि, उदाहरण के लिए किसी I2C डिवाइस से या ऐसी रिमोट डिस्क से जिसने जवाब नहीं दिया।
उपयोगकर्ता या समूह का डिस्क कोटा पार हो गया।
डिवाइस में कोई मीडिया नहीं है, जैसे बिना डिस्क की ड्राइव या ख़ाली कार्ड रीडर।
मीडिया का प्रकार सही नहीं है।
ऑपरेशन रद्द कर दिया गया, उदाहरण के लिए कोई एसिंक्रोनस I/O या io_uring की कोई प्रतीक्षा।
आवश्यक कुंजी कर्नेल के keyring में नहीं है। यह fscrypt या eCryptfs जैसे एन्क्रिप्टेड फ़ाइल सिस्टम के साथ तब आता है जब कुंजी लोड नहीं की गई।
कुंजी की अवधि समाप्त हो गई। PAM और Kerberos भी इसे तब उपयोग करते हैं जब पासवर्ड या टिकट की अवधि ख़त्म हो जाए।
कुंजी रद्द कर दी गई।
सेवा ने कुंजी अस्वीकार कर दी।
किसी robust mutex का स्वामी उसे छोड़े बिना मर गया। नए स्वामी को संरक्षित स्थिति को सुसंगत बनाना चाहिए और pthread_mutex_consistent कॉल करना चाहिए।
robust mutex द्वारा संरक्षित स्थिति पुनर्प्राप्त नहीं की जा सकती, क्योंकि पिछला स्वामी मर गया और किसी ने उसे सुसंगत के रूप में चिह्नित नहीं किया।
ऑपरेशन संभव नहीं है क्योंकि Wi-Fi या Bluetooth रेडियो RF-kill से ब्लॉक है। rfkill list, भौतिक स्विच या एयरप्लेन मोड कुंजी जाँचें।
मेमोरी पेज में हार्डवेयर त्रुटि है और कर्नेल ने उसे विषाक्त (poisoned) के रूप में चिह्नित किया है।
फ़ाइल का प्रकार ऑपरेशन के लिए उपयुक्त नहीं है। macOS और BSD में यह लंबे समय से मौजूद है; Linux में इसे हाल ही में जोड़ा गया।
बहुत अधिक प्रोसेस हैं। BSD इसे प्रोसेस सीमा के लिए परिभाषित करता है, हालाँकि व्यवहार में fork EAGAIN लौटाता है।
RPC संरचना गलत है (Sun RPC, जिसका उपयोग NFS करता है)।
RPC संस्करण मेल नहीं खाता (Sun RPC, जिसका उपयोग NFS करता है)।
RPC प्रोग्राम सर्वर पर उपलब्ध नहीं है।
RPC प्रोग्राम का संस्करण मेल नहीं खाता।
RPC प्रोग्राम में यह प्रोसीजर मौजूद नहीं है।
प्रमाणीकरण त्रुटि, उदाहरण के लिए किसी NFS संसाधन को माउंट करते समय।
ऑपरेशन के लिए एक ऑथेंटिकेटर आवश्यक है।
डिवाइस बंद है।
डिवाइस त्रुटि, उदाहरण के लिए ऐसा प्रिंटर जिसमें काग़ज़ ख़त्म हो गया हो।
एक्ज़ीक्यूटेबल अमान्य है।
एक्ज़ीक्यूटेबल किसी दूसरे प्रकार के CPU के लिए है, जैसे Rosetta 2 के बिना Apple Silicon वाले Mac पर केवल-x86_64 बाइनरी, या Intel वाले Mac पर ARM बाइनरी।
साझा लाइब्रेरी का संस्करण मेल नहीं खाता।
Mach-O फ़ाइल ग़लत रूप में है या क्षतिग्रस्त है।
विस्तारित एट्रिब्यूट मौजूद नहीं है; यह Linux के ENODATA के बराबर है। यह xattr के साथ आता है, उदाहरण के लिए किसी ऐसी फ़ाइल से com.apple.quarantine हटाते समय जिसमें वह नहीं है।
MAC Framework में उस नाम से कोई नीति पंजीकृत नहीं है।
नेटवर्क इंटरफ़ेस की आउटपुट कतार भरी हुई है।
क्षमताएँ (capabilities) पर्याप्त नहीं हैं: sandbox द्वारा प्रतिबंधित कॉल इसे लौटाती हैं।
प्रोसेस को नियंत्रित करने वाला टर्मिनल बंद हो गया या SSH सेशन कट गया। nginx, sshd या rsyslog जैसे कई डेमन इसे कॉन्फ़िगरेशन दोबारा पढ़ने के अनुरोध के रूप में उपयोग करते हैं; nohup, tmux और screen बाहर निकलते समय इसे प्रोसेस बंद करने से रोकते हैं।
कीबोर्ड से Ctrl+C द्वारा व्यवधान (interrupt)। प्रोग्राम व्यवस्थित ढंग से समाप्त होने के लिए इसे कैप्चर कर सकता है। निकास कोड 130।
कीबोर्ड से Ctrl+\ द्वारा निकास। यह कोर डंप के साथ प्रोसेस समाप्त करता है; जबकि JVM इसका उपयोग थ्रेड की स्थिति प्रिंट करने के लिए करता है।
प्रोसेसर को एक अवैध निर्देश मिला: नए CPU के लिए कंपाइल किया गया बाइनरी (उदाहरण के लिए, AVX2 या AVX-512 के साथ, ऐसे प्रोसेसर पर जिसमें वे नहीं हैं), क्षतिग्रस्त कोड या डेटा पर जंप।
डीबग ट्रैप: डीबगर इसे ब्रेकपॉइंट के लिए उपयोग करते हैं। अगर यह बिना डीबगर के आए, तो आम तौर पर यह प्रोग्राम द्वारा ख़ुद पकड़ी गई कोई विफलता होती है, जैसे macOS में Swift की जाँचें।
प्रोसेस ने abort() कॉल किया: कोई विफल assertion, बिना पकड़ा गया C++ एक्सेप्शन, या C लाइब्रेरी द्वारा पकड़ी गई heap की गड़बड़ी («double free or corruption»)। निकास कोड 134।
समान मान:SIGIOT
बस त्रुटि: कुछ आर्किटेक्चर में असंरेखित (misaligned) मेमोरी तक पहुँच, या mmap से मैप की गई फ़ाइल के ऐसे हिस्से तक पहुँच जो फ़ाइल के छोटे (truncate) किए जाने से अब मौजूद नहीं है। यह /dev/shm भर जाने पर भी होता है।
अंकगणितीय अपवाद। नाम के बावजूद, सबसे आम कारण पूर्णांक को शून्य से भाग देना है।
प्रोसेस को तुरंत समाप्त करता है: इसे कैप्चर, ब्लॉक या अनदेखा नहीं किया जा सकता। इसे kill -9 भेजता है, मेमोरी ख़त्म होने पर कर्नेल का OOM killer, और Docker या Kubernetes, जब कोई कंटेनर अपनी मेमोरी सीमा पार कर ले (OOMKilled) या SIGTERM के बाद समय पर समाप्त न हो। निकास कोड 137।
मुक्त सिग्नल जिसे हर ऐप्लिकेशन अपने ढंग से उपयोग कर सकता है; उदाहरण के लिए, dd अपनी प्रगति बताता है और nginx लॉग फिर से खोलता है।
सेगमेंटेशन उल्लंघन («Segmentation fault»): अमान्य मेमोरी तक पहुँच, जैसे null पॉइंटर को dereference करना, किसी array की सीमा से बाहर जाना या अनंत रिकर्शन से स्टैक ओवरफ़्लो करना। निकास कोड 139।
दूसरा मुक्त सिग्नल जिसे हर ऐप्लिकेशन अपने ढंग से उपयोग कर सकता है।
बिना रीडर वाले पाइप या सॉकेट में लिखना। cmd | head में यह सामान्य है, जहाँ पढ़ने वाला पहले समाप्त हो जाता है; सर्वर आम तौर पर इसे अनदेखा करके EPIPE त्रुटि संभालते हैं। निकास कोड 141।
alarm या setitimer से सेट किया गया टाइमर समाप्त हो गया।
व्यवस्थित समाप्ति का अनुरोध। यह kill, systemctl stop, docker stop और pod हटाते समय Kubernetes का डिफ़ॉल्ट सिग्नल है; प्रोसेस को अपने कनेक्शन बंद करके बाहर निकल जाना चाहिए। निकास कोड 143।
कोप्रोसेसर स्टैक दोष। वर्तमान Linux में उपयोग नहीं होता।
कोई चाइल्ड प्रोसेस समाप्त हुआ, रुका या फिर से चला। पैरेंट को wait से उसे संभालना चाहिए; अगर ऐसा नहीं करता, तो चाइल्ड ज़ॉम्बी बन जाता है।
समान मान:SIGCLD
रुके हुए प्रोसेस को फिर से चालू करता है, जैसा shell में fg और bg करते हैं।
प्रोसेस को रोकता है; इसे कैप्चर या अनदेखा नहीं किया जा सकता। SIGCONT से फिर चालू होता है।
टर्मिनल से Ctrl+Z द्वारा रोकना। SIGSTOP के विपरीत, प्रोग्राम इसे कैप्चर कर सकता है।
बैकग्राउंड के किसी प्रोसेस ने टर्मिनल से पढ़ने की कोशिश की।
बैकग्राउंड के किसी प्रोसेस ने stty tostop सक्रिय होने पर टर्मिनल में लिखने, या उसकी सेटिंग बदलने की कोशिश की।
किसी सॉकेट पर अत्यावश्यक (out-of-band) डेटा आया। Go इसे goroutines को बाधित करने के लिए आंतरिक रूप से उपयोग करता है।
प्रोसेस की CPU समय सीमा पार हो गई (ulimit -t)।
प्रोसेस के लिए अनुमत अधिकतम फ़ाइल आकार पार हो गया (ulimit -f)।
वर्चुअल टाइमर समाप्त हो गया, जो केवल प्रोसेस का CPU समय गिनता है।
प्रोफ़ाइलिंग टाइमर समाप्त हो गया, जिसका उपयोग प्रोफ़ाइलर करते हैं।
टर्मिनल विंडो का आकार बदल गया; फ़ुल-स्क्रीन प्रोग्राम इसका उपयोग ख़ुद को दोबारा ड्रॉ करने के लिए करते हैं।
O_ASYNC से कॉन्फ़िगर किए गए डिस्क्रिप्टर पर I/O उपलब्ध है। Linux में SIGPOLL यही सिग्नल है।
समान मान:SIGPOLL
बिजली की विफलता, जिसकी सूचना UPS सॉफ़्टवेयर init सिस्टम को देता है।
गलत सिस्टम कॉल। आज इसका सामान्य कारण कोई seccomp फ़िल्टर है जो उसे ब्लॉक करता है, जैसे कंटेनरों में।
एम्युलेशन ट्रैप (EMT)। यह macOS और BSD में मौजूद है, लेकिन x86 या ARM पर Linux में नहीं।
macOS और BSD के टर्मिनल में Ctrl+T द्वारा जानकारी का अनुरोध; कई कमांड अपनी प्रगति दिखाकर जवाब देती हैं।
कमांड सफलतापूर्वक समाप्त हुई। यही एकमात्र कोड है जिसका अर्थ सफलता है: कोई भी अन्य मान त्रुटि दर्शाता है।
सामान्य त्रुटि; हर प्रोग्राम तय करता है कि इसका क्या अर्थ है। विवरण आम तौर पर उसमें होता है जो कमांड ने stderr में लिखा। grep और diff इसे दूसरे अर्थ में उपयोग करते हैं: «कोई मेल नहीं मिला» या «फ़ाइलें अलग हैं»।
shell की किसी बिल्ट-इन कमांड का गलत उपयोग या स्क्रिप्ट में सिंटैक्स त्रुटि। कई प्रोग्राम इसे अमान्य विकल्पों के लिए भी उपयोग करते हैं, और grep वास्तविक त्रुटियों के लिए।
कमांड का गलत उपयोग हुआ: आर्ग्युमेंट कम हैं, ज़्यादा हैं, या कोई विकल्प गलत है।
इनपुट डेटा का फ़ॉर्मैट गलत है।
कोई इनपुट फ़ाइल मौजूद नहीं है या पढ़ी नहीं जा सकती।
बताया गया उपयोगकर्ता मौजूद नहीं है; इसका उपयोग मुख्य रूप से मेल प्रोग्राम करते हैं।
होस्ट का नाम मौजूद नहीं है।
कोई आवश्यक सेवा उपलब्ध नहीं है, या कुछ ऐसा विफल हुआ जो किसी और श्रेणी में नहीं आता।
प्रोग्राम की आंतरिक त्रुटि।
ऑपरेटिंग सिस्टम की त्रुटि, जैसे fork न कर पाना या पाइप न बना पाना।
कोई सिस्टम फ़ाइल, जैसे /etc/passwd, गायब है या उसमें त्रुटि है।
आउटपुट फ़ाइल नहीं बनाई जा सकती।
किसी फ़ाइल को पढ़ते या लिखते समय इनपुट/आउटपुट त्रुटि।
अस्थायी विफलता: बाद में दोबारा कोशिश करना बेहतर है। मेल सर्वर इसका उपयोग संदेश को कतार में रखने के लिए करते हैं।
रिमोट सिस्टम ने ऐसा जवाब दिया जो प्रोटोकॉल का पालन नहीं करता।
ऑपरेशन के लिए अपर्याप्त अनुमतियाँ।
कॉन्फ़िगरेशन में त्रुटि है।
timeout कमांड ने इसे समाप्त कर दिया क्योंकि यह निर्धारित समय से अधिक चला।
कंटेनर चलाने से पहले ही docker run ख़ुद विफल हो गया, उदाहरण के लिए किसी गलत विकल्प या daemon की त्रुटि के कारण। GNU timeout भी इसे तब लौटाता है जब विफल होने वाला वह ख़ुद हो।
फ़ाइल मौजूद है, लेकिन चलाई नहीं जा सकती: उसमें execute अनुमति नहीं है, वह एक डायरेक्टरी है, या किसी दूसरे आर्किटेक्चर का बाइनरी है। Docker में, कंटेनर की कमांड एक्ज़ीक्यूटेबल नहीं है।
कमांड नहीं मिली: वह इंस्टॉल नहीं है, PATH में नहीं है, या उसका नाम गलत लिखा है। स्क्रिप्ट में यह तब भी आता है जब #! पंक्ति का इंटरप्रेटर मौजूद न हो; Docker में, जब कंटेनर की कमांड इमेज में मौजूद न हो।
128 से बड़े कोड बताते हैं कि किसी सिग्नल ने प्रोसेस समाप्त किया, लेकिन 128 किसी सिग्नल से मेल नहीं खाता। Git इसे अपनी सभी घातक त्रुटियों («fatal: …») के लिए उपयोग करता है, जैसे ऐसा रिपॉज़िटरी जो मौजूद नहीं है या क्लोन करते समय प्रमाणीकरण विफलता।
निकास कोड सीमा से बाहर चला गया: exit -1 का परिणाम 255 आता है, क्योंकि केवल 8 बिट रखे जाते हैं। ssh भी इसे तब लौटाता है जब कनेक्शन या प्रमाणीकरण विफल हो, ताकि इसे रिमोट कमांड के कोड से अलग पहचाना जा सके।
Linux के मान x86, x86-64 और ARM के हैं; Alpha, MIPS, SPARC और PA-RISC कुछ errno और सिग्नल को अलग संख्याएँ देते हैं। अंग्रेज़ी संदेश वे हैं जो glibc में strerror और strsignal दिखाते हैं, और जहाँ अलग हों वहाँ macOS वाले। 128 से बड़े निकास कोड को 128 जमा सिग्नल की संख्या माना जाता है, जो bash, Docker और Kubernetes की परिपाटी है।
यह कैसे काम करता है
जब Linux में कोई सिस्टम कॉल विफल होती है, तो वह -1 लौटाती है और errno वेरिएबल में एक संख्या रखती है जो कारण बताती है: 2 है ENOENT, फ़ाइल मौजूद नहीं; 13 है EACCES, अनुमति अस्वीकृत। strerror उस संख्या को स्क्रीन पर दिखने वाले टेक्स्ट में बदलता है, जैसे «No such file or directory»। Python इसे [Errno 13] के रूप में दिखाता है, Node.js code: 'ECONNREFUSED' के रूप में, और Go, Rust या Java उसी टेक्स्ट के साथ। 1 से 34 तक की संख्याएँ मूल Unix से आई हैं और सभी सिस्टम में समान हैं; उसके बाद की संख्याएँ हर सिस्टम ने अपने ढंग से तय कीं, इसलिए ECONNREFUSED Linux में 111 है और macOS में 61। नाम पोर्टेबल है; संख्या नहीं।
सिग्नल वे सूचनाएँ हैं जो कर्नेल या कोई दूसरा प्रोसेस किसी प्रोसेस को भेजता है: Ctrl+C दबाने पर SIGINT, समाप्त होने का अनुरोध करने के लिए SIGTERM, बिना पूछे समाप्त करने के लिए SIGKILL, और अमान्य मेमोरी तक पहुँचने पर SIGSEGV। हर सिग्नल की एक डिफ़ॉल्ट क्रिया होती है, और लगभग सभी को कुछ और करने के लिए कैप्चर किया जा सकता है। जब कोई सिग्नल किसी प्रोसेस को मार देता है, तो shell निकास कोड के रूप में 128 जमा सिग्नल की संख्या बताता है: 137 है SIGKILL (9), 139 है SIGSEGV (11) और 143 है SIGTERM (15)। Docker और Kubernetes भी यही परिपाटी अपनाते हैं।
निकास कोड वह संख्या है जो कोई प्रोग्राम समाप्त होने पर छोड़ता है: 0 का अर्थ सफलता है और कोई भी अन्य मान त्रुटि। केवल 8 बिट रखे जाते हैं, इसलिए यह 0 से 255 तक होता है। परिपाटियाँ कम हैं: 126 और 127 का उपयोग shell तब करता है जब वह कमांड चला नहीं पाता या ढूँढ नहीं पाता, 64 से 78 तक BSD का sysexits.h परिभाषित करता है, और बाक़ी हर प्रोग्राम तय करता है, जैसे grep, जो कुछ न मिलने पर 1 लौटाता है।
उदाहरण
Last State: Terminated · Reason: OOMKilled · Exit Code: 137137 = 128 + 9 · SIGKILLकंटेनर ने अपनी मेमोरी सीमा पार कर ली और कर्नेल ने उसे SIGKILL से मार दिया। resources.limits.memory में सीमा बढ़ानी होगी या पता लगाना होगा कि प्रोसेस इतनी मेमोरी क्यों ले रहा है; उसे रीस्टार्ट करने से समस्या हल नहीं होती।Error: connect ECONNREFUSED 127.0.0.1:5432ECONNREFUSED · Linux 111 · macOS 61 · Connection refusedNode.js PostgreSQL से कनेक्ट नहीं हो सका क्योंकि पोर्ट 5432 पर कोई नहीं सुन रहा। अगर ऐप्लिकेशन किसी कंटेनर में चल रहा है, तो 127.0.0.1 ख़ुद कंटेनर है, होस्ट मशीन नहीं: डेटाबेस सेवा के नाम का उपयोग करना होगा।OSError: [Errno 48] Address already in useEADDRINUSE · Linux 98 · macOS 4848 से पता चलता है कि प्रोग्राम macOS पर चल रहा है: Linux में यही त्रुटि 98 है। दोनों ही मामलों में कोई दूसरा प्रोसेस पहले से पोर्ट का उपयोग कर रहा है; lsof -i :पोर्ट बताता है कि कौन सा।उपयोग के मामले
- Python, Node.js, Go या C के किसी ऐप्लिकेशन की ऐसी त्रुटि समझना जो केवल errno की संख्या या नाम दिखाती है।
- निकास कोड से पता लगाना कि कोई Docker कंटेनर क्यों बंद हुआ या कोई Kubernetes pod बार-बार रीस्टार्ट क्यों हो रहा है।
- macOS की errno संख्या को सही नाम में बदलना, जो 35 से आगे Linux से मेल नहीं खाती।
- विफल हुई किसी स्क्रिप्ट, cron या CI job के निकास कोड की व्याख्या करना।
- तय करना कि kill से कौन सा सिग्नल भेजा जाए और जानना कि अगर प्रोसेस उसे कैप्चर न करे तो वह क्या करता है।
- पोर्टेबल त्रुटि प्रबंधन लिखना जो संख्या के बजाय नाम से तुलना करे।
अक्सर पूछे जाने वाले प्रश्न
exit code 137 का क्या अर्थ है?
इसका अर्थ है कि प्रोसेस सिग्नल 9, SIGKILL (128 + 9) से समाप्त हुआ। सबसे आम कारण मेमोरी है: कंटेनर ने अपनी सीमा पार कर ली, जिसे Kubernetes OOMKilled के रूप में बताता है, या कर्नेल के OOM killer ने उस प्रोसेस को चुना, जो dmesg में «Out of memory: Killed process» के रूप में दर्ज होता है। यह docker kill से भी होता है, या जब प्रोसेस SIGTERM के बाद तय समय में समाप्त नहीं होता: docker stop में 10 सेकंड और Kubernetes में 30।
SIGTERM और SIGKILL में क्या अंतर है?
SIGTERM प्रोसेस से समाप्त होने का अनुरोध करता है, और प्रोसेस इसे कैप्चर करके कनेक्शन बंद कर सकता है, डेटा सहेज सकता है और बाहर निकल सकता है। SIGKILL से कर्नेल प्रोसेस को तुरंत समाप्त कर देता है, और प्रोसेस कुछ नहीं कर पाता। सही तरीका है SIGTERM भेजना, कुछ सेकंड प्रतीक्षा करना और SIGKILL का सहारा केवल तभी लेना जब प्रोसेस अब भी चल रहा हो; systemd, docker stop और Kubernetes यही करते हैं।
macOS में उसी errno की संख्या अलग क्यों होती है?
क्योंकि POSIX नाम परिभाषित करता है, संख्याएँ नहीं। 1 से 34 तक सभी सिस्टम ने मूल Unix की संख्याएँ विरासत में लीं; उसके बाद BSD ने, जिससे macOS आया है, और System V ने, जिसका अनुसरण Linux ने किया, उन्हें अलग-अलग क्रमांकित किया। इसलिए हमेशा नाम से तुलना करना बेहतर है, Python में errno.ECONNREFUSED से, Node.js में err.code से या C में कॉन्स्टेंट से, संख्या से नहीं।
EACCES और EPERM में क्या अंतर है?
EACCES («Permission denied») का अर्थ है कि फ़ाइल की या पथ की किसी डायरेक्टरी की अनुमतियाँ इसकी इजाज़त नहीं देतीं, या कोई ACL या SELinux इसे रोकता है: इसे chmod, chown या संबंधित नीति से हल किया जाता है। EPERM («Operation not permitted») का अर्थ है कि ऑपरेशन को स्वयं विशेषाधिकार चाहिए, अनुमतियाँ चाहे जो हों, जैसे किसी फ़ाइल का स्वामी बदलना या किसी दूसरे उपयोगकर्ता का प्रोसेस मारना: इसके लिए root, कोई capability, या अपरिवर्तनीय जैसे किसी एट्रिब्यूट को हटाना ज़रूरी है।
किसी कमांड या कंटेनर का निकास कोड कैसे देखें?
bash और zsh में echo $? पिछली कमांड का कोड दिखाता है; PowerShell में $LASTEXITCODE। Docker में docker ps -a इसे STATUS कॉलम में दिखाता है, जैसे «Exited (137)»। Kubernetes में kubectl describe pod इसे «Last State: Terminated» में दिखाता है, कारण के साथ, जैसे OOMKilled या Error।