Linux 退出码(Exit Code)范围是 0-255,以下是常见退出码及其含义:
标准退出码
0 - 成功执行
1 - 一般错误(未分类错误)
2 - shell 内置命令使用不当
126 - 命令不可执行(权限问题)
127 - 命令未找到
128 - 无效的退出参数
信号相关退出码 (128+n)
当进程被信号终止时,退出码 = 128 + 信号编号:
130 (128+2) - 被 SIGINT 终止 (Ctrl+C)
137 (128+9) - 被 SIGKILL 终止 (强制杀死)
143 (128+15) - 被 SIGTERM 终止 (优雅终止)
常见系统错误码
64 - 命令行使用错误
65 - 数据格式错误
66 - 无法打开输入文件
70 - 内部软件错误
73 - 无法创建输出文件
74 - I/O 错误
126 - 命令不可执行
127 - 命令未找到
128 - 无效退出参数
Bash 特殊退出码
124 - timeout 命令超时
125 - timeout 命令自身失败
126 - 命令调用但不能执行
127 - 命令未找到
130 - 脚本被 Ctrl+C 终止
137 - 进程被 kill -9 终止
255 - 退出状态超出范围
编程语言常用退出码
3 - 常见于 Java 程序(通常表示异常)
254 - 命令执行失败但退出码为 0-255 之外
日志函数
#!/bin/bash
# 简单日志函数 - 适合快速使用
log() {
local level=$1
shift
local message="$*"
local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
case $level in
I|INFO) echo "[$timestamp] [INFO] $message" ;;
W|WARN) echo "[$timestamp] [WARN] $message" >&2 ;;
E|ERROR) echo "[$timestamp] [ERROR] $message" >&2 ;;
D|DEBUG) echo "[$timestamp] [DEBUG] $message" ;;
S|SUCCESS) echo "[$timestamp] [SUCCESS] $message" ;;
*) echo "[$timestamp] [$level] $message" ;;
esac
}
# 快捷函数
log_info() { log "INFO" "$@"; }
log_warn() { log "WARN" "$@"; }
log_error() { log "ERROR" "$@"; }
log_debug() { log "DEBUG" "$@"; }
log_success() { log "SUCCESS" "$@"; }
log_die() { log "ERROR" "$@"; exit 1; }
带颜色的日志函数
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# 日志函数
log_info() {
echo -e "${BLUE}[$(date '+%Y-%m-%d %H:%M:%S')] [INFO]${NC} $1"
}
log_success() {
echo -e "${GREEN}[$(date '+%Y-%m-%d %H:%M:%S')] [SUCCESS]${NC} $1"
}
log_warning() {
echo -e "${YELLOW}[$(date '+%Y-%m-%d %H:%M:%S')] [WARNING]${NC} $1"
}
log_error() {
echo -e "${RED}[$(date '+%Y-%m-%d %H:%M:%S')] [ERROR]${NC} $1"
}
网友评论