رموز أخطاء Linux
اعرف معنى errno مثل ECONNREFUSED أو «[Errno 13]»، أو إشارة مثل SIGKILL، أو رمز خروج مثل 137، مع قيم Linux وmacOS. الصق الرسالة كاملة من البرنامج أو من Docker أو Kubernetes وستستخرج الأداة الرمز منها.
أمثلة:

208 من 208 رمز

errnoأخطاء استدعاءات النظام151
EPERM
Linux 1macOS 1

Operation not permitted

يتطلب الإجراء امتيازات لا تملكها العملية، مثل تغيير مالك ملف أو إرسال إشارة إلى عملية تخص مستخدمًا آخر أو تعديل ملف غير قابل للتغيير (chattr +i). بخلاف EACCES، لا يُحل بتغيير أذونات الملف: يلزم root أو الـ capability المناسبة.

ENOENT
Linux 2macOS 2

No such file or directory

الملف أو المجلد غير موجود. ويظهر أيضًا عندما يكون أحد المجلدات الوسيطة في المسار مفقودًا، أو عندما يشير رابط رمزي إلى هدف غير موجود، أو عندما لا يكون المفسر المذكور في سطر #! في السكربت مثبتًا.

ESRCH
Linux 3macOS 3

No such process

لا توجد أي عملية أو مجموعة عمليات أو خيط بهذا المعرّف؛ مثلًا عند تنفيذ kill على PID انتهت عمليته بالفعل.

EINTR
Linux 4macOS 4

Interrupted system call

قاطعت إشارةٌ استدعاء النظام قبل أن يكتمل. ليس خطأً حقيقيًا: يجب على البرنامج إعادة محاولة الاستدعاء، أو تثبيت معالج الإشارة مع SA_RESTART.

EIO
Linux 5macOS 5

Input/output error

خطأ إدخال/إخراج منخفض المستوى، عادةً عند القراءة من الجهاز أو الكتابة إليه. في الأقراص يدل غالبًا على قطاعات تالفة أو كابل معطوب: راجع dmesg وحالة SMART. ويظهر أيضًا عند الكتابة إلى طرفية أُغلقت بالفعل.

ENXIO
Linux 6macOS 6

No such device or address

macOS: Device not configured

الجهاز أو العنوان غير موجود: ملف الجهاز موجود لكن لا يوجد عتاد خلفه، أو فُتح FIFO للكتابة مع O_NONBLOCK دون أي قارئ.

E2BIG
Linux 7macOS 7

Argument list too long

قائمة الوسائط ومتغيرات البيئة الممررة إلى exec كبيرة جدًا. إنه الخطأ الشهير «Argument list too long» عند استخدام حرف بدل يتوسع إلى آلاف الملفات؛ استخدم find -exec أو xargs.

ENOEXEC
Linux 8macOS 8

Exec format error

ليس للملف تنسيق تنفيذي معروف: إما أنه ملف ثنائي لمعمارية أخرى، أو تالف، أو سكربت بلا سطر #!.

EBADF
Linux 9macOS 9

Bad file descriptor

واصف الملف غير صالح، أو أُغلق بالفعل، أو فُتح بوضع لا يسمح بالإجراء، مثل الكتابة في واصف مفتوح للقراءة فقط.

ECHILD
Linux 10macOS 10

No child processes

ليس للعملية أبناء تنتظرهم عبر wait أو waitpid، وغالبًا لأن SIGCHLD مُتجاهَلة فيُجمع الأبناء تلقائيًا.

EAGAIN
Linux 11macOS 35

Resource temporarily unavailable

المورد غير متاح حاليًا ويُستحسن إعادة المحاولة. في الإجراءات غير الحاجبة يعني أنه لا توجد بيانات أو مساحة بعد؛ وفي fork يعني أنه تم بلوغ حد العمليات أو الخيوط (ulimit -u أو pids.max في الـ cgroup).

القيمة نفسها:EWOULDBLOCK

ENOMEM
Linux 12macOS 12

Cannot allocate memory

لا توجد ذاكرة كافية للإجراء أو تم تجاوز أحد حدود ذاكرة العملية. في fork أو mmap قد يرجع ذلك إلى سياسة الـ overcommit أو حد الـ cgroup أو نقص مساحة العناوين.

EACCES
Linux 13macOS 13

Permission denied

رُفض الإذن بسبب أذونات الملف أو أحد مجلدات المسار (يلزم إذن التنفيذ في كل منها)، أو بسبب ACL، أو SELinux أو AppArmor، أو بسبب تركيب بالخيار noexec. وتعيده bind أيضًا عند استخدام منفذ أقل من 1024 دون امتيازات.

EFAULT
Linux 14macOS 14

Bad address

مُرِّر إلى استدعاء نظام مؤشرٌ إلى عنوان ذاكرة غير صالح. يدل على خلل (bug) في البرنامج.

ENOTBLK
Linux 15macOS 15

Block device required

يحتاج الإجراء إلى جهاز كتلي، مثل قرص، لكنه تلقى نوعًا آخر من الملفات؛ مثلًا عند تركيب ملف عادي دون -o loop.

EBUSY
Linux 16macOS 16

Device or resource busy

macOS: Device / Resource busy

الجهاز أو المورد قيد الاستخدام. يحدث عادةً عند إلغاء تركيب نظام ملفات فيه ملفات مفتوحة أو طرفية موجودة داخله؛ يُظهر lsof أو fuser العمليات التي تستخدمه.

EEXIST
Linux 17macOS 17

File exists

يوجد بالفعل ملف أو مجلد أو كائن آخر بهذا الاسم، مثلًا عند الإنشاء مع O_EXCL، أو استخدام mkdir دون -p، أو إنشاء رابط وجهته موجودة بالفعل.

EXDEV
Linux 18macOS 18

Invalid cross-device link

macOS: Cross-device link

لا يمكن إنشاء رابط صلب ولا إعادة تسمية ملف بين نظامي ملفات مختلفين. يحل mv ذلك بالنسخ ثم الحذف؛ وعلى البرامج التي تستخدم rename() أن تفعل الشيء نفسه.

ENODEV
Linux 19macOS 19

No such device

macOS: Operation not supported by device

الجهاز غير موجود أو لا يدعم الإجراء؛ مثلًا عند تركيب نوع نظام ملفات لم تُحمَّل وحدة النواة الخاصة به.

ENOTDIR
Linux 20macOS 20

Not a directory

أحد مكونات المسار الذي يُفترض أن يكون مجلدًا هو ملف، أو طُلب مجلد (O_DIRECTORY) وهو ليس كذلك.

EISDIR
Linux 21macOS 21

Is a directory

جرت محاولة تنفيذ إجراء خاص بالملفات على مجلد، مثل فتحه للكتابة.

EINVAL
Linux 22macOS 22

Invalid argument

إحدى الوسائط غير صالحة للاستدعاء: قيمة خارج النطاق، أو مجموعة خيارات غير متوافقة، أو إجراء لا يدعمه الكائن. إنه خطأ عام: صفحة man الخاصة بالاستدعاء تسرد الحالات المحددة.

ENFILE
Linux 23macOS 23

Too many open files in system

امتلأ جدول الملفات المفتوحة على مستوى النظام بأكمله. يُضبط الحد عبر fs.file-max في sysctl.

EMFILE
Linux 24macOS 24

Too many open files

بلغت العملية حدها من الواصفات المفتوحة («Too many open files»). ارفع الحد باستخدام ulimit -n أو LimitNOFILE في systemd، وتحقق من أن البرنامج لا يترك ملفات أو مقابس (sockets) دون إغلاق.

ENOTTY
Linux 25macOS 25

Inappropriate ioctl for device

طُلب إجراء خاص بالطرفية (ioctl) على شيء ليس طرفية، مثلًا عند إعادة توجيه مخرجات برنامج تفاعلي إلى ملف أو إلى pipe.

ETXTBSY
Linux 26macOS 26

Text file busy

الملف التنفيذي قيد الاستخدام: لا يمكن الكتابة في ملف ثنائي أثناء تشغيله، ولا تشغيل ملف ما زال مفتوحًا للكتابة. لتحديثه، يُفضَّل كتابة ملف جديد ثم إعادة تسميته.

EFBIG
Linux 27macOS 27

File too large

يتجاوز الملف الحجم الأقصى الذي يدعمه نظام الملفات (4 GB في FAT32) أو حد RLIMIT_FSIZE للعملية.

ENOSPC
Linux 28macOS 28

No space left on device

لم تبقَ مساحة على الجهاز. إذا أظهر df مساحة حرة، فتحقق من الـ inodes باستخدام df -i. وتعيده inotify أيضًا عند استنفاد fs.inotify.max_user_watches.

ESPIPE
Linux 29macOS 29

Illegal seek

لا يمكن تنفيذ lseek على pipe أو FIFO أو socket، لأنها لا تملك موضعًا.

EROFS
Linux 30macOS 30

Read-only file system

نظام الملفات مركّب للقراءة فقط. إذا تحول إلى القراءة فقط دون أن يطلب أحد ذلك، فالنواة هي التي فعلت ذلك عند اكتشاف أخطاء: راجع dmesg وشغّل fsck.

EMLINK
Linux 31macOS 31

Too many links

تم تجاوز الحد الأقصى لعدد الروابط الصلبة لملف، أو لعدد المجلدات الفرعية في مجلد في بعض أنظمة الملفات.

EPIPE
Linux 32macOS 32

Broken pipe

جرت الكتابة في pipe أو socket أُغلق طرفه الآخر بالفعل («Broken pipe»). إضافة إلى الخطأ، تتلقى العملية SIGPIPE؛ وهذا طبيعي عندما ينتهي القارئ أولًا، كما في cmd | head.

EDOM
Linux 33macOS 33

Numerical argument out of domain

وسيطة دالة رياضية خارج مجالها، مثل الجذر التربيعي لعدد سالب.

ERANGE
Linux 34macOS 34

Numerical result out of range

macOS: Result too large

نتيجة الدالة أكبر أو أصغر من أن تُمثَّل، أو المخزن المؤقت لا يتسع للنتيجة، كما في getcwd مع مخزن مؤقت قصير.

EDEADLK
Linux 35macOS 11

Resource deadlock avoided

تم تجنب جمود (deadlock): القفل المطلوب، مثل قفل ملف عبر fcntl أو mutex مع كشف الأخطاء، كان سيبقى في الانتظار إلى الأبد.

القيمة نفسها:EDEADLOCK

ENAMETOOLONG
Linux 36macOS 63

File name too long

يتجاوز المسار أو أحد مكوناته الطول الأقصى: في Linux عمومًا 255 بايت للاسم و4096 للمسار.

ENOLCK
Linux 37macOS 77

No locks available

لا تتوفر أقفال. في NFS يدل غالبًا على أن خدمة القفل (lockd أو rpc.statd) لا تعمل.

ENOSYS
Linux 38macOS 78

Function not implemented

استدعاء النظام غير موجود في هذه النواة أو غير مُنفَّذ. يحدث عادةً مع ملفات ثنائية مُصرَّفة لنواة أحدث، أو مع ملفات تعريف seccomp في الحاويات التي لا تعرف الاستدعاءات الحديثة.

ENOTEMPTY
Linux 39macOS 66

Directory not empty

المجلد ليس فارغًا، مثلًا عند استخدام rmdir أو عند إعادة التسمية فوق مجلد موجود. لحذفه مع محتواه، استخدم rm -r.

ELOOP
Linux 40macOS 62

Too many levels of symbolic links

توجد روابط رمزية متسلسلة كثيرة جدًا عند حل المسار، عادةً بسبب حلقة، أو استُخدم O_NOFOLLOW على رابط رمزي.

ENOMSG
Linux 42macOS 91

No message of desired type

لا توجد أي رسالة من النوع المطلوب في طابور رسائل System V.

EIDRM
Linux 43macOS 90

Identifier removed

حُذف معرّف IPC الخاص بـ System V (طابور أو سيمافور أو ذاكرة مشتركة) أثناء استخدام العملية له.

ECHRNG
Linux 44macOS —

Channel number out of range

رقم القناة خارج النطاق. رمز موروث بلا استخدام عملي في Linux.

EL2NSYNC
Linux 45macOS —

Level 2 not synchronized

المستوى 2 غير متزامن. رمز موروث من System V بلا استخدام عملي في Linux.

EL3HLT
Linux 46macOS —

Level 3 halted

المستوى 3 متوقف. رمز موروث من System V بلا استخدام عملي في Linux.

EL3RST
Linux 47macOS —

Level 3 reset

أُعيد تعيين المستوى 3. رمز موروث من System V بلا استخدام عملي في Linux.

ELNRNG
Linux 48macOS —

Link number out of range

رقم الرابط خارج النطاق. رمز موروث بلا استخدام عملي في Linux.

EUNATCH
Linux 49macOS —

Protocol driver not attached

برنامج تشغيل البروتوكول غير متصل. تستخدمه أنظمة فرعية قليلة، مثل بعض برامج تشغيل Bluetooth.

ENOCSI
Linux 50macOS —

No CSI structure available

لا تتوفر أي بنية CSI. رمز موروث بلا استخدام عملي في Linux.

EL2HLT
Linux 51macOS —

Level 2 halted

المستوى 2 متوقف. رمز موروث من System V بلا استخدام عملي في Linux.

EBADE
Linux 52macOS —

Invalid exchange

تبادل غير صالح. رمز موروث تعيد بعض برامج التشغيل وأنظمة الملفات استخدامه بمعنى خاص بها.

EBADR
Linux 53macOS —

Invalid request descriptor

واصف طلب غير صالح. رمز موروث تعيد بعض برامج التشغيل استخدامه بمعنى خاص بها.

EXFULL
Linux 54macOS —

Exchange full

التبادل ممتلئ. رمز موروث بلا استخدام عملي في Linux.

ENOANO
Linux 55macOS —

No anode

لا يوجد أي «anode». رمز موروث بلا استخدام عملي في Linux.

EBADRQC
Linux 56macOS —

Invalid request code

رمز طلب غير صالح. رمز موروث؛ تستخدمه بعض برامج التشغيل للأوامر التي لا تدعمها.

EBADSLT
Linux 57macOS —

Invalid slot

فتحة (slot) غير صالحة. رمز موروث بلا استخدام عملي في Linux.

EBFONT
Linux 59macOS —

Bad font file format

تنسيق ملف الخط غير صحيح. رمز موروث بلا استخدام عملي في Linux.

ENOSTR
Linux 60macOS 99

Device not a stream

macOS: Not a STREAM

الجهاز ليس STREAM. ينتمي إلى واجهة STREAMS في System V، التي لا يطبقها Linux.

ENODATA
Linux 61macOS 96

No data available

macOS: No message available on STREAM

لا توجد بيانات متاحة. في Linux تعيده getxattr عندما لا تكون السمة الموسعة موجودة؛ وفي macOS تقابل هذه الحالة ENOATTR.

ETIME
Linux 62macOS 101

Timer expired

macOS: STREAM ioctl timeout

انتهى مؤقِّت. مصدره STREAMS؛ وفي Linux تستخدمه بعض برامج التشغيل وio_uring للعمليات ذات المهلة الزمنية.

ENOSR
Linux 63macOS 98

Out of streams resources

macOS: No STREAM resources

نفدت موارد STREAMS، وهي واجهة لا يطبقها Linux.

ENONET
Linux 64macOS —

Machine is not on the network

الحاسوب ليس على الشبكة. رمز موروث قليل الاستخدام.

ENOPKG
Linux 65macOS —

Package not installed

الحزمة غير مثبتة. رمز موروث؛ تستخدمه بعض الأنظمة الفرعية عند غياب وحدة، مثل وحدة تشفير.

EREMOTE
Linux 66macOS 71

Object is remote

macOS: Too many levels of remote in path

الكائن بعيد. في NFS يشير إلى مسار يُصدَّر من خادم آخر.

ENOLINK
Linux 67macOS 97

Link has been severed

انقطع الرابط. رمز موروث؛ تستخدمه بعض برامج التشغيل عند فقدان الاتصال بالجهاز.

EADV
Linux 68macOS —

Advertise error

خطأ «advertise». رمز موروث من RFS بلا استخدام في Linux.

ESRMNT
Linux 69macOS —

Srmount error

خطأ «srmount». رمز موروث من RFS بلا استخدام في Linux.

ECOMM
Linux 70macOS —

Communication error on send

خطأ اتصال أثناء الإرسال. رمز موروث؛ تستخدمه بعض برامج تشغيل الشبكة وUSB.

EPROTO
Linux 71macOS 100

Protocol error

خطأ في البروتوكول: أجاب الطرف الآخر أو الجهاز بشيء غير متوقع. يظهر مع أجهزة USB وفي الاتصالات التي تنقطع في منتصف تبادل.

EMULTIHOP
Linux 72macOS 95

Multihop attempted

جرت محاولة قفزة متعددة (multihop). رمز موروث من RFS.

EDOTDOT
Linux 73macOS —

RFS specific error

خطأ خاص بـ RFS. بلا استخدام في Linux.

EBADMSG
Linux 74macOS 94

Bad message

الرسالة مشوهة أو تالفة. تعيده ext4 وXFS وBtrfs، بالاسم البديل EFSBADCRC، عندما يفشل المجموع الاختباري للبيانات الوصفية.

القيمة نفسها:EFSBADCRC

EOVERFLOW
Linux 75macOS 84

Value too large for defined data type

macOS: Value too large to be stored in data type

القيمة لا تتسع في نوع البيانات الهدف؛ مثلًا برنامج 32 بت مُصرَّف دون دعم الملفات الكبيرة يفتح ملفًا أكبر من 2 GB.

ENOTUNIQ
Linux 76macOS —

Name not unique on network

الاسم ليس فريدًا على الشبكة. رمز موروث.

EBADFD
Linux 77macOS —

File descriptor in bad state

واصف الملف في حالة غير صحيحة. تستخدمه ALSA وبعض برامج التشغيل عندما لا يكون الجهاز جاهزًا.

EREMCHG
Linux 78macOS —

Remote address changed

تغيّر العنوان البعيد. رمز موروث.

ELIBACC
Linux 79macOS —

Can not access a needed shared library

لا يمكن الوصول إلى مكتبة مشتركة مطلوبة. رمز موروث من ملفات a.out الثنائية.

ELIBBAD
Linux 80macOS —

Accessing a corrupted shared library

المكتبة المشتركة تالفة. رمز موروث من ملفات a.out الثنائية.

ELIBSCN
Linux 81macOS —

.lib section in a.out corrupted

القسم .lib في ملف a.out الثنائي تالف. رمز موروث.

ELIBMAX
Linux 82macOS —

Attempting to link in too many shared libraries

جرت محاولة ربط عدد كبير جدًا من المكتبات المشتركة. رمز موروث من a.out.

ELIBEXEC
Linux 83macOS —

Cannot exec a shared library directly

لا يمكن تنفيذ مكتبة مشتركة مباشرة. رمز موروث من a.out.

EILSEQ
Linux 84macOS 92

Invalid or incomplete multibyte or wide character

macOS: Illegal byte sequence

تسلسل البايتات غير صالح لترميز الأحرف، مثل نص ليس UTF-8 صالحًا عند تحويله باستخدام iconv أو بالدوال متعددة البايتات.

ERESTART
Linux 85macOS —

Interrupted system call should be restarted

يجب إعادة تشغيل الاستدعاء المقاطَع. للاستخدام الداخلي في النواة ولا ينبغي أن يصل إلى البرامج.

ESTRPIPE
Linux 86macOS —

Streams pipe error

خطأ pipe في STREAMS. تعيده ALSA عندما يكون جهاز الصوت معلّقًا.

EUSERS
Linux 87macOS 68

Too many users

يوجد عدد كبير جدًا من المستخدمين. يعيده نظام حصص القرص عندما يمتلئ جدوله، وهو غير شائع.

ENOTSOCK
Linux 88macOS 38

Socket operation on non-socket

استُخدم إجراء socket على واصف ليس socket.

EDESTADDRREQ
Linux 89macOS 39

Destination address required

عنوان الوجهة مفقود: جرى الإرسال عبر socket غير متصل دون تحديد الوجهة.

EMSGSIZE
Linux 90macOS 40

Message too long

الرسالة كبيرة جدًا بالنسبة إلى الـ socket، مثل حزمة بيانات UDP أكبر من الحد الأقصى أو من الـ MTU عندما لا يُسمح بالتجزئة.

EPROTOTYPE
Linux 91macOS 41

Protocol wrong type for socket

البروتوكول لا يتوافق مع نوع الـ socket.

ENOPROTOOPT
Linux 92macOS 42

Protocol not available

خيار الـ socket أو البروتوكول المطلوب غير متاح، مثل خيار في setsockopt لا تعرفه النواة.

EPROTONOSUPPORT
Linux 93macOS 43

Protocol not supported

البروتوكول غير مدعوم، مثلًا لأن وحدة النواة الخاصة به غير محمّلة.

ESOCKTNOSUPPORT
Linux 94macOS 44

Socket type not supported

نوع الـ socket غير مدعوم في عائلة العناوين هذه.

EOPNOTSUPP
Linux 95macOS 102

Operation not supported

macOS: Operation not supported on socket

الإجراء غير مدعوم من الـ socket أو من الكائن. في Linux له القيمة نفسها التي لـ ENOTSUP، وتعيده أنظمة ملفات كثيرة للوظائف التي لا تطبقها، مثل fallocate أو السمات الموسعة.

ENOTSUP
Linux 95macOS 45

Operation not supported

الإجراء غير مدعوم. في Linux له القيمة نفسها التي لـ EOPNOTSUPP (95)؛ أما في macOS فهما رمزان مختلفان.

EPFNOSUPPORT
Linux 96macOS 46

Protocol family not supported

عائلة البروتوكولات غير مدعومة.

EAFNOSUPPORT
Linux 97macOS 47

Address family not supported by protocol

macOS: Address family not supported by protocol family

عائلة العناوين غير مدعومة؛ يحدث عادةً عند استخدام IPv6 في نظام أو حاوية عُطِّل فيها.

EADDRINUSE
Linux 98macOS 48

Address already in use

العنوان والمنفذ قيد الاستخدام بالفعل: عملية أخرى تستمع على هذا المنفذ، أو ما زال الاتصال السابق في حالة TIME_WAIT. ابحث عن العملية باستخدام ss -ltnp أو lsof -i :المنفذ، أو استخدم SO_REUSEADDR.

EADDRNOTAVAIL
Linux 99macOS 49

Cannot assign requested address

macOS: Can't assign requested address

لا يمكن تعيين العنوان المطلوب: عنوان IP لا ينتمي إلى أي واجهة في الجهاز، أو نفدت المنافذ المؤقتة للاتصالات الصادرة.

ENETDOWN
Linux 100macOS 50

Network is down

واجهة الشبكة معطلة.

ENETUNREACH
Linux 101macOS 51

Network is unreachable

لا يمكن الوصول إلى شبكة الوجهة لعدم وجود أي مسار إليها. راجع جدول التوجيه والبوابة؛ ويحدث أيضًا عند الاتصال عبر IPv6 دون اتصال IPv6.

ENETRESET
Linux 102macOS 52

Network dropped connection on reset

أعادت الشبكة تعيين الاتصال، مثلًا عند فشل keepalive.

ECONNABORTED
Linux 103macOS 53

Software caused connection abort

أُجهض الاتصال من الجانب المحلي، مثلًا لأن العميل أغلقه قبل أن يقبله الخادم عبر accept.

ECONNRESET
Linux 104macOS 54

Connection reset by peer

قطع الطرف الآخر الاتصال فجأة بحزمة RST («Connection reset by peer»): أُغلقت العملية البعيدة، أو قطع جدار حماية أو موازن أحمال الاتصال الخامل، أو أُرسلت بيانات لم يكن الطرف الآخر يتوقعها.

ENOBUFS
Linux 105macOS 55

No buffer space available

لا توجد مساحة مخزن مؤقت متاحة في النواة لعملية الشبكة؛ يظهر عادةً مع حركة مرور كثيفة أو امتلاء طوابير الـ sockets.

EISCONN
Linux 106macOS 56

Transport endpoint is already connected

macOS: Socket is already connected

الـ socket متصل بالفعل.

ENOTCONN
Linux 107macOS 57

Transport endpoint is not connected

macOS: Socket is not connected

الـ socket غير متصل: جرت محاولة الإرسال أو الاستقبال قبل الاتصال، أو أُغلق الاتصال بالفعل. في تركيب FUSE يظهر بالصيغة «Transport endpoint is not connected» عندما تموت عمليته؛ ويُصلح بإلغاء التركيب باستخدام fusermount -u.

ESHUTDOWN
Linux 108macOS 58

Cannot send after transport endpoint shutdown

macOS: Can't send after socket shutdown

لا يمكن الإرسال بعد إغلاق هذا الاتجاه من الـ socket باستخدام shutdown.

ETOOMANYREFS
Linux 109macOS 59

Too many references: cannot splice

macOS: Too many references: can't splice

توجد مراجع كثيرة جدًا؛ في Linux، عند تمرير عدد كبير جدًا من الواصفات المتداخلة عبر socket من نوع Unix.

ETIMEDOUT
Linux 110macOS 60

Connection timed out

macOS: Operation timed out

انتهت مهلة الاتصال لأن الوجهة لم تستجب. يرجع ذلك عادةً إلى جدار حماية يُسقط الحزم بصمت، أو مضيف مطفأ، أو مسار لا يصل.

ECONNREFUSED
Linux 111macOS 61

Connection refused

رفضت الوجهة الاتصال: الجهاز يستجيب، لكن لا أحد يستمع على ذلك المنفذ أو يرد جدار حماية بالرفض. تحقق من أن الخدمة تعمل وتستمع على الواجهة الصحيحة، وليس على 127.0.0.1 فقط.

EHOSTDOWN
Linux 112macOS 64

Host is down

المضيف الوجهة معطل.

EHOSTUNREACH
Linux 113macOS 65

No route to host

لا يوجد مسار إلى المضيف: لا يستجيب لـ ARP في الشبكة المحلية، أو يبلّغ موجّه أو جدار حماية بأنه غير قابل للوصول.

EALREADY
Linux 114macOS 37

Operation already in progress

هناك إجراء جارٍ بالفعل على الـ socket، مثل connect غير حاجب لم ينتهِ بعد.

EINPROGRESS
Linux 115macOS 36

Operation now in progress

الإجراء قيد التنفيذ: بدأ connect غير حاجب وسينتهي لاحقًا. ليس خطأً؛ يجب الانتظار باستخدام poll أو select.

ESTALE
Linux 116macOS 70

Stale file handle

macOS: Stale NFS file handle

أصبح معرّف الملف قديمًا: في NFS، حُذف الملف أو المجلد أو استُبدل على الخادم. يُحل بإعادة فتح المسار أو إعادة التركيب.

EUCLEAN
Linux 117macOS —

Structure needs cleaning

البنية تحتاج إلى تنظيف: اكتشف نظام الملفات تلفًا (في ext4 وXFS، بالاسم البديل EFSCORRUPTED). ألغِ تركيبه وشغّل fsck أو xfs_repair.

القيمة نفسها:EFSCORRUPTED

ENOTNAM
Linux 118macOS —

Not a XENIX named type file

ليس ملفًا مُسمّى من XENIX. رمز موروث بلا استخدام.

ENAVAIL
Linux 119macOS —

No XENIX semaphores available

لا تتوفر سيمافورات XENIX. رمز موروث بلا استخدام.

EISNAM
Linux 120macOS —

Is a named type file

إنه ملف مُسمّى من XENIX. رمز موروث بلا استخدام.

EREMOTEIO
Linux 121macOS —

Remote I/O error

خطأ إدخال/إخراج بعيد، مثلًا من جهاز I2C أو من قرص بعيد لم يستجب.

EDQUOT
Linux 122macOS 69

Disk quota exceeded

macOS: Disc quota exceeded

تم تجاوز حصة القرص للمستخدم أو المجموعة.

ENOMEDIUM
Linux 123macOS —

No medium found

لا يوجد أي وسيط في الجهاز، مثل محرك أقراص بلا قرص أو قارئ بطاقات فارغ.

EMEDIUMTYPE
Linux 124macOS —

Wrong medium type

نوع الوسيط غير صحيح.

ECANCELED
Linux 125macOS 89

Operation canceled

أُلغي الإجراء، مثل إدخال/إخراج غير متزامن أو انتظار في io_uring.

ENOKEY
Linux 126macOS —

Required key not available

المفتاح المطلوب غير موجود في keyring النواة. يظهر مع أنظمة الملفات المشفرة، مثل fscrypt أو eCryptfs، عندما لا يكون المفتاح محمّلًا.

EKEYEXPIRED
Linux 127macOS —

Key has expired

انتهت صلاحية المفتاح. ويستخدمه PAM وKerberos أيضًا عند انتهاء صلاحية كلمة المرور أو التذكرة.

EKEYREVOKED
Linux 128macOS —

Key has been revoked

أُبطل المفتاح.

EKEYREJECTED
Linux 129macOS —

Key was rejected by service

رفضت الخدمة المفتاح.

EOWNERDEAD
Linux 130macOS 105

Owner died

macOS: Previous owner died

مات مالك mutex متين (robust) دون تحريره. يجب على المالك الجديد إعادة الحالة المحمية إلى الاتساق واستدعاء pthread_mutex_consistent.

ENOTRECOVERABLE
Linux 131macOS 104

State not recoverable

لا يمكن استعادة الحالة المحمية بـ mutex متين، لأن المالك السابق مات ولم يعلّمها أحد على أنها متسقة.

ERFKILL
Linux 132macOS —

Operation not possible due to RF-kill

الإجراء غير ممكن لأن راديو Wi-Fi أو Bluetooth محظور بواسطة RF-kill. راجع rfkill list أو المفتاح الفعلي أو زر وضع الطيران.

EHWPOISON
Linux 133macOS —

Memory page has hardware error

صفحة الذاكرة بها خطأ عتادي وقد وسمتها النواة بأنها مسمومة.

EFTYPE
Linux 134macOS 79

Inappropriate file type or format

نوع الملف غير مناسب للإجراء. موجود في macOS وBSD منذ زمن طويل؛ وأُضيف إلى Linux مؤخرًا.

EPROCLIM
Linux —macOS 67

Too many processes

يوجد عدد كبير جدًا من العمليات. يعرّفه BSD لحد العمليات، رغم أن fork يعيد في الواقع EAGAIN.

EBADRPC
Linux —macOS 72

RPC struct is bad

بنية RPC غير صحيحة (Sun RPC، الذي يستخدمه NFS).

ERPCMISMATCH
Linux —macOS 73

RPC version wrong

إصدار RPC غير مطابق (Sun RPC، الذي يستخدمه NFS).

EPROGUNAVAIL
Linux —macOS 74

RPC program not available

macOS: RPC prog. not avail

برنامج RPC غير متاح على الخادم.

EPROGMISMATCH
Linux —macOS 75

RPC program version wrong

macOS: Program version wrong

إصدار برنامج RPC غير مطابق.

EPROCUNAVAIL
Linux —macOS 76

RPC bad procedure for program

macOS: Bad procedure for program

الإجراء غير موجود في برنامج RPC.

EAUTH
Linux —macOS 80

Authentication error

خطأ في المصادقة، مثلًا عند تركيب مورد NFS.

ENEEDAUTH
Linux —macOS 81

Need authenticator

يلزم مُصادِق لهذا الإجراء.

EPWROFF
Linux —macOS 82

Device power is off

الجهاز مطفأ.

EDEVERR
Linux —macOS 83

Device error, e.g. paper out

خطأ في الجهاز، مثل طابعة نفد منها الورق.

EBADEXEC
Linux —macOS 85

Bad executable

الملف التنفيذي غير صالح.

EBADARCH
Linux —macOS 86

Bad CPU type in executable

الملف التنفيذي مخصص لنوع آخر من المعالجات، مثل ملف ثنائي x86_64 فقط على Mac بمعالج Apple Silicon دون Rosetta 2، أو ملف ARM على Mac بمعالج Intel.

ESHLIBVERS
Linux —macOS 87

Shared library version mismatch

إصدار المكتبة المشتركة غير مطابق.

EBADMACHO
Linux —macOS 88

Malformed Macho file

ملف Mach-O مشوه أو تالف.

ENOATTR
Linux —macOS 93

Attribute not found

السمة الموسعة غير موجودة؛ يعادل ENODATA في Linux. يظهر مع xattr، مثلًا عند إزالة com.apple.quarantine من ملف لا يحملها.

ENOPOLICY
Linux —macOS 103

No such policy registered

لا توجد أي سياسة مسجلة بهذا الاسم في MAC Framework.

EQFULL
Linux —macOS 106

Interface output queue is full

طابور الإخراج في واجهة الشبكة ممتلئ.

ENOTCAPABLE
Linux —macOS 107

Capabilities insufficient

القدرات غير كافية: تعيده الاستدعاءات التي يقيّدها sandbox.

SIGالإشارات33
SIGHUP
Linux 1macOS 1

Hangup

أُغلقت الطرفية التي كانت تتحكم في العملية أو انقطعت جلسة SSH. تستخدمها خدمات خلفية كثيرة، مثل nginx أو sshd أو rsyslog، كطلب لإعادة قراءة الإعدادات؛ وتمنع nohup وtmux وscreen أن تُنهي هذه الإشارة العمليات عند الخروج.

تُنهي العملية
SIGINT
Linux 2macOS 2

Interrupt

مقاطعة من لوحة المفاتيح بالضغط على Ctrl+C. يمكن للبرنامج التقاطها لينتهي بشكل منظم. رمز الخروج 130.

تُنهي العملية
SIGQUIT
Linux 3macOS 3

Quit

خروج من لوحة المفاتيح بالضغط على Ctrl+\. تُنهي العملية مع تفريغ الذاكرة؛ أما JVM فتستخدمها بدلًا من ذلك لطباعة حالة الخيوط.

تُنهيها مع تفريغ الذاكرة
SIGILL
Linux 4macOS 4

Illegal instruction

صادف المعالج تعليمة غير مشروعة: ملف ثنائي مُصرَّف لمعالج أحدث (مثلًا مع AVX2 أو AVX-512 على معالج لا يدعمها)، أو كود تالف، أو قفزة إلى بيانات.

تُنهيها مع تفريغ الذاكرة
SIGTRAP
Linux 5macOS 5

Trace/breakpoint trap

مصيدة تصحيح: تستخدمها أدوات التصحيح لنقاط التوقف. إذا وصلت دون مصحح، فهي غالبًا عطل اكتشفه البرنامج نفسه، مثل فحوصات Swift في macOS.

تُنهيها مع تفريغ الذاكرة
SIGABRT
Linux 6macOS 6

Aborted

استدعت العملية abort(): تأكيد (assertion) فشل، أو استثناء C++ غير ملتقط، أو تلف في الـ heap اكتشفته مكتبة C («double free or corruption»). رمز الخروج 134.

تُنهيها مع تفريغ الذاكرة

القيمة نفسها:SIGIOT

SIGBUS
Linux 7macOS 10

Bus error

خطأ ناقل (bus error): وصول إلى ذاكرة غير محاذاة في بعض المعماريات، أو إلى جزء من ملف معيّن بـ mmap لم يعد موجودًا لأن الملف اقتُطع. ويحدث أيضًا عند امتلاء /dev/shm.

تُنهيها مع تفريغ الذاكرة
SIGFPE
Linux 8macOS 8

Floating point exception

استثناء حسابي. رغم الاسم، السبب الأكثر شيوعًا هو القسمة الصحيحة على صفر.

تُنهيها مع تفريغ الذاكرة
SIGKILL
Linux 9macOS 9

Killed

تُنهي العملية فورًا: لا يمكن التقاطها ولا حجبها ولا تجاهلها. يرسلها kill -9، وOOM killer في النواة عند نفاد الذاكرة، وDocker أو Kubernetes عندما تتجاوز حاوية حد ذاكرتها (OOMKilled) أو لا تنتهي في الوقت المحدد بعد SIGTERM. رمز الخروج 137.

تُنهي العمليةلا يمكن التقاطها
SIGUSR1
Linux 10macOS 30

User defined signal 1

إشارة حرة ليعطيها كل تطبيق استخدامه الخاص؛ مثلًا يعرض dd تقدمه ويعيد nginx فتح السجلات.

تُنهي العملية
SIGSEGV
Linux 11macOS 11

Segmentation fault

انتهاك تقسيم الذاكرة («Segmentation fault»): وصول إلى ذاكرة غير صالحة، مثل إلغاء مرجعية مؤشر فارغ، أو تجاوز حدود مصفوفة، أو تجاوز سعة المكدس بعودية لا نهائية. رمز الخروج 139.

تُنهيها مع تفريغ الذاكرة
SIGUSR2
Linux 12macOS 31

User defined signal 2

إشارة حرة ثانية ليعطيها كل تطبيق استخدامه الخاص.

تُنهي العملية
SIGPIPE
Linux 13macOS 13

Broken pipe

كتابة في pipe أو socket بلا قارئ. وهي طبيعية في cmd | head، حيث ينتهي القارئ أولًا؛ وعادةً ما تتجاهلها الخوادم وتعالج الخطأ EPIPE. رمز الخروج 141.

تُنهي العملية
SIGALRM
Linux 14macOS 14

Alarm clock

انتهى المؤقت المضبوط باستخدام alarm أو setitimer.

تُنهي العملية
SIGTERM
Linux 15macOS 15

Terminated

طلب إنهاء منظم. إنها الإشارة الافتراضية لـ kill وsystemctl stop وdocker stop ولـ Kubernetes عند حذف pod؛ ويجب على العملية إغلاق اتصالاتها والخروج. رمز الخروج 143.

تُنهي العملية
SIGSTKFLT
Linux 16macOS —

Stack fault

عطل في مكدس المعالج المساعد. غير مستخدمة في Linux الحالي.

تُنهي العملية
SIGCHLD
Linux 17macOS 20

Child exited

انتهت عملية ابن أو توقفت أو استأنفت. يجب على الأب جمعها باستخدام wait؛ وإن لم يفعل، تبقى العملية الابن عملية زومبي.

تُتجاهَل

القيمة نفسها:SIGCLD

SIGCONT
Linux 18macOS 19

Continued

تستأنف عملية متوقفة، كما يفعل fg وbg في الـ shell.

تستأنف العملية
SIGSTOP
Linux 19macOS 17

Stopped (signal)

توقف العملية؛ لا يمكن التقاطها ولا تجاهلها. تُستأنف باستخدام SIGCONT.

توقف العمليةلا يمكن التقاطها
SIGTSTP
Linux 20macOS 18

Stopped

إيقاف من الطرفية بالضغط على Ctrl+Z. بخلاف SIGSTOP، يمكن للبرنامج التقاطها.

توقف العملية
SIGTTIN
Linux 21macOS 21

Stopped (tty input)

حاولت عملية في الخلفية القراءة من الطرفية.

توقف العملية
SIGTTOU
Linux 22macOS 22

Stopped (tty output)

حاولت عملية في الخلفية الكتابة إلى الطرفية مع تفعيل stty tostop، أو تغيير إعداداتها.

توقف العملية
SIGURG
Linux 23macOS 16

Urgent I/O condition

وصلت بيانات عاجلة (خارج النطاق) إلى socket. تستخدمها Go داخليًا لمقاطعة goroutines.

تُتجاهَل
SIGXCPU
Linux 24macOS 24

CPU time limit exceeded

تم تجاوز حد وقت المعالج للعملية (ulimit -t).

تُنهيها مع تفريغ الذاكرة
SIGXFSZ
Linux 25macOS 25

File size limit exceeded

تم تجاوز الحد الأقصى لحجم الملف المسموح للعملية (ulimit -f).

تُنهيها مع تفريغ الذاكرة
SIGVTALRM
Linux 26macOS 26

Virtual timer expired

انتهى المؤقت الافتراضي، الذي يحسب وقت المعالج للعملية فقط.

تُنهي العملية
SIGPROF
Linux 27macOS 27

Profiling timer expired

انتهى مؤقت التحليل (profiling)، الذي تستخدمه أدوات الـ profiler.

تُنهي العملية
SIGWINCH
Linux 28macOS 28

Window changed

تغيّر حجم نافذة الطرفية؛ تستخدمها برامج ملء الشاشة لإعادة رسم نفسها.

تُتجاهَل
SIGIO
Linux 29macOS 23

input/output possible signal

يتوفر إدخال/إخراج على واصف مضبوط بـ O_ASYNC. في Linux، SIGPOLL هي الإشارة نفسها.

تُنهي العملية

القيمة نفسها:SIGPOLL

SIGPWR
Linux 30macOS —

Power failure

انقطاع الطاقة، الذي يبلّغ عنه برنامج UPS نظامَ init.

تُنهي العملية
SIGSYS
Linux 31macOS 12

Bad system call

استدعاء نظام غير صحيح. السبب المعتاد اليوم هو مرشح seccomp يحظره، كما في الحاويات.

تُنهيها مع تفريغ الذاكرة
SIGEMT
Linux —macOS 7

EMT trap

مصيدة محاكاة (EMT). موجودة في macOS وBSD، لكن ليس في Linux على x86 أو ARM.

تُنهيها مع تفريغ الذاكرة
SIGINFO
Linux —macOS 29

Information request

طلب معلومات بالضغط على Ctrl+T في طرفية macOS وBSD؛ تستجيب أوامر كثيرة بعرض تقدمها.

تُتجاهَل
$?رموز الخروج24
0EXIT_SUCCESS

انتهى الأمر بنجاح. إنه الرمز الوحيد الذي يعني النجاح: أي قيمة أخرى تدل على خطأ.

C
1EXIT_FAILURE

خطأ عام؛ كل برنامج يقرر معناه. تكون التفاصيل عادةً فيما كتبه الأمر في stderr. يستخدمه grep وdiff بمعنى آخر: «لم يُعثر على تطابقات» أو «الملفات مختلفة».

C
2Misuse of shell builtins

استخدام خاطئ لأمر مدمج في الـ shell أو خطأ في صياغة السكربت. تستخدمه برامج كثيرة أيضًا للخيارات غير الصالحة، ويستخدمه grep للأخطاء الحقيقية.

Bash
64EX_USAGE

استُخدم الأمر بشكل خاطئ: وسائط ناقصة أو زائدة أو خيار غير صحيح.

sysexits.h
65EX_DATAERR

بيانات الإدخال بتنسيق غير صحيح.

sysexits.h
66EX_NOINPUT

ملف إدخال غير موجود أو لا يمكن قراءته.

sysexits.h
67EX_NOUSER

المستخدم المحدد غير موجود؛ تستخدمه برامج البريد بشكل خاص.

sysexits.h
68EX_NOHOST

اسم المضيف غير موجود.

sysexits.h
69EX_UNAVAILABLE

خدمة مطلوبة غير متاحة، أو فشل شيء لا يندرج في فئة أخرى.

sysexits.h
70EX_SOFTWARE

خطأ داخلي في البرنامج.

sysexits.h
71EX_OSERR

خطأ في نظام التشغيل، مثل تعذر تنفيذ fork أو إنشاء pipe.

sysexits.h
72EX_OSFILE

ملف نظام مفقود، مثل /etc/passwd، أو به خطأ.

sysexits.h
73EX_CANTCREAT

لا يمكن إنشاء ملف إخراج.

sysexits.h
74EX_IOERR

خطأ إدخال/إخراج عند قراءة ملف أو الكتابة فيه.

sysexits.h
75EX_TEMPFAIL

فشل مؤقت: يُستحسن إعادة المحاولة لاحقًا. تستخدمه خوادم البريد لإبقاء الرسالة في الطابور.

sysexits.h
76EX_PROTOCOL

أجاب النظام البعيد بشيء لا يلتزم بالبروتوكول.

sysexits.h
77EX_NOPERM

أذونات غير كافية للإجراء.

sysexits.h
78EX_CONFIG

يوجد خطأ في الإعدادات.

sysexits.h
124Timed out

أنهاه الأمر timeout لأنه تجاوز الوقت المحدد.

GNU timeout
125Container failed to run

فشل docker run نفسه قبل تشغيل الحاوية، مثلًا بسبب خيار غير صحيح أو خطأ في الـ daemon. ويعيده GNU timeout أيضًا عندما يكون هو الذي فشل.

Docker
126Command invoked cannot execute

الملف موجود لكن لا يمكن تنفيذه: ينقصه إذن التنفيذ، أو هو مجلد، أو ملف ثنائي لمعمارية أخرى. في Docker، أمر الحاوية غير قابل للتنفيذ.

POSIX
127Command not found

لم يُعثر على الأمر: غير مثبت، أو ليس في PATH، أو اسمه مكتوب بشكل خاطئ. في السكربتات يظهر أيضًا عند غياب المفسر المذكور في سطر #!؛ وفي Docker، عندما لا يوجد أمر الحاوية في الصورة.

POSIX
128Fatal error

الرموز الأكبر من 128 تدل على أن إشارة أنهت العملية، لكن 128 لا يقابل أي إشارة. يستخدمه Git لكل أخطائه الفادحة («fatal: …»)، مثل مستودع غير موجود أو فشل المصادقة عند الاستنساخ.

Git
255Exit status out of range

رمز الخروج خارج النطاق: exit -1 يصل بالقيمة 255، لأنه لا يُحتفظ إلا بـ 8 بتات. ويعيده ssh أيضًا عند فشل الاتصال أو المصادقة، لتمييزه عن رمز الأمر البعيد.

POSIX

قيم Linux هي الخاصة بمعماريات x86 وx86-64 وARM؛ أما Alpha وMIPS وSPARC وPA-RISC فترقّم بعض قيم errno والإشارات بشكل مختلف. الرسائل الإنجليزية هي التي تعرضها strerror وstrsignal في glibc، وتلك التي يعرضها 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 هو 111 في Linux و61 في macOS. الاسم قابل للنقل؛ أما الرقم فلا.

الإشارات تنبيهات ترسلها النواة أو عملية أخرى إلى عملية ما: SIGINT عند الضغط على Ctrl+C، و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 يعرّفها sysexits.h في BSD، والباقي يقرره كل برنامج، مثل 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 refusedلم يتمكن Node.js من الاتصال بـ PostgreSQL لأن لا أحد يستمع على المنفذ 5432. إذا كان التطبيق يعمل في حاوية، فإن 127.0.0.1 هو الحاوية نفسها وليس الجهاز المضيف: يجب استخدام اسم خدمة قاعدة البيانات.
OSError: [Errno 48] Address already in useEADDRINUSE · Linux 98 · macOS 48الرقم 48 يكشف أن البرنامج يعمل على macOS: في Linux الخطأ نفسه هو 98. وفي الحالتين تستخدم عملية أخرى المنفذ بالفعل؛ ويُظهر lsof -i :المنفذ أي عملية هي.

حالات الاستخدام

  • فهم خطأ في تطبيق مكتوب بـ Python أو Node.js أو Go أو C لا يعرض إلا رقم errno أو اسمه.
  • معرفة سبب إغلاق حاوية Docker أو إعادة تشغيل pod في Kubernetes انطلاقًا من رمز الخروج.
  • تحويل رقم errno في macOS إلى الاسم الصحيح، إذ لا يتطابق مع رقم Linux بدءًا من 35.
  • تفسير رمز الخروج لسكربت أو مهمة cron أو مهمة CI فشلت.
  • اختيار الإشارة التي تُرسل باستخدام kill ومعرفة ما تفعله العملية إن لم تلتقطها.
  • كتابة معالجة أخطاء قابلة للنقل تقارن بالاسم بدلًا من الرقم.

الأسئلة الشائعة

ما معنى رمز الخروج (exit code) 137؟

يعني أن العملية انتهت بالإشارة 9، أي SIGKILL (128 + 9). السبب الأكثر شيوعًا هو الذاكرة: تجاوزت الحاوية حدها، ويبلّغ Kubernetes عن ذلك بـ OOMKilled، أو اختار OOM killer في النواة تلك العملية، وهو ما يُسجَّل في dmesg بالصيغة «Out of memory: Killed process». ويحدث أيضًا مع docker kill، أو عندما لا تنتهي العملية خلال المهلة بعد SIGTERM: 10 ثوانٍ في docker stop و30 في Kubernetes.

ما الفرق بين SIGTERM وSIGKILL؟

تطلب SIGTERM من العملية أن تنتهي، ويمكن للعملية التقاطها لإغلاق الاتصالات وحفظ البيانات والخروج. أما SIGKILL فتُنهي النواة بها العملية فورًا، دون أن تتمكن العملية من فعل أي شيء. الصواب هو إرسال SIGTERM، والانتظار بضع ثوانٍ، واللجوء إلى SIGKILL فقط إذا بقيت حية، وهذا ما يفعله systemd وdocker stop وKubernetes.

لماذا يحمل errno نفسه رقمًا مختلفًا في macOS؟

لأن POSIX يعرّف الأسماء لا الأرقام. من 1 إلى 34 ورثت كل الأنظمة أرقام Unix الأصلي؛ بعد ذلك رقّمها BSD، الذي انبثق منه macOS، وSystem V، الذي اتبعه Linux، كلٌّ على حدة. لذلك يُستحسن المقارنة دائمًا بالاسم، باستخدام errno.ECONNREFUSED في Python أو err.code في Node.js أو الثابت في 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.