👁 Часто в скриптах или при ручном запуске сервисов нужно выполнить команду в фоне, видеть её вывод в терминале и сохранять результат в файл. А ещё неплохо бы сохранять старые логи и не затирать их при повторном запуске.
📝 Вот улучшенный Bash-хак:
run_bg() {
cmd_name=$(basename "$1")
timestamp=$(date +%Y%m%d_%H%M%S)
logfile="${cmd_name}_${timestamp}.log"
mkdir -p logs
{ "$@" 2>&1 | tee "logs/$logfile"; } &
pid=$!
echo "[$(date)] Started '$*' in background (PID $pid)"
echo "Logging to logs/$logfile"
}🔎 Использование:
run_bg python3 my_server.py --debug run_bg go run app.go
📌 Что делает:
- Извлекает имя команды и добавляет к лог-файлу timestamp
- Создаёт папку
logs/, если её нет - Запускает команду в фоне (
&) - Вывод команды (
stdout + stderr) дублируется в терминал и в лог черезtee - PID процесса показывается в терминале для отслеживания или остановки
❗️ Такой трюк особенно полезен в dev-окружениях, для запуска фоновых задач, сервисов и тестов. Всё логируется, не затирается, удобно отслеживать и анализировать. Работает в Linux и macOS, нужен только Bash и tee.
tags: #bash #разработка #логирование
❤️ @recura_tech



