Standard Linux/Unix error codes

As a System Administrator I will often come across a system error code in a log file and need to look up what it means. I don’t know about you, but I don’t know that error 107 is “Transport endpoint is not connected” off the top of my head. My solution was a small Perl script that will print the error’s meaning or optionally all known error codes and their meaning. The perl code is below this listing of error codes.

001: Operation not permitted
002: No such file or directory
003: No such process
004: Interrupted system call
005: Input/output error
006: No such device or address
007: Argument list too long
008: Exec format error
009: Bad file descriptor
010: No child processes
011: Resource temporarily unavailable
012: Cannot allocate memory
013: Permission denied
014: Bad address
015: Block device required
016: Device or resource busy
017: File exists
018: Invalid cross-device link
019: No such device
020: Not a directory
021: Is a directory
022: Invalid argument
023: Too many open files in system
024: Too many open files
025: Inappropriate ioctl for device
026: Text file busy
027: File too large
028: No space left on device
029: Illegal seek
030: Read-only file system
031: Too many links
032: Broken pipe
033: Numerical argument out of domain
034: Numerical result out of range
035: Resource deadlock avoided
036: File name too long
037: No locks available
038: Function not implemented
039: Directory not empty
040: Too many levels of symbolic links
042: No message of desired type
043: Identifier removed
044: Channel number out of range
045: Level 2 not synchronized
046: Level 3 halted
047: Level 3 reset
048: Link number out of range
049: Protocol driver not attached
050: No CSI structure available
051: Level 2 halted
052: Invalid exchange
053: Invalid request descriptor
054: Exchange full
055: No anode
056: Invalid request code
057: Invalid slot
059: Bad font file format
060: Device not a stream
061: No data available
062: Timer expired
063: Out of streams resources
064: Machine is not on the network
065: Package not installed
066: Object is remote
067: Link has been severed
068: Advertise error
069: Srmount error
070: Communication error on send
071: Protocol error
072: Multihop attempted
073: RFS specific error
074: Bad message
075: Value too large for defined data type
076: Name not unique on network
077: File descriptor in bad state
078: Remote address changed
079: Can not access a needed shared library
080: Accessing a corrupted shared library
081: .lib section in a.out corrupted
082: Attempting to link in too many shared libraries
083: Cannot exec a shared library directly
084: Invalid or incomplete multibyte or wide character
085: Interrupted system call should be restarted
086: Streams pipe error
087: Too many users
088: Socket operation on non-socket
089: Destination address required
090: Message too long
091: Protocol wrong type for socket
092: Protocol not available
093: Protocol not supported
094: Socket type not supported
095: Operation not supported
096: Protocol family not supported
097: Address family not supported by protocol
098: Address already in use
099: Cannot assign requested address
100: Network is down
101: Network is unreachable
102: Network dropped connection on reset
103: Software caused connection abort
104: Connection reset by peer
105: No buffer space available
106: Transport endpoint is already connected
107: Transport endpoint is not connected
108: Cannot send after transport endpoint shutdown
109: Too many references: cannot splice
110: Connection timed out
111: Connection refused
112: Host is down
113: No route to host
114: Operation already in progress
115: Operation now in progress
116: Stale NFS file handle
117: Structure needs cleaning
118: Not a XENIX named type file
119: No XENIX semaphores available
120: Is a named type file
121: Remote I/O error
122: Disk quota exceeded
123: No medium found
124: Wrong medium type
125: Operation canceled

Code

#!/usr/bin/perl
#
# print out system error strings

use strict;
use warnings;

my $errText = "";

if(!defined($ARGV[0])) {
    for ($! = 1; $! <= 10000; $!++) {
        $errText = $!;
        chomp($errText);
        if(!($! =~ m/^unknown error/i)) {
            printf("%03d: %s\n", $!, $errText);
        }
    }
}
else {
    $! = $ARGV[0];
    $errText = $!;
    printf("%03d: %s\n", $!, $errText);
}


Leave a Reply