Профилирование Bash-скриптов с помощью set -x и time

Практические лайфхаки для разработчиков, DevOps и админов: Docker, Linux, Bash, Python, Golang, Ansible, логи и безопасность — только рабочие решения. Даем готовые команды, конфиги и приёмы диагностики, которые экономят часы и дни. Если нужно быстро настроить, отладить и обезопасить инфраструктуру — вы по адресу.

bashпрофилированиеset -x

👁 Профилирование Bash-скриптов может помочь тебе найти узкие места в коде и ускорить его выполнение. В отличие от языков высокого уровня, где есть встроенные профилировщики, Bash не предоставляет таких инструментов «из коробки», но ты можешь использовать встроенные возможности командной оболочки.

📝 Пример кода:

#!/bin/bash
set -x  # Включаем трассировку команд

start_time=$(date +%s)  # Записываем время начала

# Пример ресурсоемкой операции
sleep 2
echo "Hello, World!"

end_time=$(date +%s)  # Записываем время окончания
execution_time=$((end_time - start_time))  # Разница во времени
echo "Execution time: ${execution_time} seconds."

set +x  # Отключаем трассировку

📌 Как это работает:

  • set -x включает трассировку команд. Это позволяет отслеживать каждую выполняемую команду в скрипте, что полезно для отладки
  • date +%s получает текущие время в формате Unix timestamp (в секундах)
  • Используя sleep 2, симулируется длительная операция, а затем выводится её время выполнения
  • Разница между временем начала и окончания выполнения позволяет узнать точное время работы скрипта

❗️ Использование этих команд в реальных проектах помогает оптимизировать работу с ресурсоемкими задачами в скриптах и улучшить скорость их выполнения.

tags: #bash #полезно #логирование

❤️ @recura_tech

Скриншот тёмной темы с примером Bash-скрипта: включена трассировка set -x, измерение времени через date +%s и логотип RECURA.
Скриншот примера скрипта с трассировкой и измерением времени выполнения.

Читайте так же