Blog dedicated to Oracle Applications (E-Business Suite) Technology; covers Apps Architecture, Administration and third party bolt-ons to Apps

Friday, October 5, 2007

Unix Exit Codes

"Reserved" Exit Codes

Exit Code NumberMeaningExampleComments
1catchall for general errorslet "var1 = 1/0"miscellaneous errors, such as "divide by zero"
2misuse of shell builtins, according to Bash documentation
Seldom seen, usually defaults to exit code 1
126command invoked cannot execute
permission problem or command is not an executable
127"command not found"
possible problem with $PATH or a typo
128invalid argument to exitexit 3.14159exit takes only integer args in the range 0 - 255
128+nfatal error signal "n"kill -9 $PPID of script$? returns 137 (128 + 9)
130script terminated by Control-C
Control-C is fatal error signal 2, (130 = 128 + 2, see above)
255*exit status out of rangeexit -1exit takes only integer args in the range 0 - 255

According to the table, exit codes 1 - 2, 126 - 165, and 255 [1] have special meanings, and should therefore be avoided as user-specified exit parameters. Ending a script with exit 127 would certainly cause confusion when troubleshooting (is the error a "command not found" or a user-defined one?). However, many scripts use an exit 1 as a general bailout upon error. Since exit code 1 signifies so many possible errors, this might not add any additional ambiguity, but, on the other hand, it probably would not be very informative either.

There has been an attempt to systematize exit status numbers (see /usr/include/sysexits.h), but this is intended for C and C++ programmers. A similar standard for scripting might be appropriate. The author of this document proposes restricting user-defined exit codes to the range 64 - 113 (in addition to 0, for success), to conform with the C/C++ standard. This would allot 50 valid codes, and make troubleshooting scripts more straightforward.



Murali said...

Can i know what could be the code for Warning, as we have exit 0 for normal and 1 for error.. In my case conc pgm is running which is a host executable.... and this script is looking for a files in directory.. if it doesn't see any files...
then conc pgm shud get warned out.

Emil said...

The tables of the Exit Code helps me understand more about the meaning of the code. Thanks for sharing this. I'm looking forward to your next post.

Katie said...

I need information about Unix Exit Codes. I am still getting confused to understand the table above. By the way, is there any more explanation that can ease me to understand it? Thanks.