Ответ
Exit-коды (коды возврата) — это стандартный механизм в Linux для передачи результата выполнения процесса. Я активно использую их в скриптах автоматизации и CI/CD пайплайнах для контроля потока выполнения.
Основные коды и их значение:
- 0: Успешное завершение. Это сигнал для следующей команды в пайплайне (
&&) о том, что можно продолжать. - 1: Общая ошибка или неуспешное завершение (например, сбой в пользовательском скрипте).
- 2: Неправильное использование встроенной команды shell (например, неверный аргумент).
- 126: Команда найдена, но не является исполняемой (проблема с правами
chmod +x). - 127: Команда не найдена (
command not found). - 130 (128+2): Процесс завершен сигналом
SIGINT(обычно Ctrl+C). - 137 (128+9): Процесс принудительно убит сигналом
SIGKILL(kill -9). - 143 (128+15): Процесс корректно завершен сигналом
SIGTERM(стандартный сигналkill).
Практическое использование в скриптах:
#!/bin/bash
# Пример скрипта деплоя с проверкой кодов возврата
echo "Запуск сборки..."
if ! docker build -t myapp:latest .; then
echo "[ERROR] Сборка Docker-образа завершилась с кодом $?. Прерывание."
exit 1 # Возвращаем свой код ошибки для пайплайна
fi
echo "Пуш образа в registry..."
docker push myapp:latest
# Если push упадет, его exit code !=0 прервет скрипт из-за настроенного 'set -e'
echo "[SUCCESS] Все шаги выполнены."
exit 0
В CI/CD (например, GitLab CI) проверка $? позволяет реализовать сложную логику: продолжить при определенных ошибках или остановить пайплайн.