family enum Restrict to one table: signal (POSIX signals with Linux/x86-64 numbers), errno (POSIX <errno.h> with Linux/glibc numbers), shell (process exit statuses) or sysexits (BSD sysexits.h).
What does exit code 137, 127 or 1 mean? POSIX signals, errno values, the 128+n shell convention and the container conventions, each with its source.
Authoritative reference data or standards computation
Returns every matching row — all 162 with no filter — so nothing is silently hidden; 'count' trims the list if you want less. Filters combine with AND and genuinely filter: zero matches return an empty list plus a warning, never a substituted row.
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
family | enum | allowed: signal | errno | shell | sysexits example: signal | Restrict to one table: signal (POSIX signals with Linux/x86-64 numbers), errno (POSIX <errno.h> with Linux/glibc numbers), shell (process exit statuses) or sysexits (BSD sysexits.h). |
search | string | allowed: 1 – 64 example: permission | Case-insensitive contains-filter over the name and the meaning (not the causes). |
code | int | allowed: 0 – 255 example: 137 | Only entries with this numeric value. The same number can appear in several families — that is the point. |
family enum Restrict to one table: signal (POSIX signals with Linux/x86-64 numbers), errno (POSIX <errno.h> with Linux/glibc numbers), shell (process exit statuses) or sysexits (BSD sysexits.h).
search string Case-insensitive contains-filter over the name and the meaning (not the causes).
code int Only entries with this numeric value. The same number can appear in several families — that is the point.
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
count | int | default: all matches allowed: 1 – 100 example: 3 | Limit the number of returned records (1–100). Defaults to all matches. |
fields | list | example: code,name | Return only these fields (comma-separated). Mutually exclusive with 'exclude'. |
exclude | list | example: caveat | Return all fields except these (comma-separated). |
format | enum | default: json allowed: json | ndjson | csv example: csv | Response format: json envelope, ndjson (one record per line) or csv. |
pretty | boolean | default: false example: true | Pretty-print the JSON response. |
unwrap | boolean | default: false example: true | Drop the envelope: return the raw array/object without data/meta wrapper. |
count int Limit the number of returned records (1–100). Defaults to all matches.
fields list Return only these fields (comma-separated). Mutually exclusive with 'exclude'.
exclude list Return all fields except these (comma-separated).
format enum Response format: json envelope, ndjson (one record per line) or csv.
pretty boolean Pretty-print the JSON response.
unwrap boolean Drop the envelope: return the raw array/object without data/meta wrapper.
| Field | Type | Description | Example |
|---|---|---|---|
code | integer (0-255) | Numeric value: a signal number, an errno number or a process exit status. | 137 |
name | string | Symbolic constant (SIGKILL, ENOENT, EX_USAGE) or, for shell statuses that have no constant, a descriptive identifier such as command-not-found. | terminated-by-SIGKILL |
family | string | signal | errno | shell | sysexits. | shell |
meaning | string | What the value means, in one sentence. | Terminated by SIGKILL (signal 9); the shell reports 128 + 9. |
standard | string | Which document this row's name and number are taken from: POSIX.1-2024 | Linux/glibc | sysexits.h | convention. 'convention' means no standard assigns the meaning. Linux/glibc does not imply Linux-only — SIGPROF and SIGIO exist on macOS and the BSDs too, they are simply no longer required by POSIX. | convention |
defaultAction nullable | string | Signal rows only: what the kernel does when no handler is installed — term (terminate), core (terminate and dump core), stop (suspend), ign (ignore) or cont (resume). null on every non-signal row. Only term and core signals can produce a 128+n exit status. | term |
derivedFrom nullable | string | The signal a 128+n status really comes from, set on the terminated-by-* and stopped-by-* rows. null everywhere else — including the 128+n values no signal can produce, such as 145. | SIGKILL |
commonCauses | string[] | Short, factual situations that produce this value. | ["The kernel out-of-memory killer terminated the process","Someone ran kill -9"] |
reference | string (URL) | Primary document this row's name and meaning come from. | https://manpages.debian.org/bookworm/bash/bash.1.en.html |
caveat nullable | string | Portability or scope limit you need before acting on the row — architecture-dependent signal numbers, implementation-defined errno numbers, convention-only statuses. null when there is nothing to warn about. | 31 on Linux/x86-64, ARM and PARISC. SIGSYS is 12 on Linux/Alpha, SPARC and MIPS and on macOS and the BSDs. |
code integer (0-255) Numeric value: a signal number, an errno number or a process exit status.
example: 137
name string Symbolic constant (SIGKILL, ENOENT, EX_USAGE) or, for shell statuses that have no constant, a descriptive identifier such as command-not-found.
example: terminated-by-SIGKILL
family string signal | errno | shell | sysexits.
example: shell
meaning string What the value means, in one sentence.
example: Terminated by SIGKILL (signal 9); the shell reports 128 + 9.
standard string Which document this row's name and number are taken from: POSIX.1-2024 | Linux/glibc | sysexits.h | convention. 'convention' means no standard assigns the meaning. Linux/glibc does not imply Linux-only — SIGPROF and SIGIO exist on macOS and the BSDs too, they are simply no longer required by POSIX.
example: convention
defaultAction string nullable Signal rows only: what the kernel does when no handler is installed — term (terminate), core (terminate and dump core), stop (suspend), ign (ignore) or cont (resume). null on every non-signal row. Only term and core signals can produce a 128+n exit status.
example: term
derivedFrom string nullable The signal a 128+n status really comes from, set on the terminated-by-* and stopped-by-* rows. null everywhere else — including the 128+n values no signal can produce, such as 145.
example: SIGKILL
commonCauses string[] Short, factual situations that produce this value.
example: ["The kernel out-of-memory killer terminated the process","Someone ran kill -9"]
reference string (URL) Primary document this row's name and meaning come from.
example: https://manpages.debian.org/bookworm/bash/bash.1.en.html
caveat string nullable Portability or scope limit you need before acting on the row — architecture-dependent signal numbers, implementation-defined errno numbers, convention-only statuses. null when there is nothing to warn about.
example: 31 on Linux/x86-64, ARM and PARISC. SIGSYS is 12 on Linux/Alpha, SPARC and MIPS and on macOS and the BSDs.
/api/exit-codes?family=signal {
"data": [
{
"code": 1,
"name": "SIGHUP",
"family": "signal",
"meaning": "Hangup: the controlling terminal was closed or the controlling process exited.",
"standard": "POSIX.1-2024",
"defaultAction": "term",
"derivedFrom": null,
"commonCauses": [
"The terminal or SSH session that started the process went away",
"A daemon was sent SIGHUP deliberately to make it re-read its configuration"
],
"reference": "https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html",
"caveat": null
},
{
"code": 2,
"name": "SIGINT",
"family": "signal",
"meaning": "Terminal interrupt, normally produced by pressing Ctrl-C.",
"standard": "POSIX.1-2024",
"defaultAction": "term",
"derivedFrom": null,
"commonCauses": [
"A user pressed Ctrl-C",
"A foreground process group was interrupted from the terminal"
],
"reference": "https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html",
"caveat": null
},
{
"code": 3,
"name": "SIGQUIT",
"family": "signal",
"meaning": "Terminal quit signal; the default action terminates the process and writes a core dump.",
"standard": "POSIX.1-2024",
"defaultAction": "core",
"derivedFrom": null,
…
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/exit-codes?code=137 {
"data": [
{
"code": 137,
"name": "terminated-by-SIGKILL",
"family": "shell",
"meaning": "Terminated by SIGKILL (signal 9); the shell reports 128 + 9.",
"standard": "convention",
"defaultAction": null,
"derivedFrom": "SIGKILL",
"commonCauses": [
"The kernel out-of-memory killer terminated the process",
"A container runtime escalated to SIGKILL after the SIGTERM grace period expired",
"Someone ran kill -9"
],
"reference": "https://manpages.debian.org/bookworm/bash/bash.1.en.html",
"caveat": "Kubernetes reports reason=OOMKilled with exitCode 137 for a container the kernel OOM killer terminated, and Docker surfaces the same 137; that is a runtime reporting convention, not a definition of the number. A program that calls exit(137) produces exactly the same status without any signal being involved. POSIX.1-2024 only requires a shell to report a status greater than 128 when a command dies from a signal, and explicitly permits values above 255. The exact 128+n arithmetic is documented by bash, not by POSIX, so this status is evidence of a signal death — not proof of one."
}
],
"meta": {
"endpoint": "exit-codes",
"count": 1,
"params": {
"code": 137
},
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/exit-codes?family=errno&search=permission {
"data": [
{
"code": 13,
"name": "EACCES",
"family": "errno",
"meaning": "Permission denied.",
"standard": "POSIX.1-2024",
"defaultAction": null,
"derivedFrom": null,
"commonCauses": [
"The file mode bits deny the requested access",
"A directory on the path is not searchable (missing execute bit)",
"A read-only bind mount or SELinux/AppArmor policy blocked the access"
],
"reference": "https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/errno.h.html",
"caveat": "POSIX.1-2024 requires the name but not the number: this value is the Linux/glibc one and differs on other platforms."
}
],
"meta": {
"endpoint": "exit-codes",
"count": 1,
"params": {
"family": "errno",
"search": "permission"
},
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/exit-codes?family=sysexits&format=csv code,name,family,meaning,standard,defaultAction,derivedFrom,commonCauses,reference,caveat
0,EX_OK,sysexits,Successful termination.,sysexits.h,,,"[""The program completed with no error""]",https://man.openbsd.org/sysexits.3,"sysexits.h is a BSD header, not a standard. Its own manual page opens with “A few programs exit with the following non-portable error codes. Do not use them.”"
64,EX_USAGE,sysexits,"Command line usage error: the wrong number of arguments, a bad flag, or bad syntax in a parameter.",sysexits.h,,,"[""A CLI was invoked with an unknown option or a missing argument""]",https://man.openbsd.org/sysexits.3,"sysexits.h is a BSD header, not a standard. Its own manual page opens with “A few programs exit with the following non-portable error codes. Do not use them.”"
65,EX_DATAERR,sysexits,"The input data was incorrect in some way. Intended for a user's data, not for system files.",sysexits.h,,,"[""A malformed input file the user supplied"",""A record that failed validation""]",https://man.openbsd.org/sysexits.3,"sysexits.h is a BSD header, not a standard. Its own manual page opens with “A few programs exit with the following non-portable error codes. Do not use them.”"
66,EX_NOINPUT,sysexits,An input file — not a system file — did not exist or was not readable.,sysexits.h,,,"[""The named input file is missing"",""The input file's permissions deny reading""]",https://man.openbsd.org/sysexits.3,"sysexits.h is a BSD header, not a standard. Its own manual page opens with “A few programs exit with the following non-portable error codes. Do not use them.”"
67,EX_NOUSER,sysexits,The specified user does not exist.,sysexits.h,,,"[""An unknown mail recipient"",""A remote login for an account that is not present""]",https://man.openbsd.org/sysexits.3,"sysexits.h is a BSD header, not a standard. Its own manual page opens with “A few programs exit with the following non-portable error codes. Do not use them.”"
68,EX_NOHOST,sysexits,The specified host does not exist.,sysexits.h,,,"[""An unresolvable hostname in a mail address or network request""]",https://man.openbsd.org/sysexits.3,"sysexits.h is a BSD header, not a standard. Its own manual page opens with “A few programs exit with the following non-portable error codes. Do not use them.”"
69,EX_UNAVAILABLE,sysexits,"A service is unavailable, for example because a support program or file is missing.",sysexits.h,,,"[""A required helper binary is absent"",""A catch-all when no other sysexits code fits""]",https://man.openbsd.org/sysexits.3,"sysexits.h is a BSD header, not a standard. Its own manual page opens with “A few programs exit with the following non-portable error codes. Do not use them.”"
70,EX_SOFTWARE,sysexits,"An internal software error, limited to errors that are not operating-system related.",sysexits.h,,,"[""An internal invariant failed"",""An unexpected internal state was reached""]",https://man.openbsd.org/sysexits.3,"sysexits.h is a BSD header, not a standard. Its own manual page opens with “A few programs exit with the following non-portable error codes. Do not use them.”"
71,EX_OSERR,sysexits,"An operating system error, such as being unable to fork or to create a pipe.",sysexits.h,,,"[""fork() failed"",""A required system resource could not be obtained""]",https://man.openbsd.org/sysexits.3,"sysexits.h is a BSD header, not a standard. Its own manual page opens with “A few programs exit with the following non-portable error codes. Do not use them.”"
72,EX_OSFILE,sysexits,"A system file such as /etc/passwd is missing, cannot be opened, or contains an error.",sysexits.h,,,"[""A system database file is missing or corrupt""]",https://man.openbsd.org/sysexits.3,"sysexits.h is a BSD header, not a standard. Its own manual page opens with “A few programs exit with the following non-portable error codes. Do not use them.”"
73,EX_CANTCREAT,sysexits,A user-specified output file cannot be created.,sysexits.h,,,"[""The output directory is missing or not writable""]",https://man.openbsd.org/sysexits.3,"sysexits.h is a BSD header, not a standard. Its own manual page opens with “A few programs exit with the following non-portable error codes. Do not use them.”"
74,EX_IOERR,sysexits,An error occurred while doing I/O on some file.,sysexits.h,,,"[""A read or write failed part-way through""]",https://man.openbsd.org/sysexits.3,"sysexits.h is a BSD header, not a standard. Its own manual page opens with “A few programs exit with the following non-portable error codes. Do not use them.”"
75,EX_TEMPFAIL,sysexits,A temporary failure that is not really an error; the request should be retried later.,sysexits.h,,,"[""A mailer could not open a connection and the message should be requeued""]",https://man.openbsd.org/sysexits.3,"sysexits.h is a BSD header, not a standard. Its own manual page opens with “A few programs exit with the following non-portable error codes. Do not use them.”"
76,EX_PROTOCOL,sysexits,The remote system returned something that was “not possible” during a protocol exchange.,sysexits.h,,,"[""A peer answered with a response the protocol does not allow""]",https://man.openbsd.org/sysexits.3,"sysexits.h is a BSD header, not a standard. Its own manual page opens with “A few programs exit with the following non-portable error codes. Do not use them.”"
77,EX_NOPERM,sysexits,"Insufficient permission to perform the operation, not counting filesystem problems.",sysexits.h,,,"[""An operation that requires a privilege the caller does not hold""]",https://man.openbsd.org/sysexits.3,"sysexits.h is a BSD header, not a standard. Its own manual page opens with “A few programs exit with the following non-portable error codes. Do not use them.”"
78,EX_CONFIG,sysexits,Something was unconfigured or misconfigured.,sysexits.h,,,"[""A required configuration key is missing or invalid""]",https://man.openbsd.org/sysexits.3,"sysexits.h is a BSD header, not a standard. Its own manual page opens with “A few programs exit with the following non-portable error codes. Do not use them.”"
Provide exactly one of 'code' or 'name'. A shared number such as 2 returns every matching row with ambiguous: true; 'family' narrows it. Unknown values return 404 with the closest documented entry.
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
code | int | allowed: 0 – 255 example: 137 | Numeric value to look up. Mutually exclusive with 'name'. |
name | string | allowed: 1 – 64 example: SIGKILL | Symbolic name to look up, matched case-insensitively (SIGKILL, enoent, EX_USAGE, command-not-found). Mutually exclusive with 'code'. |
family | enum | allowed: signal | errno | shell | sysexits example: signal | Disambiguates a value several tables share: signal, errno, shell or sysexits. Optional — omit it to see every match. |
code int Numeric value to look up. Mutually exclusive with 'name'.
name string Symbolic name to look up, matched case-insensitively (SIGKILL, enoent, EX_USAGE, command-not-found). Mutually exclusive with 'code'.
family enum Disambiguates a value several tables share: signal, errno, shell or sysexits. Optional — omit it to see every match.
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
fields | list | example: query,lookupBy | Return only these fields (comma-separated). Mutually exclusive with 'exclude'. |
exclude | list | example: matches | Return all fields except these (comma-separated). |
pretty | boolean | default: false example: true | Pretty-print the JSON response. |
unwrap | boolean | default: false example: true | Drop the envelope: return the raw array/object without data/meta wrapper. |
fields list Return only these fields (comma-separated). Mutually exclusive with 'exclude'.
exclude list Return all fields except these (comma-separated).
pretty boolean Pretty-print the JSON response.
unwrap boolean Drop the envelope: return the raw array/object without data/meta wrapper.
| Field | Type | Description | Example |
|---|---|---|---|
query | string | The value that was looked up; for a name, the canonical spelling of the matched entry. | 137 |
lookupBy | string | code | name — which key resolved this request. | code |
family nullable | string | The family filter that was applied, or null when the search covered every table. | signal |
matchCount | integer | How many rows matched. Always at least 1 — zero matches are a 404. | 1 |
ambiguous | boolean | True when more than one row matched — either because several tables claim the number (2 is ENOENT and SIGINT) or because one table has two names for it (errno 11 is EAGAIN and EWOULDBLOCK). | false |
matches | object[] | Every matching row, each with code, name, family, meaning, standard, defaultAction, derivedFrom, commonCauses, reference and caveat. | [{"code":137,"name":"terminated-by-SIGKILL","family":"shell","meaning":"Terminated by SIGKILL (signal 9); the shell reports 128 + 9.","standard":"convention","defaultAction":null,"derivedFrom":"SIGKILL"}] |
query string The value that was looked up; for a name, the canonical spelling of the matched entry.
example: 137
lookupBy string code | name — which key resolved this request.
example: code
family string nullable The family filter that was applied, or null when the search covered every table.
example: signal
matchCount integer How many rows matched. Always at least 1 — zero matches are a 404.
example: 1
ambiguous boolean True when more than one row matched — either because several tables claim the number (2 is ENOENT and SIGINT) or because one table has two names for it (errno 11 is EAGAIN and EWOULDBLOCK).
example: false
matches object[] Every matching row, each with code, name, family, meaning, standard, defaultAction, derivedFrom, commonCauses, reference and caveat.
example: [{"code":137,"name":"terminated-by-SIGKILL","family":"shell","meaning":"Terminated by SIGKILL (signal 9); the shell reports 128 + 9.","standard":"convention","defaultAction":null,"derivedFrom":"SIGKILL"}]
/api/exit-codes/lookup?code=137 {
"data": {
"query": "137",
"lookupBy": "code",
"family": null,
"matchCount": 1,
"ambiguous": false,
"matches": [
{
"code": 137,
"name": "terminated-by-SIGKILL",
"family": "shell",
"meaning": "Terminated by SIGKILL (signal 9); the shell reports 128 + 9.",
"standard": "convention",
"defaultAction": null,
"derivedFrom": "SIGKILL",
"commonCauses": [
"The kernel out-of-memory killer terminated the process",
"A container runtime escalated to SIGKILL after the SIGTERM grace period expired",
"Someone ran kill -9"
],
"reference": "https://manpages.debian.org/bookworm/bash/bash.1.en.html",
"caveat": "Kubernetes reports reason=OOMKilled with exitCode 137 for a container the kernel OOM killer terminated, and Docker surfaces the same 137; that is a runtime reporting convention, not a definition of the number. A program that calls exit(137) produces exactly the same status without any signal being involved. POSIX.1-2024 only requires a shell to report a status greater than 128 when a command dies from a signal, and explicitly permits values above 255. The exact 128+n arithmetic is documented by bash, not by POSIX, so this status is evidence of a signal death — not proof of one."
}
]
},
"meta": {
"endpoint": "exit-codes",
"route": "/lookup",
"params": {
"code": 137
},
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/exit-codes/lookup?code=2 {
"data": {
"query": "2",
"lookupBy": "code",
"family": null,
"matchCount": 2,
"ambiguous": true,
"matches": [
{
"code": 2,
"name": "SIGINT",
"family": "signal",
"meaning": "Terminal interrupt, normally produced by pressing Ctrl-C.",
"standard": "POSIX.1-2024",
"defaultAction": "term",
"derivedFrom": null,
"commonCauses": [
"A user pressed Ctrl-C",
"A foreground process group was interrupted from the terminal"
],
"reference": "https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html",
"caveat": null
},
{
"code": 2,
"name": "ENOENT",
"family": "errno",
"meaning": "No such file or directory.",
"standard": "POSIX.1-2024",
"defaultAction": null,
"derivedFrom": null,
"commonCauses": [
"The path does not exist",
"A symlink points at a missing target",
"An executable's dynamic loader or shared library is missing"
],
"reference": "https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/errno.h.html",
"caveat": "POSIX.1-2024 requires the name but not the number: this value is the Linux/glibc one and differs on other platforms."
}
]
…
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/exit-codes/lookup?name=SIGKILL {
"data": {
"query": "SIGKILL",
"lookupBy": "name",
"family": null,
"matchCount": 1,
"ambiguous": false,
"matches": [
{
"code": 9,
"name": "SIGKILL",
"family": "signal",
"meaning": "Kill: terminates the process immediately and cannot be caught, blocked or ignored.",
"standard": "POSIX.1-2024",
"defaultAction": "term",
"derivedFrom": null,
"commonCauses": [
"kill -9",
"The kernel out-of-memory killer selected the process",
"A container runtime's stop grace period expired after SIGTERM"
],
"reference": "https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html",
"caveat": null
}
]
},
"meta": {
"endpoint": "exit-codes",
"route": "/lookup",
"params": {
"name": "SIGKILL"
},
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/exit-codes/lookup?code=9&family=signal {
"data": {
"query": "9",
"lookupBy": "code",
"family": "signal",
"matchCount": 1,
"ambiguous": false,
"matches": [
{
"code": 9,
"name": "SIGKILL",
"family": "signal",
"meaning": "Kill: terminates the process immediately and cannot be caught, blocked or ignored.",
"standard": "POSIX.1-2024",
"defaultAction": "term",
"derivedFrom": null,
"commonCauses": [
"kill -9",
"The kernel out-of-memory killer selected the process",
"A container runtime's stop grace period expired after SIGTERM"
],
"reference": "https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html",
"caveat": null
}
]
},
"meta": {
"endpoint": "exit-codes",
"route": "/lookup",
"params": {
"code": 9,
"family": "signal"
},
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} Four tables in one lookup, and every row says which document it comes from.
signal — signals 1–31 with the Linux/x86-64 numbers from the kernel's arch/x86/include/uapi/asm/signal.h, each carrying its POSIX default action (term, core, stop, ign, cont). POSIX.1-2024 requires 27 of these names and not a single number, and the four it does not require (SIGSTKFLT, SIGPROF, SIGIO, SIGPWR) are labelled Linux/glibc — which means "this API takes the number from Linux", not "Linux-only": SIGPROF and SIGIO exist on macOS and the BSDs too. SIGBUS, SIGUSR1, SIGUSR2, SIGSYS and everything from 16 upwards take a different number on at least one of Linux/Alpha, SPARC, MIPS, PARISC, macOS or the BSDs; every affected row spells out the real alternatives in caveat, and so does every 128+n row built from it.errno — the POSIX.1-2024 <errno.h> name set carrying the Linux/glibc numbers. POSIX fixes the names and leaves the numbers implementation-defined, so every errno row says so. The four names POSIX only marks "Reserved" (EDQUOT, EMULTIHOP, ENOLINK, ESTALE) are labelled as reserved with the Linux meaning in brackets. Linux-only values POSIX does not require are deliberately out of scope.shell — process exit statuses. Shell Command Language §2.8.2 pins exactly two failure statuses: 127 (command not found) and 126 (found, but not an executable utility); 0 for successful completion comes from XCU §1.4 "Utility Description Defaults", and that is the section the success row cites. For a command killed by a signal §2.8.2 requires only a status greater than 128, and explicitly permits values above 255 — so the familiar 128+n arithmetic is a shell convention documented by bash, not by POSIX.sysexits — BSD's sysexits.h: EX_OK (0) plus EX_USAGE (64) through EX_CONFIG (78). Its own manual page opens by calling these codes non-portable and advising against them; the rows repeat that instead of hiding it.Not every 128+n value is a signal death. A signal only produces an exit status if its default action terminates the process, so this API derives terminated-by-… rows for the 23 term/core signals only. SIGSTOP, SIGTSTP, SIGTTIN and SIGTTOU merely suspend a job — a shell with job control does put 128+n in $? (Ctrl-Z gives 148 on Linux/x86-64), so 147–150 ship as stopped-by-… rows that say the process is still alive. SIGCHLD, SIGCONT, SIGURG and SIGWINCH are ignored or continue by default and kill nothing at all: 145, 146, 151 and 156 are unassigned with derivedFrom: null, exactly like 128. Widely copied tables that map all of 129–159 onto signals are wrong here — sh -c 'kill -WINCH $$' exits 0, not 156.
137 is not a definition of "OOMKilled". 137 is 128+9, that is SIGKILL. Kubernetes really does report reason: OOMKilled alongside exitCode: 137 when the kernel out-of-memory killer terminates a container — its memory-limit walkthrough shows exactly that status block, and Docker surfaces the same 137 — but that is a runtime reporting convention. A program that calls exit(137) itself produces an identical status with no signal involved. The same applies to 143 (SIGTERM) and 139 (SIGSEGV).
One number, several meanings. /lookup?code=2 returns both ENOENT and SIGINT with ambiguous: true instead of choosing for you; add family=errno to narrow it. One table can also claim a number twice — ?code=11&family=errno is EAGAIN and EWOULDBLOCK — and that is ambiguous too. Unknown codes and names answer 404 with the closest documented entry — never a substitute row.
Scope limit: this endpoint tells you what a number means and which document says so. It does not inspect your container, read your logs or diagnose why your process died.
/api/exit-codes/lookup?code=137 returns 137 as 128+9 with derivedFrom: "SIGKILL". Kubernetes and Docker commonly report it for a container the kernel OOM killer terminated, but that is a runtime reporting convention — a program can exit 137 on its own with no signal involved.
Yes, and POSIX.1-2024 §2.8.2 defines both: 127 means the command was not found, 126 means the command name was found but is not an executable utility. Both rows are labelled standard: "POSIX.1-2024".
Because 2 is ENOENT in <errno.h> and SIGINT in <signal.h>. /lookup?code=2 returns every match with ambiguous: true rather than guessing; add family=errno or family=signal to narrow it.
No. The numbers are Linux/x86-64. SIGBUS, SIGUSR1, SIGUSR2, SIGSYS and every signal from 16 upwards differ on macOS and the BSDs or on other Linux architectures. Every affected signal row states the real alternative values in its caveat, and so does every 128+n shell row derived from it — /lookup?code=138 says SIGUSR1 is signal 10 here but 30 on macOS, so 138 is not a SIGUSR1 death there.
No. SIGCHLD is ignored by default, so it never terminates anything and no shell derives 145 from it — sh -c 'kill -CHLD $$' exits 0. This API ships 145, 146 (SIGCONT), 151 (SIGURG) and 156 (SIGWINCH) as unassigned-… rows with derivedFrom: null. POSIX.1-2024 only requires a status greater than 128 for a command that dies from a signal — the exact 128+n arithmetic is bash's convention, which is why the derived rows carry standard: "convention".
They are BSD's suggested exit statuses, from EX_USAGE (64) to EX_CONFIG (78), plus EX_OK (0) for success. The sysexits(3) manual itself calls them non-portable and advises against using them, so this API labels them standard: "sysexits.h" rather than treating them as a standard.
Parse octal Unix modes, apply POSIX symbolic chmod expressions and calculate umask results, including special bits, X and class copying.
The complete IANA HTTP status code registry with practical descriptions, defining RFCs and a retryable flag — list by category or look up a single code.
Generate compact, coherent CI run fixtures with run-derived job conclusions, ordered steps, safe commits and exact lifecycle dates.
Generate coherent queue-job fixtures with bounded attempts, retry timing, dead-letter states and queue-specific payloads.
Generate sample log lines — JSON, logfmt, NCSA combined, nginx error and RFC 5424/3164 syslog — each returned with the parsed fields for that line.
Generate coherent deployment snapshots and lifecycle timelines with exact status, rollback, commit, artifact, environment and time relationships.