Что можно автоматизировать с помощью Bash: реальные сценарии и примеры

Bash остается одним из самых практичных инструментов для автоматизации. Он встроен почти в любую Linux и macOS систему, не требует дополнительной установки и позволяет решать широкий спектр задач, от простой обработки файлов до полноценного деплоя приложений.

Разберем реальные сценарии, с которыми сталкиваются разработчики, системные администраторы и DevOps-инженеры.

Автоматическое резервное копирование проекта

Одна из самых частых задач это создание бэкапов. Например, нужно ежедневно сохранять копию проекта и базы данных.

Пример скрипта:

#!/bin/bash

PROJECT_DIR="/var/www/app"
BACKUP_DIR="/var/backups/app"
DATE=$(date +%F_%H-%M)

mkdir -p "$BACKUP_DIR/$DATE"

# Копируем файлы проекта
rsync -a --delete "$PROJECT_DIR/" "$BACKUP_DIR/$DATE/files/"

# Делаем дамп базы данных
mysqldump -u root -pYourPassword app_db > "$BACKUP_DIR/$DATE/db.sql"

echo "Backup completed at $DATE"

Такой скрипт можно повесить на cron и выполнять автоматически раз в сутки.

Автоматический деплой на сервер

Bash часто используют для упрощения деплоя. Вместо ручного выполнения десятка команд можно запустить один скрипт.

Пример для Laravel-проекта:

#!/bin/bash

echo "Pulling latest changes..."
git pull origin main

echo "Installing dependencies..."
composer install --no-dev --optimize-autoloader

echo "Running migrations..."
php artisan migrate --force

echo "Clearing cache..."
php artisan config:clear
php artisan cache:clear
php artisan route:clear

echo "Deployment completed"

Теперь деплой это одна команда:

./deploy.sh

Мониторинг доступности сервиса

Предположим, нужно проверять, работает ли API, и перезапускать сервис при сбое.

#!/bin/bash

URL="http://localhost:8000/health"
SERVICE="myapp"

STATUS=$(curl -s -o /dev/null -w "%{http_code}" $URL)

if [ "$STATUS" != "200" ]; then
  echo "Service is down. Restarting..."
  systemctl restart $SERVICE
else
  echo "Service is healthy"
fi

Скрипт можно запускать каждые 5 минут через cron.

Обработка CSV перед загрузкой в базу

Bash удобен для быстрой обработки данных. Например, есть CSV-файл, где нужно удалить пустые строки и отсортировать данные по первому столбцу:

cat data.csv | grep -v '^$' | sort -t',' -k1,1 > cleaned.csv

Если нужно выбрать только определенные столбцы:

awk -F',' '{print $1","$3}' data.csv > selected_columns.csv

Такие операции часто используют перед импортом в MySQL или PostgreSQL.

Очистка логов старше 14 дней

Серверы постепенно заполняются логами. Их можно автоматически удалять:

find /var/log/myapp -type f -mtime +14 -delete

Это освобождает место на диске без ручного вмешательства.

Массовое переименование файлов

Например, нужно добавить текущую дату ко всем файлам в папке:

for file in *.jpg; do
  mv "$file" "$(date +%F)_$file"
done

Или изменить расширение:

for file in *.txt; do
  mv "$file" "${file%.txt}.md"
done

Проверка свободного места на диске

Можно сделать простой скрипт с уведомлением:

#!/bin/bash

THRESHOLD=80
USAGE=$(df / | awk 'NR==2 {print $5}' | sed 's/%//')

if [ "$USAGE" -gt "$THRESHOLD" ]; then
  echo "Disk usage is above $THRESHOLD%"
fi

Такой скрипт легко расширяется отправкой email или уведомлением в Telegram.

Работа с Docker

Bash часто используется для управления контейнерами.

Перезапуск всех контейнеров:

docker restart $(docker ps -q)

Очистка неиспользуемых образов:

docker image prune -f

Автоматизированный запуск окружения:

#!/bin/bash

docker-compose down
docker-compose pull
docker-compose up -d

Простейшая интерактивная утилита

Bash поддерживает ввод от пользователя.

#!/bin/bash

echo "Enter your name:"
read NAME

if [ -z "$NAME" ]; then
  echo "Name cannot be empty"
else
  echo "Hello, $NAME"
fi

Даже такие простые сценарии полезны для внутренних CLI-инструментов.

Когда Bash особенно уместен

Bash подходит, если нужно:

  • автоматизировать повторяющиеся серверные задачи

  • объединить несколько CLI-команд в один сценарий

  • быстро обработать текстовые данные

  • настроить cron-задачи

  • управлять инфраструктурой

Если логика становится сложной, появляется работа с API, сложная валидация данных или высокая нагрузка, тогда разумнее перейти на Python, Go или другой язык. Но для системных задач Bash остается быстрым и эффективным инструментом.

Bash — это не просто терминальные команды, а полноценный инструмент автоматизации. Он помогает экономить время, снижать количество ошибок и стандартизировать процессы.

Во многих случаях достаточно 10-20 строк скрипта, чтобы заменить рутинную ручную работу.

Комментарии (0)

Войдите, чтобы оставить комментарий

Похожие статьи

Как создать нового пользователя в MySQL и выдать ему права

Подробное руководство по созданию пользователей в MySQL и управлению их правами доступа. В статье разобраны команды CREATE USER, GRANT, REVOKE, примеры настройки аутентификации и типичные ошибки при работе с правами.

Оптимизация Laravel-приложений с Octane

Полное руководство по Laravel Octane: от базовой концепции до настройки, особенностей и сравнения с классическим подходом. Узнайте, как Octane ускоряет Laravel-приложения и когда его стоит использовать.