Linux 退出码

2025-12-09  本文已影响0人  Joening

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"
}
上一篇 下一篇

猜你喜欢

热点阅读