Codes d'erreur Linux
Découvrez la signification d'un errno comme ECONNREFUSED ou « [Errno 13] », d'un signal comme SIGKILL ou d'un code de sortie comme 137, avec les valeurs de Linux et de macOS. Collez le message complet du programme, de Docker ou de Kubernetes et l'outil en extrait le code.
Exemples :

208 codes sur 208

errnoErreurs des appels système151
EPERM
Linux 1macOS 1

Operation not permitted

L'opération exige des privilèges que le processus n'a pas, comme changer le propriétaire d'un fichier, envoyer un signal à un processus d'un autre utilisateur ou modifier un fichier immuable (chattr +i). Contrairement à EACCES, cela ne se résout pas en changeant les permissions du fichier : il faut être root ou disposer de la capability correspondante.

ENOENT
Linux 2macOS 2

No such file or directory

Le fichier ou le répertoire n'existe pas. Apparaît aussi lorsqu'il manque un répertoire intermédiaire du chemin, lorsqu'un lien symbolique pointe vers une cible qui n'existe pas ou lorsque l'interpréteur de la ligne #! d'un script n'est pas installé.

ESRCH
Linux 3macOS 3

No such process

Il n'existe aucun processus, groupe de processus ou thread avec cet identifiant ; par exemple, lors d'un kill sur un PID déjà terminé.

EINTR
Linux 4macOS 4

Interrupted system call

Un signal a interrompu l'appel système avant qu'il ne se termine. Ce n'est pas une vraie erreur : le programme doit relancer l'appel, ou installer le gestionnaire du signal avec SA_RESTART.

EIO
Linux 5macOS 5

Input/output error

Erreur d'entrée/sortie de bas niveau, en général lors de la lecture ou de l'écriture sur le périphérique. Sur les disques, elle indique souvent des secteurs défectueux ou un câble défaillant : vérifiez dmesg et l'état SMART. Apparaît aussi lors de l'écriture sur un terminal déjà fermé.

ENXIO
Linux 6macOS 6

No such device or address

macOS: Device not configured

Le périphérique ou l'adresse n'existe pas : le fichier de périphérique est présent, mais aucun matériel ne se trouve derrière, ou un FIFO a été ouvert en écriture avec O_NONBLOCK sans aucun lecteur.

E2BIG
Linux 7macOS 7

Argument list too long

La liste des arguments et des variables d'environnement passée à exec est trop grande. C'est le classique « Argument list too long » lorsqu'on utilise un joker qui s'étend à des milliers de fichiers ; utilisez find -exec ou xargs.

ENOEXEC
Linux 8macOS 8

Exec format error

Le fichier n'a pas de format exécutable reconnu : c'est un binaire d'une autre architecture, il est endommagé ou c'est un script sans ligne #!.

EBADF
Linux 9macOS 9

Bad file descriptor

Le descripteur de fichier n'est pas valide, a déjà été fermé ou a été ouvert dans un mode qui ne permet pas l'opération, comme écrire dans un descripteur ouvert en lecture seule.

ECHILD
Linux 10macOS 10

No child processes

Le processus n'a aucun enfant à attendre avec wait ou waitpid, souvent parce que SIGCHLD est ignoré et que les enfants sont récupérés automatiquement.

EAGAIN
Linux 11macOS 35

Resource temporarily unavailable

La ressource n'est pas disponible pour le moment et il vaut mieux réessayer. Dans les opérations non bloquantes, cela signifie qu'il n'y a pas encore de données ou d'espace ; avec fork, que la limite de processus ou de threads a été atteinte (ulimit -u ou pids.max du cgroup).

Même valeur :EWOULDBLOCK

ENOMEM
Linux 12macOS 12

Cannot allocate memory

Il n'y a pas assez de mémoire pour l'opération ou une limite de mémoire du processus a été dépassée. Avec fork ou mmap, cela peut venir de la politique d'overcommit, de la limite du cgroup ou du manque d'espace d'adressage.

EACCES
Linux 13macOS 13

Permission denied

Permission refusée par les permissions du fichier ou d'un répertoire du chemin (il faut la permission d'exécution sur chacun), par une ACL, par SELinux ou AppArmor, ou par un montage avec noexec. bind le renvoie aussi lorsqu'on utilise un port inférieur à 1024 sans privilèges.

EFAULT
Linux 14macOS 14

Bad address

Un pointeur vers une adresse mémoire non valide a été passé à un appel système. Cela indique un bug dans le programme.

ENOTBLK
Linux 15macOS 15

Block device required

L'opération nécessite un périphérique bloc, comme un disque, et a reçu un autre type de fichier ; par exemple, lors du montage d'un fichier ordinaire sans -o loop.

EBUSY
Linux 16macOS 16

Device or resource busy

macOS: Device / Resource busy

Le périphérique ou la ressource est occupé. C'est typique lors du démontage d'un système de fichiers qui a des fichiers ouverts ou un terminal positionné dessus ; lsof ou fuser montrent quels processus l'utilisent.

EEXIST
Linux 17macOS 17

File exists

Un fichier, un répertoire ou un autre objet portant ce nom existe déjà, par exemple lors d'une création avec O_EXCL, avec mkdir sans -p ou lors de la création d'un lien dont la cible existe déjà.

EXDEV
Linux 18macOS 18

Invalid cross-device link

macOS: Cross-device link

Impossible de créer un lien physique ou de renommer un fichier entre des systèmes de fichiers différents. mv le résout en copiant puis en supprimant ; les programmes qui utilisent rename() doivent faire de même.

ENODEV
Linux 19macOS 19

No such device

macOS: Operation not supported by device

Le périphérique n'existe pas ou ne prend pas en charge l'opération ; par exemple, lors du montage d'un type de système de fichiers dont le module du noyau n'est pas chargé.

ENOTDIR
Linux 20macOS 20

Not a directory

Un composant du chemin qui devrait être un répertoire est un fichier, ou un répertoire a été demandé (O_DIRECTORY) et ce n'en est pas un.

EISDIR
Linux 21macOS 21

Is a directory

Une opération de fichier a été tentée sur un répertoire, comme l'ouvrir en écriture.

EINVAL
Linux 22macOS 22

Invalid argument

Un argument n'est pas valide pour l'appel : une valeur hors limites, une combinaison d'options incompatible ou une opération que l'objet ne prend pas en charge. C'est générique : la page man de l'appel liste les cas concrets.

ENFILE
Linux 23macOS 23

Too many open files in system

La table des fichiers ouverts de tout le système est épuisée. La limite se règle avec fs.file-max dans sysctl.

EMFILE
Linux 24macOS 24

Too many open files

Le processus a atteint sa limite de descripteurs ouverts (« Too many open files »). Augmentez la limite avec ulimit -n ou avec LimitNOFILE dans systemd, et vérifiez que le programme ne laisse pas de fichiers ou de sockets ouverts.

ENOTTY
Linux 25macOS 25

Inappropriate ioctl for device

Une opération de terminal (ioctl) a été demandée sur quelque chose qui n'est pas un terminal, par exemple lorsque la sortie d'un programme interactif est redirigée vers un fichier ou un pipe.

ETXTBSY
Linux 26macOS 26

Text file busy

L'exécutable est en cours d'utilisation : on ne peut pas écrire dans un binaire pendant son exécution, ni exécuter un binaire encore ouvert en écriture. Pour le mettre à jour, il vaut mieux écrire un nouveau fichier et le renommer.

EFBIG
Linux 27macOS 27

File too large

Le fichier dépasse la taille maximale prise en charge par le système de fichiers (4 Go en FAT32) ou la limite RLIMIT_FSIZE du processus.

ENOSPC
Linux 28macOS 28

No space left on device

Il ne reste plus d'espace sur le périphérique. Si df affiche de l'espace libre, vérifiez les inodes avec df -i. inotify le renvoie aussi lorsque fs.inotify.max_user_watches est épuisé.

ESPIPE
Linux 29macOS 29

Illegal seek

Impossible de faire un lseek sur un pipe, un FIFO ou un socket, car ils n'ont pas de position.

EROFS
Linux 30macOS 30

Read-only file system

Le système de fichiers est monté en lecture seule. S'il est passé en lecture seule sans que personne ne l'ait demandé, c'est le noyau qui l'a fait en détectant des erreurs : vérifiez dmesg et lancez fsck.

EMLINK
Linux 31macOS 31

Too many links

Le nombre maximal de liens physiques vers un fichier a été dépassé, ou celui des sous-répertoires d'un répertoire dans certains systèmes de fichiers.

EPIPE
Linux 32macOS 32

Broken pipe

Écriture dans un pipe ou un socket dont l'autre extrémité est déjà fermée (« Broken pipe »). En plus de l'erreur, le processus reçoit SIGPIPE ; c'est normal lorsque le lecteur se termine avant, comme dans cmd | head.

EDOM
Linux 33macOS 33

Numerical argument out of domain

L'argument d'une fonction mathématique est hors de son domaine, comme la racine carrée d'un nombre négatif.

ERANGE
Linux 34macOS 34

Numerical result out of range

macOS: Result too large

Le résultat d'une fonction est trop grand ou trop petit pour être représenté, ou un tampon est insuffisant pour le résultat, comme avec getcwd et un tampon trop court.

EDEADLK
Linux 35macOS 11

Resource deadlock avoided

Un interblocage a été évité : le verrou demandé, comme un verrou de fichier avec fcntl ou un mutex avec détection d'erreurs, aurait attendu indéfiniment.

Même valeur :EDEADLOCK

ENAMETOOLONG
Linux 36macOS 63

File name too long

Le chemin ou l'un de ses composants dépasse la longueur maximale : sous Linux, en général, 255 octets par nom et 4096 par chemin.

ENOLCK
Linux 37macOS 77

No locks available

Aucun verrou disponible. Sur NFS, cela indique souvent que le service de verrouillage (lockd ou rpc.statd) ne fonctionne pas.

ENOSYS
Linux 38macOS 78

Function not implemented

L'appel système n'existe pas dans ce noyau ou n'est pas implémenté. C'est typique des binaires compilés pour un noyau plus récent, ou des profils seccomp de conteneurs qui ne connaissent pas les appels récents.

ENOTEMPTY
Linux 39macOS 66

Directory not empty

Le répertoire n'est pas vide, par exemple avec rmdir ou lors d'un renommage par-dessus un répertoire existant. Pour le supprimer avec son contenu, utilisez rm -r.

ELOOP
Linux 40macOS 62

Too many levels of symbolic links

Trop de liens symboliques enchaînés lors de la résolution du chemin, généralement à cause d'une boucle, ou O_NOFOLLOW a été utilisé sur un lien symbolique.

ENOMSG
Linux 42macOS 91

No message of desired type

Aucun message du type demandé dans la file de messages System V.

EIDRM
Linux 43macOS 90

Identifier removed

L'identifiant IPC System V (file, sémaphore ou mémoire partagée) a été supprimé pendant que le processus l'utilisait.

ECHRNG
Linux 44macOS —

Channel number out of range

Numéro de canal hors limites. C'est un code hérité sans usage pratique sous Linux.

EL2NSYNC
Linux 45macOS —

Level 2 not synchronized

Niveau 2 non synchronisé. C'est un code hérité de System V sans usage pratique sous Linux.

EL3HLT
Linux 46macOS —

Level 3 halted

Niveau 3 arrêté. C'est un code hérité de System V sans usage pratique sous Linux.

EL3RST
Linux 47macOS —

Level 3 reset

Niveau 3 réinitialisé. C'est un code hérité de System V sans usage pratique sous Linux.

ELNRNG
Linux 48macOS —

Link number out of range

Numéro de lien hors limites. C'est un code hérité sans usage pratique sous Linux.

EUNATCH
Linux 49macOS —

Protocol driver not attached

Le pilote du protocole n'est pas attaché. Peu de sous-systèmes l'utilisent, comme certains pilotes Bluetooth.

ENOCSI
Linux 50macOS —

No CSI structure available

Aucune structure CSI disponible. C'est un code hérité sans usage pratique sous Linux.

EL2HLT
Linux 51macOS —

Level 2 halted

Niveau 2 arrêté. C'est un code hérité de System V sans usage pratique sous Linux.

EBADE
Linux 52macOS —

Invalid exchange

Échange non valide. C'est un code hérité que certains pilotes et systèmes de fichiers réutilisent avec un sens propre.

EBADR
Linux 53macOS —

Invalid request descriptor

Descripteur de requête non valide. C'est un code hérité que certains pilotes réutilisent avec un sens propre.

EXFULL
Linux 54macOS —

Exchange full

Échange plein. C'est un code hérité sans usage pratique sous Linux.

ENOANO
Linux 55macOS —

No anode

Aucun « anode ». C'est un code hérité sans usage pratique sous Linux.

EBADRQC
Linux 56macOS —

Invalid request code

Code de requête non valide. C'est un code hérité ; certains pilotes l'utilisent pour les commandes qu'ils ne prennent pas en charge.

EBADSLT
Linux 57macOS —

Invalid slot

Slot non valide. C'est un code hérité sans usage pratique sous Linux.

EBFONT
Linux 59macOS —

Bad font file format

Format de fichier de police incorrect. C'est un code hérité sans usage pratique sous Linux.

ENOSTR
Linux 60macOS 99

Device not a stream

macOS: Not a STREAM

Le périphérique n'est pas un STREAM. Appartient à l'interface STREAMS de System V, que Linux n'implémente pas.

ENODATA
Linux 61macOS 96

No data available

macOS: No message available on STREAM

Aucune donnée disponible. Sous Linux, getxattr le renvoie lorsque l'attribut étendu n'existe pas ; sous macOS, ce cas correspond à ENOATTR.

ETIME
Linux 62macOS 101

Timer expired

macOS: STREAM ioctl timeout

Un temporisateur a expiré. Vient de STREAMS ; sous Linux, certains pilotes et io_uring l'utilisent pour les opérations avec délai.

ENOSR
Linux 63macOS 98

Out of streams resources

macOS: No STREAM resources

Plus de ressources STREAMS, une interface que Linux n'implémente pas.

ENONET
Linux 64macOS —

Machine is not on the network

La machine n'est pas sur le réseau. C'est un code hérité peu utilisé.

ENOPKG
Linux 65macOS —

Package not installed

Le paquet n'est pas installé. C'est un code hérité ; certains sous-systèmes l'utilisent lorsqu'un module manque, par exemple un module cryptographique.

EREMOTE
Linux 66macOS 71

Object is remote

macOS: Too many levels of remote in path

L'objet est distant. Sur NFS, il indique un chemin exporté depuis un autre serveur.

ENOLINK
Linux 67macOS 97

Link has been severed

Le lien a été coupé. C'est un code hérité ; certains pilotes l'utilisent lorsque la connexion avec le périphérique est perdue.

EADV
Linux 68macOS —

Advertise error

Erreur « advertise ». C'est un code hérité de RFS sans usage sous Linux.

ESRMNT
Linux 69macOS —

Srmount error

Erreur « srmount ». C'est un code hérité de RFS sans usage sous Linux.

ECOMM
Linux 70macOS —

Communication error on send

Erreur de communication lors de l'envoi. C'est un code hérité ; certains pilotes réseau et USB l'utilisent.

EPROTO
Linux 71macOS 100

Protocol error

Erreur de protocole : l'autre extrémité ou le périphérique a répondu quelque chose d'inattendu. Apparaît avec des périphériques USB et dans des connexions coupées au milieu d'un échange.

EMULTIHOP
Linux 72macOS 95

Multihop attempted

Un saut multiple (multihop) a été tenté. C'est un code hérité de RFS.

EDOTDOT
Linux 73macOS —

RFS specific error

Erreur spécifique à RFS. Sans usage sous Linux.

EBADMSG
Linux 74macOS 94

Bad message

Le message est mal formé ou corrompu. ext4, XFS et Btrfs le renvoient, avec l'alias EFSBADCRC, lorsque la somme de contrôle des métadonnées échoue.

Même valeur :EFSBADCRC

EOVERFLOW
Linux 75macOS 84

Value too large for defined data type

macOS: Value too large to be stored in data type

La valeur ne tient pas dans le type de données de destination ; par exemple, un programme 32 bits compilé sans prise en charge des gros fichiers qui ouvre un fichier de plus de 2 Go.

ENOTUNIQ
Linux 76macOS —

Name not unique on network

Le nom n'est pas unique sur le réseau. C'est un code hérité.

EBADFD
Linux 77macOS —

File descriptor in bad state

Le descripteur de fichier est dans un état incorrect. ALSA et certains pilotes l'utilisent lorsque le périphérique n'est pas prêt.

EREMCHG
Linux 78macOS —

Remote address changed

L'adresse distante a changé. C'est un code hérité.

ELIBACC
Linux 79macOS —

Can not access a needed shared library

Impossible d'accéder à une bibliothèque partagée nécessaire. C'est un code hérité des binaires a.out.

ELIBBAD
Linux 80macOS —

Accessing a corrupted shared library

La bibliothèque partagée est endommagée. C'est un code hérité des binaires a.out.

ELIBSCN
Linux 81macOS —

.lib section in a.out corrupted

La section .lib du binaire a.out est endommagée. C'est un code hérité.

ELIBMAX
Linux 82macOS —

Attempting to link in too many shared libraries

Tentative de lier trop de bibliothèques partagées. C'est un code hérité de a.out.

ELIBEXEC
Linux 83macOS —

Cannot exec a shared library directly

Une bibliothèque partagée ne peut pas être exécutée directement. C'est un code hérité de a.out.

EILSEQ
Linux 84macOS 92

Invalid or incomplete multibyte or wide character

macOS: Illegal byte sequence

La séquence d'octets n'est pas valide pour l'encodage de caractères, comme un texte qui n'est pas de l'UTF-8 valide lors de sa conversion avec iconv ou avec les fonctions multioctets.

ERESTART
Linux 85macOS —

Interrupted system call should be restarted

L'appel interrompu doit être relancé. Il est réservé à l'usage interne du noyau et ne devrait pas parvenir aux programmes.

ESTRPIPE
Linux 86macOS —

Streams pipe error

Erreur de pipe STREAMS. ALSA le renvoie lorsque le périphérique audio est suspendu.

EUSERS
Linux 87macOS 68

Too many users

Trop d'utilisateurs. Le système de quotas de disque le renvoie lorsque sa table est pleine, ce qui est rare.

ENOTSOCK
Linux 88macOS 38

Socket operation on non-socket

Une opération de socket a été utilisée sur un descripteur qui n'est pas un socket.

EDESTADDRREQ
Linux 89macOS 39

Destination address required

L'adresse de destination manque : un envoi a été fait sur un socket non connecté sans indiquer où.

EMSGSIZE
Linux 90macOS 40

Message too long

Le message est trop grand pour le socket, comme un datagramme UDP plus grand que le maximum ou que la MTU lorsque la fragmentation n'est pas autorisée.

EPROTOTYPE
Linux 91macOS 41

Protocol wrong type for socket

Le protocole ne correspond pas au type de socket.

ENOPROTOOPT
Linux 92macOS 42

Protocol not available

L'option de socket ou le protocole demandé n'est pas disponible, par exemple une option de setsockopt que le noyau ne connaît pas.

EPROTONOSUPPORT
Linux 93macOS 43

Protocol not supported

Le protocole n'est pas pris en charge, par exemple parce que son module du noyau n'est pas chargé.

ESOCKTNOSUPPORT
Linux 94macOS 44

Socket type not supported

Le type de socket n'est pas pris en charge dans cette famille d'adresses.

EOPNOTSUPP
Linux 95macOS 102

Operation not supported

macOS: Operation not supported on socket

L'opération n'est pas prise en charge par le socket ou par l'objet. Sous Linux, il a la même valeur que ENOTSUP, et de nombreux systèmes de fichiers le renvoient pour des fonctions qu'ils n'implémentent pas, comme fallocate ou les attributs étendus.

ENOTSUP
Linux 95macOS 45

Operation not supported

L'opération n'est pas prise en charge. Sous Linux, il a la même valeur que EOPNOTSUPP (95) ; sous macOS, ce sont des codes distincts.

EPFNOSUPPORT
Linux 96macOS 46

Protocol family not supported

La famille de protocoles n'est pas prise en charge.

EAFNOSUPPORT
Linux 97macOS 47

Address family not supported by protocol

macOS: Address family not supported by protocol family

La famille d'adresses n'est pas prise en charge ; c'est typique lorsqu'on utilise IPv6 sur un système ou un conteneur où il est désactivé.

EADDRINUSE
Linux 98macOS 48

Address already in use

L'adresse et le port sont déjà utilisés : un autre processus écoute sur ce port, ou la connexion précédente est encore en TIME_WAIT. Trouvez le processus avec ss -ltnp ou lsof -i :PORT, ou utilisez SO_REUSEADDR.

EADDRNOTAVAIL
Linux 99macOS 49

Cannot assign requested address

macOS: Can't assign requested address

Impossible d'attribuer l'adresse demandée : l'IP n'appartient à aucune interface de la machine, ou les ports éphémères pour les connexions sortantes sont épuisés.

ENETDOWN
Linux 100macOS 50

Network is down

L'interface réseau est inactive.

ENETUNREACH
Linux 101macOS 51

Network is unreachable

Le réseau de destination est inaccessible car il n'existe aucune route vers lui. Vérifiez la table de routage et la passerelle ; cela arrive aussi lors d'une connexion en IPv6 sans connectivité IPv6.

ENETRESET
Linux 102macOS 52

Network dropped connection on reset

Le réseau a réinitialisé la connexion, par exemple lorsqu'un keepalive échoue.

ECONNABORTED
Linux 103macOS 53

Software caused connection abort

La connexion a été interrompue du côté local, par exemple parce que le client l'a fermée avant que le serveur ne l'accepte avec accept.

ECONNRESET
Linux 104macOS 54

Connection reset by peer

L'autre extrémité a coupé brutalement la connexion avec un RST (« Connection reset by peer ») : le processus distant s'est fermé, un pare-feu ou un répartiteur de charge a coupé la connexion inactive, ou des données que l'autre partie n'attendait pas ont été envoyées.

ENOBUFS
Linux 105macOS 55

No buffer space available

Aucun espace tampon disponible dans le noyau pour l'opération réseau ; apparaît généralement avec beaucoup de trafic ou lorsque les files des sockets sont pleines.

EISCONN
Linux 106macOS 56

Transport endpoint is already connected

macOS: Socket is already connected

Le socket est déjà connecté.

ENOTCONN
Linux 107macOS 57

Transport endpoint is not connected

macOS: Socket is not connected

Le socket n'est pas connecté : on a tenté d'envoyer ou de recevoir avant de se connecter, ou la connexion est déjà fermée. Sur un montage FUSE, il apparaît comme « Transport endpoint is not connected » lorsque son processus est mort ; on le corrige en démontant avec fusermount -u.

ESHUTDOWN
Linux 108macOS 58

Cannot send after transport endpoint shutdown

macOS: Can't send after socket shutdown

Impossible d'envoyer après avoir fermé ce sens du socket avec shutdown.

ETOOMANYREFS
Linux 109macOS 59

Too many references: cannot splice

macOS: Too many references: can't splice

Trop de références ; sous Linux, lorsqu'on passe trop de descripteurs imbriqués par un socket Unix.

ETIMEDOUT
Linux 110macOS 60

Connection timed out

macOS: Operation timed out

Le délai d'attente de la connexion a expiré car la destination n'a pas répondu. Cela vient généralement d'un pare-feu qui abandonne silencieusement les paquets, d'un hôte éteint ou d'une route qui n'aboutit pas.

ECONNREFUSED
Linux 111macOS 61

Connection refused

La destination a refusé la connexion : la machine répond, mais personne n'écoute sur ce port ou un pare-feu répond par un rejet. Vérifiez que le service est en cours d'exécution et écoute sur la bonne interface, pas seulement sur 127.0.0.1.

EHOSTDOWN
Linux 112macOS 64

Host is down

L'hôte de destination est hors service.

EHOSTUNREACH
Linux 113macOS 65

No route to host

Aucune route vers l'hôte : il ne répond pas à ARP sur le réseau local, ou un routeur ou un pare-feu signale qu'il est inaccessible.

EALREADY
Linux 114macOS 37

Operation already in progress

Une opération est déjà en cours sur le socket, comme un connect non bloquant qui n'est pas encore terminé.

EINPROGRESS
Linux 115macOS 36

Operation now in progress

L'opération est en cours : un connect non bloquant a commencé et se terminera plus tard. Ce n'est pas une erreur ; il faut attendre avec poll ou select.

ESTALE
Linux 116macOS 70

Stale file handle

macOS: Stale NFS file handle

L'identifiant de fichier est devenu obsolète : sur NFS, le fichier ou le répertoire a été supprimé ou remplacé sur le serveur. On le résout en rouvrant le chemin ou en remontant.

EUCLEAN
Linux 117macOS —

Structure needs cleaning

La structure a besoin d'être nettoyée : le système de fichiers a détecté une corruption (sur ext4 et XFS, avec l'alias EFSCORRUPTED). Démontez-le et lancez fsck ou xfs_repair.

Même valeur :EFSCORRUPTED

ENOTNAM
Linux 118macOS —

Not a XENIX named type file

Ce n'est pas un fichier nommé XENIX. C'est un code hérité inutilisé.

ENAVAIL
Linux 119macOS —

No XENIX semaphores available

Aucun sémaphore XENIX disponible. C'est un code hérité inutilisé.

EISNAM
Linux 120macOS —

Is a named type file

C'est un fichier nommé XENIX. C'est un code hérité inutilisé.

EREMOTEIO
Linux 121macOS —

Remote I/O error

Erreur d'E/S distante, par exemple d'un périphérique I2C ou d'un disque distant qui n'a pas répondu.

EDQUOT
Linux 122macOS 69

Disk quota exceeded

macOS: Disc quota exceeded

Le quota de disque de l'utilisateur ou du groupe a été dépassé.

ENOMEDIUM
Linux 123macOS —

No medium found

Aucun support dans le périphérique, comme un lecteur sans disque ou un lecteur de cartes vide.

EMEDIUMTYPE
Linux 124macOS —

Wrong medium type

Le type de support n'est pas le bon.

ECANCELED
Linux 125macOS 89

Operation canceled

L'opération a été annulée, par exemple une E/S asynchrone ou une attente io_uring.

ENOKEY
Linux 126macOS —

Required key not available

La clé nécessaire n'est pas dans le keyring du noyau. Apparaît avec des systèmes de fichiers chiffrés, comme fscrypt ou eCryptfs, lorsque la clé n'a pas été chargée.

EKEYEXPIRED
Linux 127macOS —

Key has expired

La clé a expiré. PAM et Kerberos l'utilisent aussi lorsque le mot de passe ou le ticket a expiré.

EKEYREVOKED
Linux 128macOS —

Key has been revoked

La clé a été révoquée.

EKEYREJECTED
Linux 129macOS —

Key was rejected by service

Le service a rejeté la clé.

EOWNERDEAD
Linux 130macOS 105

Owner died

macOS: Previous owner died

Le propriétaire d'un mutex robuste est mort sans le libérer. Le nouveau propriétaire doit rendre cohérent l'état protégé et appeler pthread_mutex_consistent.

ENOTRECOVERABLE
Linux 131macOS 104

State not recoverable

L'état protégé par un mutex robuste ne peut pas être récupéré, car le propriétaire précédent est mort et personne ne l'a marqué comme cohérent.

ERFKILL
Linux 132macOS —

Operation not possible due to RF-kill

L'opération est impossible car la radio Wi-Fi ou Bluetooth est bloquée par RF-kill. Vérifiez rfkill list, l'interrupteur physique ou la touche du mode avion.

EHWPOISON
Linux 133macOS —

Memory page has hardware error

La page mémoire présente une erreur matérielle et le noyau l'a marquée comme empoisonnée.

EFTYPE
Linux 134macOS 79

Inappropriate file type or format

Le type de fichier n'est pas adapté à l'opération. Il existe depuis longtemps sous macOS et BSD ; sous Linux, il a été ajouté récemment.

EPROCLIM
Linux —macOS 67

Too many processes

Trop de processus. BSD le définit pour la limite de processus, bien qu'en pratique fork renvoie EAGAIN.

EBADRPC
Linux —macOS 72

RPC struct is bad

La structure RPC est incorrecte (Sun RPC, utilisé par NFS).

ERPCMISMATCH
Linux —macOS 73

RPC version wrong

La version RPC ne correspond pas (Sun RPC, utilisé par NFS).

EPROGUNAVAIL
Linux —macOS 74

RPC program not available

macOS: RPC prog. not avail

Le programme RPC n'est pas disponible sur le serveur.

EPROGMISMATCH
Linux —macOS 75

RPC program version wrong

macOS: Program version wrong

La version du programme RPC ne correspond pas.

EPROCUNAVAIL
Linux —macOS 76

RPC bad procedure for program

macOS: Bad procedure for program

La procédure n'existe pas dans le programme RPC.

EAUTH
Linux —macOS 80

Authentication error

Erreur d'authentification, par exemple lors du montage d'un partage NFS.

ENEEDAUTH
Linux —macOS 81

Need authenticator

Un authentificateur est nécessaire pour l'opération.

EPWROFF
Linux —macOS 82

Device power is off

Le périphérique est éteint.

EDEVERR
Linux —macOS 83

Device error, e.g. paper out

Erreur du périphérique, par exemple une imprimante sans papier.

EBADEXEC
Linux —macOS 85

Bad executable

L'exécutable n'est pas valide.

EBADARCH
Linux —macOS 86

Bad CPU type in executable

L'exécutable est destiné à un autre type de CPU, comme un binaire uniquement x86_64 sur un Mac Apple Silicon sans Rosetta 2, ou un binaire ARM sur un Mac Intel.

ESHLIBVERS
Linux —macOS 87

Shared library version mismatch

La version de la bibliothèque partagée ne correspond pas.

EBADMACHO
Linux —macOS 88

Malformed Macho file

Le fichier Mach-O est mal formé ou endommagé.

ENOATTR
Linux —macOS 93

Attribute not found

L'attribut étendu n'existe pas ; il équivaut à ENODATA sous Linux. Apparaît avec xattr, par exemple lorsqu'on retire com.apple.quarantine d'un fichier qui ne l'a pas.

ENOPOLICY
Linux —macOS 103

No such policy registered

Aucune politique enregistrée sous ce nom dans le MAC Framework.

EQFULL
Linux —macOS 106

Interface output queue is full

La file de sortie de l'interface réseau est pleine.

ENOTCAPABLE
Linux —macOS 107

Capabilities insufficient

Les capacités sont insuffisantes : les appels restreints par un sandbox le renvoient.

SIGSignaux33
SIGHUP
Linux 1macOS 1

Hangup

Le terminal qui contrôlait le processus a été fermé ou la session SSH a été coupée. De nombreux démons, comme nginx, sshd ou rsyslog, l'utilisent comme une demande de relecture de la configuration ; nohup, tmux et screen évitent qu'il ferme les processus à la sortie.

Termine le processus
SIGINT
Linux 2macOS 2

Interrupt

Interruption depuis le clavier avec Ctrl+C. Le programme peut l'intercepter pour se terminer proprement. Code de sortie 130.

Termine le processus
SIGQUIT
Linux 3macOS 3

Quit

Sortie depuis le clavier avec Ctrl+\. Termine le processus avec un vidage mémoire ; la JVM, elle, l'utilise pour afficher l'état des threads.

Termine avec un vidage mémoire
SIGILL
Linux 4macOS 4

Illegal instruction

Le processeur a rencontré une instruction illégale : un binaire compilé pour un CPU plus récent (par exemple, avec AVX2 ou AVX-512 sur un processeur qui ne les prend pas en charge), du code endommagé ou un saut vers des données.

Termine avec un vidage mémoire
SIGTRAP
Linux 5macOS 5

Trace/breakpoint trap

Trappe de débogage : les débogueurs l'utilisent pour les points d'arrêt. S'il arrive sans débogueur, c'est généralement une erreur détectée par le programme lui-même, comme les vérifications de Swift sous macOS.

Termine avec un vidage mémoire
SIGABRT
Linux 6macOS 6

Aborted

Le processus a appelé abort() : une assertion qui a échoué, une exception C++ non interceptée ou une corruption du tas détectée par la bibliothèque C (« double free or corruption »). Code de sortie 134.

Termine avec un vidage mémoire

Même valeur :SIGIOT

SIGBUS
Linux 7macOS 10

Bus error

Erreur de bus : un accès mémoire mal aligné sur certaines architectures, ou un accès à une partie d'un fichier mappé avec mmap qui n'existe plus parce que le fichier a été tronqué. Se produit aussi lorsque /dev/shm est plein.

Termine avec un vidage mémoire
SIGFPE
Linux 8macOS 8

Floating point exception

Exception arithmétique. Malgré son nom, la cause la plus courante est une division entière par zéro.

Termine avec un vidage mémoire
SIGKILL
Linux 9macOS 9

Killed

Termine le processus immédiatement : il ne peut être ni intercepté, ni bloqué, ni ignoré. Il est envoyé par kill -9, par l'OOM killer du noyau lorsque la mémoire est épuisée, et par Docker ou Kubernetes lorsqu'un conteneur dépasse sa limite de mémoire (OOMKilled) ou ne se termine pas à temps après SIGTERM. Code de sortie 137.

Termine le processusNe peut pas être intercepté
SIGUSR1
Linux 10macOS 30

User defined signal 1

Signal libre que chaque application peut utiliser à sa guise ; par exemple, dd affiche sa progression et nginx rouvre ses logs.

Termine le processus
SIGSEGV
Linux 11macOS 11

Segmentation fault

Violation de segment (« Segmentation fault ») : un accès à une mémoire non valide, comme déréférencer un pointeur nul, sortir des limites d'un tableau ou faire déborder la pile avec une récursion infinie. Code de sortie 139.

Termine avec un vidage mémoire
SIGUSR2
Linux 12macOS 31

User defined signal 2

Second signal libre que chaque application peut utiliser à sa guise.

Termine le processus
SIGPIPE
Linux 13macOS 13

Broken pipe

Écriture dans un pipe ou un socket sans lecteur. C'est normal dans cmd | head, où le lecteur se termine avant ; les serveurs l'ignorent généralement et gèrent l'erreur EPIPE. Code de sortie 141.

Termine le processus
SIGALRM
Linux 14macOS 14

Alarm clock

Le temporisateur programmé avec alarm ou setitimer a expiré.

Termine le processus
SIGTERM
Linux 15macOS 15

Terminated

Demande d'arrêt propre. C'est le signal par défaut de kill, de systemctl stop, de docker stop et de Kubernetes lors de la suppression d'un pod ; le processus devrait fermer ses connexions et se terminer. Code de sortie 143.

Termine le processus
SIGSTKFLT
Linux 16macOS —

Stack fault

Erreur de pile du coprocesseur. Inutilisé dans les Linux actuels.

Termine le processus
SIGCHLD
Linux 17macOS 20

Child exited

Un processus enfant s'est terminé, a été suspendu ou a repris. Le parent doit le récupérer avec wait ; sinon, l'enfant reste à l'état de zombie.

Ignoré

Même valeur :SIGCLD

SIGCONT
Linux 18macOS 19

Continued

Reprend un processus suspendu, comme le font fg et bg dans le shell.

Reprend le processus
SIGSTOP
Linux 19macOS 17

Stopped (signal)

Suspend le processus ; il ne peut être ni intercepté ni ignoré. Le processus reprend avec SIGCONT.

Suspend le processusNe peut pas être intercepté
SIGTSTP
Linux 20macOS 18

Stopped

Suspension depuis le terminal avec Ctrl+Z. Contrairement à SIGSTOP, le programme peut l'intercepter.

Suspend le processus
SIGTTIN
Linux 21macOS 21

Stopped (tty input)

Un processus en arrière-plan a tenté de lire depuis le terminal.

Suspend le processus
SIGTTOU
Linux 22macOS 22

Stopped (tty output)

Un processus en arrière-plan a tenté d'écrire sur le terminal alors que stty tostop est actif, ou d'en modifier la configuration.

Suspend le processus
SIGURG
Linux 23macOS 16

Urgent I/O condition

Des données urgentes (hors bande) sont arrivées sur un socket. Go l'utilise en interne pour interrompre les goroutines.

Ignoré
SIGXCPU
Linux 24macOS 24

CPU time limit exceeded

La limite de temps CPU du processus a été dépassée (ulimit -t).

Termine avec un vidage mémoire
SIGXFSZ
Linux 25macOS 25

File size limit exceeded

La taille maximale de fichier autorisée pour le processus a été dépassée (ulimit -f).

Termine avec un vidage mémoire
SIGVTALRM
Linux 26macOS 26

Virtual timer expired

Le temporisateur virtuel, qui ne compte que le temps CPU du processus, a expiré.

Termine le processus
SIGPROF
Linux 27macOS 27

Profiling timer expired

Le temporisateur de profilage, utilisé par les profileurs, a expiré.

Termine le processus
SIGWINCH
Linux 28macOS 28

Window changed

La taille de la fenêtre du terminal a changé ; les programmes en plein écran l'utilisent pour se redessiner.

Ignoré
SIGIO
Linux 29macOS 23

input/output possible signal

Des E/S sont disponibles sur un descripteur configuré avec O_ASYNC. Sous Linux, SIGPOLL est le même signal.

Termine le processus

Même valeur :SIGPOLL

SIGPWR
Linux 30macOS —

Power failure

Panne de courant, qu'un logiciel d'onduleur signale au système init.

Termine le processus
SIGSYS
Linux 31macOS 12

Bad system call

Appel système incorrect. Aujourd'hui, la cause habituelle est un filtre seccomp qui le bloque, comme dans les conteneurs.

Termine avec un vidage mémoire
SIGEMT
Linux —macOS 7

EMT trap

Trappe d'émulation (EMT). Existe sous macOS et BSD, mais pas sous Linux sur x86 ni sur ARM.

Termine avec un vidage mémoire
SIGINFO
Linux —macOS 29

Information request

Demande d'information avec Ctrl+T dans le terminal de macOS et de BSD ; de nombreuses commandes répondent en affichant leur progression.

Ignoré
$?Codes de sortie24
0EXIT_SUCCESS

La commande s'est terminée correctement. C'est le seul code qui signifie la réussite : toute autre valeur indique une erreur.

C
1EXIT_FAILURE

Erreur générale ; chaque programme décide de sa signification. Le détail se trouve généralement dans ce que la commande a écrit sur stderr. grep et diff l'utilisent dans un autre sens : « aucune correspondance trouvée » ou « les fichiers sont différents ».

C
2Misuse of shell builtins

Mauvaise utilisation d'une commande interne du shell ou erreur de syntaxe dans le script. De nombreux programmes l'utilisent aussi pour des options non valides, et grep pour de vraies erreurs.

Bash
64EX_USAGE

La commande a été mal utilisée : il manque des arguments, il y en a trop ou une option est incorrecte.

sysexits.h
65EX_DATAERR

Les données d'entrée ont un format incorrect.

sysexits.h
66EX_NOINPUT

Un fichier d'entrée n'existe pas ou ne peut pas être lu.

sysexits.h
67EX_NOUSER

L'utilisateur indiqué n'existe pas ; utilisé surtout par les programmes de messagerie.

sysexits.h
68EX_NOHOST

Le nom d'hôte n'existe pas.

sysexits.h
69EX_UNAVAILABLE

Un service nécessaire n'est pas disponible, ou une défaillance qui n'entre dans aucune autre catégorie s'est produite.

sysexits.h
70EX_SOFTWARE

Erreur interne du programme.

sysexits.h
71EX_OSERR

Erreur du système d'exploitation, comme l'impossibilité de faire un fork ou de créer un pipe.

sysexits.h
72EX_OSFILE

Un fichier système, comme /etc/passwd, est manquant ou contient une erreur.

sysexits.h
73EX_CANTCREAT

Impossible de créer un fichier de sortie.

sysexits.h
74EX_IOERR

Erreur d'entrée/sortie lors de la lecture ou de l'écriture d'un fichier.

sysexits.h
75EX_TEMPFAIL

Échec temporaire : il vaut mieux réessayer plus tard. Les serveurs de messagerie l'utilisent pour laisser le message dans la file d'attente.

sysexits.h
76EX_PROTOCOL

Le système distant a répondu quelque chose qui ne respecte pas le protocole.

sysexits.h
77EX_NOPERM

Permissions insuffisantes pour l'opération.

sysexits.h
78EX_CONFIG

Il y a une erreur dans la configuration.

sysexits.h
124Timed out

La commande timeout l'a terminée parce qu'elle a dépassé le délai indiqué.

GNU timeout
125Container failed to run

docker run lui-même a échoué avant d'exécuter le conteneur, par exemple à cause d'une option incorrecte ou d'une erreur du démon. GNU timeout le renvoie aussi lorsque c'est lui qui échoue.

Docker
126Command invoked cannot execute

Le fichier existe, mais ne peut pas être exécuté : il lui manque la permission d'exécution, c'est un répertoire ou c'est un binaire d'une autre architecture. Dans Docker, la commande du conteneur n'est pas exécutable.

POSIX
127Command not found

Commande introuvable : elle n'est pas installée, n'est pas dans le PATH ou son nom est mal orthographié. Dans les scripts, il apparaît aussi lorsque l'interpréteur de la ligne #! manque ; dans Docker, lorsque la commande du conteneur n'existe pas dans l'image.

POSIX
128Fatal error

Les codes supérieurs à 128 indiquent qu'un signal a terminé le processus, mais 128 ne correspond à aucun. Git l'utilise pour toutes ses erreurs fatales (« fatal: … »), comme un dépôt qui n'existe pas ou un échec d'authentification lors d'un clonage.

Git
255Exit status out of range

Le code de sortie était hors limites : exit -1 arrive comme 255, car seuls 8 bits sont conservés. ssh le renvoie aussi lorsque la connexion ou l'authentification échoue, pour le distinguer du code de la commande distante.

POSIX

Les valeurs Linux sont celles de x86, x86-64 et ARM ; Alpha, MIPS, SPARC et PA-RISC numérotent différemment certains errno et signaux. Les messages en anglais sont ceux qu'affichent strerror et strsignal dans la glibc, et dans macOS lorsqu'ils diffèrent. Les codes de sortie supérieurs à 128 sont interprétés comme 128 plus le numéro du signal, ce qui est la convention de bash, de Docker et de Kubernetes.

Comment ça marche

Lorsqu'un appel système échoue sous Linux, il renvoie -1 et place dans la variable errno un numéro qui indique pourquoi : 2 est ENOENT, le fichier n'existe pas ; 13 est EACCES, permission refusée. strerror convertit ce numéro en texte affiché à l'écran, comme « No such file or directory ». Python l'affiche sous la forme [Errno 13], Node.js sous la forme code: 'ECONNREFUSED' et Go, Rust ou Java avec le même texte. Les numéros de 1 à 34 viennent de l'Unix d'origine et sont identiques sur tous les systèmes ; les suivants ont été numérotés par chaque système à sa manière, si bien que ECONNREFUSED vaut 111 sous Linux et 61 sous macOS. Le nom est portable ; le numéro, non.

Les signaux sont des avis que le noyau ou un autre processus envoient à un processus : SIGINT quand on appuie sur Ctrl+C, SIGTERM pour lui demander de se terminer, SIGKILL pour le tuer sans lui demander son avis, SIGSEGV lorsqu'il accède à une mémoire non valide. Chacun a une action par défaut, et presque tous peuvent être interceptés pour faire autre chose. Lorsqu'un signal tue un processus, le shell l'indique par le code de sortie 128 plus le numéro du signal : 137 est SIGKILL (9), 139 est SIGSEGV (11) et 143 est SIGTERM (15). Docker et Kubernetes utilisent la même convention.

Le code de sortie est le numéro qu'un programme laisse en se terminant : 0 signifie la réussite et toute autre valeur, une erreur. Seuls 8 bits sont conservés, il va donc de 0 à 255. Il existe peu de conventions : 126 et 127 sont utilisés par le shell lorsqu'il ne peut pas exécuter la commande ou ne la trouve pas, ceux de 64 à 78 sont définis par sysexits.h de BSD, et le reste est décidé par chaque programme, comme grep, qui renvoie 1 lorsqu'il ne trouve rien.

Exemples

Last State: Terminated · Reason: OOMKilled · Exit Code: 137137 = 128 + 9 · SIGKILLLe conteneur a dépassé sa limite de mémoire et le noyau l'a tué avec SIGKILL. Il faut augmenter la limite dans resources.limits.memory ou chercher pourquoi le processus consomme autant ; le redémarrer ne résout rien.
Error: connect ECONNREFUSED 127.0.0.1:5432ECONNREFUSED · Linux 111 · macOS 61 · Connection refusedNode.js n'a pas pu se connecter à PostgreSQL car personne n'écoute sur le port 5432. Si l'application tourne dans un conteneur, 127.0.0.1 est le conteneur lui-même et non la machine : il faut utiliser le nom du service de la base de données.
OSError: [Errno 48] Address already in useEADDRINUSE · Linux 98 · macOS 48Le 48 trahit que le programme tourne sous macOS : sous Linux, la même erreur est la 98. Dans les deux cas, un autre processus utilise déjà le port ; lsof -i :PORT indique lequel.

Cas d'usage

  • Comprendre une erreur d'une application en Python, Node.js, Go ou C qui n'affiche que le numéro ou le nom de l'errno.
  • Découvrir, à partir de son code de sortie, pourquoi un conteneur Docker s'est arrêté ou pourquoi un pod Kubernetes redémarre.
  • Convertir un numéro d'errno macOS en son nom correct, qui à partir de 35 ne coïncide plus avec celui de Linux.
  • Interpréter le code de sortie d'un script, d'un cron ou d'un job de CI qui a échoué.
  • Choisir quel signal envoyer avec kill et savoir ce que fait le processus s'il ne l'intercepte pas.
  • Écrire une gestion d'erreurs portable qui compare par nom plutôt que par numéro.

Questions fréquentes

Que signifie l'exit code 137 ?

Que le processus a été terminé par le signal 9, SIGKILL (128 + 9). La cause la plus courante est la mémoire : le conteneur a dépassé sa limite, et Kubernetes l'indique comme OOMKilled, ou l'OOM killer du noyau a choisi ce processus, ce qui apparaît dans dmesg sous la forme « Out of memory: Killed process ». Cela se produit aussi avec docker kill, ou lorsque le processus ne se termine pas dans le délai imparti après SIGTERM : 10 secondes avec docker stop et 30 avec Kubernetes.

Quelle est la différence entre SIGTERM et SIGKILL ?

SIGTERM demande au processus de se terminer, et le processus peut l'intercepter pour fermer ses connexions, enregistrer ses données et sortir. Avec SIGKILL, le noyau le termine sur-le-champ, sans que le processus puisse rien faire. La bonne pratique consiste à envoyer SIGTERM, attendre quelques secondes et ne recourir à SIGKILL que s'il est toujours en vie, ce que font systemd, docker stop et Kubernetes.

Pourquoi le même errno a-t-il un autre numéro sous macOS ?

Parce que POSIX définit les noms mais pas les numéros. De 1 à 34, tous les systèmes ont hérité de ceux de l'Unix d'origine ; ensuite, BSD, dont descend macOS, et System V, qu'a suivi Linux, les ont numérotés séparément. C'est pourquoi il vaut mieux toujours comparer par nom, avec errno.ECONNREFUSED en Python, err.code en Node.js ou la constante en C, et non par numéro.

Quelle est la différence entre EACCES et EPERM ?

EACCES (« Permission denied ») signifie que les permissions du fichier ou d'un répertoire du chemin ne le permettent pas, ou qu'une ACL ou SELinux l'empêche : cela se résout avec chmod, chown ou la politique correspondante. EPERM (« Operation not permitted ») signifie que l'opération elle-même exige des privilèges, quelles que soient les permissions, comme changer le propriétaire d'un fichier ou tuer un processus d'un autre utilisateur : il faut être root, disposer d'une capability ou retirer un attribut comme celui d'immuabilité.

Comment voir le code de sortie d'une commande ou d'un conteneur ?

Dans bash et zsh, echo $? affiche celui de la dernière commande ; dans PowerShell, $LASTEXITCODE. Dans Docker, docker ps -a l'affiche dans la colonne STATUS, comme « Exited (137) ». Dans Kubernetes, kubectl describe pod l'affiche dans « Last State: Terminated », avec le motif, comme OOMKilled ou Error.