en
Feedback
LinuxSkill - Сводки с прода и Шпаргалки

LinuxSkill - Сводки с прода и Шпаргалки

Open in Telegram

Следим за новостями Linux, DevOps и ИБ, чтобы быть готовым к любым факапам. Бонусом — плотные шпаргалки и чеклисты для ежедневной работы в терминале. 📩 По всем вопросам: @chorapov Зеркало в MAX: https://max.ru/LinuxSkill РКН https://vk.cc/cMUwm4

Show more

📈 Analytical overview of Telegram channel LinuxSkill - Сводки с прода и Шпаргалки

Channel LinuxSkill - Сводки с прода и Шпаргалки (@linuxskill) in the Russian language segment is an active participant. Currently, the community unites 10 740 subscribers, ranking 11 158 in the Technologies & Applications category and 59 600 in the Russia region.

📊 Audience metrics and dynamics

Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 10 740 subscribers.

According to the latest data from 01 September, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by -51 over the last 30 days and by 0 over the last 24 hours, overall reach remains high.

  • Verification status: Not verified
  • Engagement rate (ER): The average audience engagement rate is 11.69%. Within the first 24 hours after publication, content typically collects 4.80% reactions from the total number of subscribers.
  • Post reach: On average, each post receives 1 256 views. Within the first day, a publication typically gains 516 views.
  • Reactions and interaction: The audience actively supports content: the average number of reactions per post is 3.
  • Thematic interests: Content is focused on key topics such as docker, linux, bash, devops, скрипт.

📝 Description and content policy

The author describes the resource as a platform for expressing subjective opinions:
Следим за новостями Linux, DevOps и ИБ, чтобы быть готовым к любым факапам. Бонусом — плотные шпаргалки и чеклисты для ежедневной работы в терминале. 📩 По всем вопросам: @chorapov Зеркало в MAX: https://max.ru/LinuxSkill РКН https://vk.cc/cMUwm4

Thanks to the high frequency of updates (latest data received on 02 September, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.

10 740
Subscribers
No data24 hours
-167 days
-5130 days
Posts Archive
Как получить длину строковой переменной ${string}?
Anonymous voting

Какая переменная хранит код возврата (exit status) последней выполненной команды?
Anonymous voting

💡 select + dialog: Создаём админ-меню прямо в консоли Хей, гуру Linux-оболочки! Ты тратишь время на медленный Web-GUI для рутинных задач (например, перезапуск служб)? Используй команду select для создания интерактивного TUI-меню.
# 1. Задаем приглашение к вводу (PS3)
PS3='Выберите действие: ' 

# 2. Создаем TUI-меню с помощью select
select ACTION in 'Restart Proxy' 'Check Load' 'Exit'
do
    # Выполняем команду, соответствующую выбору
    case $ACTION in
        'Restart Proxy') 
            # Перезапускаем службу proxy
            systemctl restart proxy.service ;;
        'Check Load') 
            # Проверяем загрузку системы (Load Average)
            uptime ;;
        'Exit') 
            # Выход из цикла
            break ;;
    esac
done
Вывод: select позволяет тебе быстро выбрать и выполнить команду прямо в консоли. #TUI #CLI #Bash #Утилиты

🔥 3 метрики в SSH-баннере: Скрипт для Production Привет, повелитель терминала! Тратить время на ввод uptime и free при каждом SSH-входе, чтобы оценить состояние сервера. Добавь этот динамический скрипт в свой ~/.bashrc (или /etc/profile), и ты получишь мгновенную оценку Load Average, RAM и IP-адреса, используя встроенный документ (here document). ⚙️ Скрипт: Динамический MOTD (Message of the Day) Скрипт использует подстановку команд $(...) (предпочтительная нотация вместо обратных кавычек ` ``) для сбора метрик и форматированный встроенный документ для их вывода.
#!/bin/bash
# -------------------------------------------------------------
# 1. Сбор системных метрик
# -------------------------------------------------------------

# Получаем локальный IP-адрес сервера (первый в списке)
SERVER_IP=$(hostname -I | awk '{print $1}')

# Получаем Load Average за 1 минуту.
# Средняя загрузка (Load Average) — это количество процессов, 
# ожидающих ЦПУ или дискового ввода/вывода. 
# Мы считываем метрики из псевдофайла /proc/loadavg, 
# извлекая первое поле (1-минутное значение).
LOAD_AVG=$(cut -d " " -f1 /proc/loadavg)

# Получаем использованную/общую RAM в "человекочитаемом" виде.
# Используем команду `free` для статистики виртуальной памяти.
# AWK используется для извлечения 3-го и 2-го столбцов строки "Mem:"
RAM_USED_TOTAL=$(free -h | awk '/Mem:/ {print $3 "/" $2}')

# -------------------------------------------------------------
# 2. Вывод баннера с помощью Встроенного Документа (Here Document)
# -------------------------------------------------------------

# Конструкция 'cat << EOF' создает встроенный документ.
# Встроенные документы поддерживают подстановку параметров, если
# ограничитель (EOF) не экранирован.

cat << EOF 

=============================================
 🛡️ SYSTEM HEALTH CHECK | USER: $(whoami)
=============================================
 🚀 Локальный IP:    $SERVER_IP
 ⏱️ Load Average 1m: $LOAD_AVG
 💾 RAM (Used/Total): $RAM_USED_TOTAL
---------------------------------------------

EOF
Вывод: Вставь этот код в конец своего файла ~/.bashrc. Таким образом, ты увидишь здоровье сервера сразу после подключения, не используя команды вроде top или vmstat. Помни, что stat также может давать подробную информацию о файле или каталоге, включая размер, права доступа, и временные метки (доступ, модификация, изменение статуса). #Bash #Скрипты #SSH #CLI #Мониторинг

❓ Контейнеры разрастаются, а инфраструктура уже не поддаётся контролю? 😬 Каждое развертывание — как мини-квест. Отказоустойч
Контейнеры разрастаются, а инфраструктура уже не поддаётся контролю? 😬 Каждое развертывание — как мини-квест. Отказоустойчивость под вопросом, DevOps-циклы затянуты, а масштабирование напоминает ручную магию. Kubernetes вроде бы должен всё решать, но на практике сложностей только больше. 👩‍💻 Онлайн-курс «Инфраструктурная платформа на основе Kubernetes» поможет вам: - Автоматизировать управление контейнерами и масштабирование - Освоить DevOps-подход «инфраструктура как код» - Подготовиться к сертификации CNCF (CKA и CKAD) Практикующие эксперты, актуальная программа, разбор нюансов эксплуатации K8s и бонус: подготовительный курс по Linux. ➡️ Пройдите короткое вступительное тестирование и присоединяйтесь к группе: https://otus.pw/bmFr/ 🎄 Учитесь в новом году по старым ценам! Максимальная скидка 30% на обучение до 21.12.2025: 1 курс — тающая скидка 15% до 21.12 2 курса −25%, 3 курса −30% Учиться системно — выгоднее! Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

🔑 Секрет Satisfy: IP-доступ без пароля для админов Эй, Bash-архитектор! Тебе нужна гибкая аутентификация (IP ИЛИ пароль)? Директива Satisfy any позволяет тебе обходить Basic Auth для внутренних IP, не требуя пароля.
# Конфигурация Nginx/Angie (Location Block)
# Внимание: Basic Auth небезопасна без HTTPS
location /admin/ {
    # 1. Настройка аутентификации
    auth_basic "Restricted Zone";
    auth_basic_user_file /etc/nginx/.htpasswd; 

    # 2. Правила доступа по IP
    allow 192.168.1.10; # Разрешить админу
    deny all;

    # 3. Ключевой хак: достаточно одного условия
    satisfy any;
}
Вывод: Если IP совпадает, сервер не спросит пароль. #Nginx #Хаки #Security #CLI #МиниГайд

🤯 CLI-гайд: 7 команд, которые делают "грязную" работу за тебя Привет, гуру Linux-оболочки! Ты тратишь время на рутину: многострочный поиск, управление ресурсами и сбор метаданных. Эти утилиты позволяют тебе быстро решать сложные задачи, избегая написания длинных скриптов. 1. ⚙️ stat: Вся информация о файле stat выдает подробную и многословную статистику о заданном файле, каталоге или устройстве. Сюда входит тип файла, права доступа, inode, размер и время.
# Получить детальные метаданные о файле
stat /etc/passwd

# Извлечь конкретные данные (например, inode и тип файла)
# -c%i - inode number, -c%F - file type
stat -c%i,%F /etc/passwd
stat используется, чтобы быстро получить всю информацию, включая время последнего доступа (atime), модификации (mtime) или изменения статуса (ctime). 2. 🚀 xargs: Параллельное выполнение команд Используй xargs для передачи аргументов команде из потока ввода (stdin), что особенно полезно, когда список аргументов слишком длинный для обычной подстановки.
# Найти все файлы *.log и удалить их, даже если их миллион
find /var/log/ -name "*.log" -print0 | xargs -0 rm -f

# Найти все .mp3-файлы и вывести их размер (с использованием xargs)
find ~/ -name "*.mp3" -print0 | xargs -0 du -h
xargs разбивает поток данных на достаточно маленькие блоки для обработки, что позволяет тебе ускорить операции с большим количеством файлов. 3. 💾 mktemp: Создание безопасного временного файла Всегда создавай временные файлы с помощью mktemp для обеспечения "уникального" имени файла. Это предотвращает атаки, связанные с гонкой (race condition).
# Создать временный файл в /tmp с уникальным именем
TMP_FILE=$(mktemp)
echo "Рабочие данные" > $TMP_FILE

# После использования, не забудь удалить
rm $TMP_FILE
Когда mktemp вызывается без аргументов, он создает файл нулевой длины в /tmp. 4. 🔗 lsof: Найди, что держит ресурс Если ты не можешь размонтировать файловую систему (umount fails), lsof показывает все открытые файлы и связанные с ними процессы.
# Узнать, какие процессы используют директорию /mnt/data
lsof /mnt/data

# Показать, какие процессы открыли файл /usr/bin/vim
fuser -u /usr/bin/vim
lsof помогает тебе определить, какие файлы все еще открыты, чтобы ты мог безопасно убить соответствующие процессы. 5. 🔑 which, whereis, whatis: Быстрый поиск документации Эти три команды помогают тебе быстро найти исполняемый файл или узнать его назначение, что критически важно при работе в новой системе:
# Показать полный путь к исполняемому файлу (только bin)
which rm 
# Вывод: /usr/bin/rm

# Показать путь к bin, исходникам И man-странице
whereis rm
# Вывод: rm: /bin/rm /usr/share/man/man1/rm.1.bz2

# Получить краткое описание команды из базы данных whatis
whatis whatis
# Вывод: whatis (1) - search the whatis database for complete words
6. 📊 Комбинирование: cut, sort, uniq Используй эти три фильтра вместе для анализа структурированных текстовых файлов или вывода команд (например, /etc/passwd).
# Найти 5 самых популярных оболочек в системе
cut -d':' -f7 /etc/passwd | sort | uniq -c | sort -rn | head -5
# cut -d':' -f7: извлекает поле 7 (оболочку).
# sort: сортирует, чтобы uniq работал.
# uniq -c: подсчитывает последовательные дубликаты.
# sort -rn: сортирует в обратном порядке по числам (самые популярные сверху).
💡 Вывод Эти хаки и утилиты — настоящий золотой фонд командной строки. Используя xargs, stat и связку фильтров (cut, sort, uniq), ты сможешь превратить рутинные задачи в быстрые однострочники. #Шпаргалка #Хаки #CLI #Bash #Скрипт #Утилиты

🔥 Открытый урок «Принцип DRY в GitLab CI: как избавиться от дублирования и навести порядок в пайплайнах». 🗓 18 декабря в 20
🔥 Открытый урок «Принцип DRY в GitLab CI: как избавиться от дублирования и навести порядок в пайплайнах». 🗓 18 декабря в 20:00 МСК 🆓 Бесплатно. Урок в рамках старта курса «CI/CD на основе GitLab». На вебинаре разберем: ✔️Что такое DRY в контексте CI/CD и зачем его применять. ✔️Организация пайплайнов: как структурировать .gitlab-ci.yml, чтобы не утонуть в дублировании. ✔️Include и extends — мощные механизмы переиспользования кода. ✔️ Как создать единые шаблоны пайплайнов для нескольких проектов. ✔️Антипаттерны: что ломает читаемость и поддерживаемость CI-конфигураций. После вебинара вы сможете: - Навести порядок в .gitlab-ci.yml и убрать дублирование шагов. - Создавать гибкие, масштабируемые пайплайны для разных проектов. - Стандартизировать CI/CD-процессы в команде без потери гибкости. 🔗 Ссылка на регистрацию: https://otus.pw/J0v8/ Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

🔧 Multipass: Запусти Ubuntu VM 3 командами (CLI-гайд) Привет, мастер командной строки! Тебе нужна быстрая песочница Ubuntu для тестов? Multipass позволяет тебе запустить VM с предустановленным Docker за минуту. 1. Запуск виртуалки с Docker Используй образ docker и задай имя (например, node1).
# Создаем и запускаем VM с Docker pre-installed
multipass launch docker --name node1
2. Проверка и подключение Убедись, что она запущена, и подключись.
# Проверить статус, имя и IP-адрес VM
multipass ls 

# Подключиться к виртуальной машине (ты войдёшь в неё)
multipass shell node1 

# Выход из сеанса оболочки (без выключения машины)
exit
Вывод: Используя всего три команды (launch, ls, shell), ты можешь получить готовую среду для работы. #Утилиты #CLI #Виртуализация #Multipass

Какая конструкция позволяет использовать значение по умолчанию, если переменная не установлена или пуста?
Anonymous voting

Какой символ используется для обозначения начала комментария в Bash-скрипте (кроме первой строки shebang)?
Anonymous voting

🔥 Load Average: Когда «цифра» значит «Срочно чини!» Привет, системный траблшутер! Как понять, когда Load Average (LA) реально опасен?. Критическая нагрузка — это число ядер твоего ЦПУ. Если LA > NCPU, то пора чинить!
# 1. Узнай свой лимит: Количество логических процессоров (ядер)
# Информация берется из системного псевдофайла
NCPU=$(grep -c '^processor' /proc/cpuinfo) 
echo "Твой лимит (NCPU): $NCPU"

# 2. Проверь текущую среднюю загрузку (за 1, 5, 15 минут)
uptime 
# Load Average включает процессы, ожидающие ЦПУ ИЛИ Disk I/O

# 3. Пример сравнения: если LA за 1 мин выше лимита NCPU
CURRENT_LOAD=$(cat /proc/loadavg | cut -d ' ' -f1)
if (( $(echo "$CURRENT_LOAD > $NCPU" | bc -l) )); then 
    echo "🚨 СЕРВЕР ПЕРЕГРУЖЕН: $CURRENT_LOAD > $NCPU"
fi
Вывод: Если LA стабильно выше числа ядер, система насыщена. #Мониторинг #CLI #LoadAverage #Кейс

❕ Бесплатный вебинар: «GitOps + Flux — ваш путь к автоматизированному деплою в Kubernetes»! Вы хотите развернуть приложение в
Бесплатный вебинар: «GitOps + Flux — ваш путь к автоматизированному деплою в Kubernetes»! Вы хотите развернуть приложение в Kubernetes без тонны ручных команд и нервов? Мечтаете о системе, где код сам «доставляется» в прод по принципу «закоммитил — заработало»? Приглашаем вас на открытый урок в рамках курса «Инфраструктурная платформа на основе Kubernetes, где разберём»: - как перестать вручную деплоить приложения; - как добиться стабильного состояния кластера; - как сделать процессы прозрачными и контролируемыми. 🗓 Когда: 23.12, в 20-00 Для кого: DevOps‑инженеры, разработчики, администраторы Kubernetes, все, кто хочет автоматизировать деплой. На уроке вы узнаете: 💚 Что такое GitOps и почему это новый стандарт работы с Kubernetes. 💚 Как Flux автоматизирует синхронизацию кластера с Git‑репозиторием. 💚Практические примеры настройки Flux для реальных сценариев. 💚Как избежать типичных ошибок при внедрении GitOps. 💚Какие преимущества даёт подход «конфигурация как код». После урока вы сможете: - настроить базовый пайплайн GitOps с Flux; - понять, как интегрировать Flux в существующую инфраструктуру; - оценить, подходит ли GitOps для вашего проекта. ➡️ Регистрирация: https://otus.pw/u7Na/ Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

⚠️ Антигайд: Как ntpdate убивает твой Dovecot и что делать Привет, инженер автоматизации! Ты знал, что NTP-синхронизация может мгновенно "убить" Dovecot? Резкий перевод часов назад приводит к его аварийному завершению. Используй плавную синхронизацию (ntpd/chrony) или перезапускай сервис.
# 1. Если ты используешь ntpdate, Dovecot рухнет (особенно при переводе часов назад)
# Пример опасной команды:
# ntpdate -u pool.ntp.org 

# 2. Правильное действие: останавливаем, синхронизируем, запускаем
sudo systemctl stop dovecot.service 
sudo ntpdate pool.ntp.org 
sudo systemctl restart dovecot.service
Вывод: Перед выполнением ntpdate рекомендуется завершать Dovecot и запускать заново. #Антигайд #Dovecot #NTP #Безопасность #systemd

systemctl – 5 команд, которые должен знать каждый DevOps-инженер Привет, инженер автоматизации! Если ты переходишь с SysVinit на systemd, тебе нужен надёжный командник для быстрого траблшутинга и управления сервисами. Команда systemctl — это твой универсальный диспетчер. Вот 5 ключевых функций, которые ты будешь использовать каждый день. 1. 🔍 Полный статус сервиса Эта команда показывает, активен ли сервис, его PID, потребление ресурсов (CGroup, Memory, CPU) и последние строки логов.
# Получить детальную информацию о веб-сервере Nginx
systemctl status nginx.service
# PID, CGroup, Memory, CPU - важные данные для траблшутинга
2. 🚀 Включение и активация (autostart) systemctl enable создаёт символическую ссылку, чтобы сервис запускался при загрузке системы. Флаг --now сразу запускает его.
# Включить автозапуск SSHD при загрузке и немедленно запустить
sudo systemctl enable --now sshd.service

# Проверить, включен ли сервис для автозапуска
systemctl is-enabled sshd.service 
3. 💾 Применение новой конфигурации без перезапуска Если ты изменил конфигурационный файл (например, /etc/ssh/sshd_config), тебе нужно, чтобы демон перечитал его, не прерывая работу.
# Перезагрузка конфигурации systemd, чтобы обнаружить изменения в юнит-файлах
sudo systemctl daemon-reload
# Перезагрузить конфигурацию самого сервиса (без полного restart)
sudo systemctl reload sshd.service 
4. 📈 Анализ скорости загрузки (Boot Performance) Если система загружается медленно, эта команда покажет тебе, какие юниты (сервисы) потребляют больше всего времени.
# Вывести список процессов, отсортированных по времени запуска
systemd-analyze blame 

# Посмотреть общее время, потраченное на загрузку ядра и userspace
systemd-analyze time 
5. 📜 Просмотр всех файлов юнитов Для DevOps критически важно знать, какие сервисы вообще установлены в системе и в каком они состоянии (включен/выключен).
# Вывести список всех установленных файлов модулей типа service и их состояние (enabled/disabled/static/masked)
systemctl list-unit-files --type=service
💡 Вывод Команда systemctl — это центральный инструмент для твоей работы в Linux. Используя status для детальной проверки, reload для безопасных обновлений и systemd-analyze blame для диагностики, ты можешь эффективно управлять production-средой. #DevOps #systemd #systemctl #CLI #Автоматизация

🔐 Секреты Pro-Docker: 4 хака, которые сделают твои образы в 5 раз меньше Привет, контейнерный гуру! Твои Docker-образы слишком большие и могут нести угрозу безопасности?. Я собрал 4 критически важных приёма для hardening-а и оптимизации, которые должен знать каждый, кто работает с Docker в продакшене. 1. ⚙️ Оптимизация слоёв: Уменьши размер в 71% Каждая инструкция RUN в Dockerfile создает новый уровень (слой), что раздувает конечный размер образа. Чтобы избежать этого, используй оператор && для объединения команд в одну инструкцию RUN.
# ПЛОХО: Создаст 3 слоя
RUN apt-get update
RUN apt-get install -y nodejs
RUN rm -rf /var/lib/apt/lists/*

# ХОРОШО: Создаст 1 слой и уменьшит размер образа
FROM alpine:3.12.0
RUN apk update && \
    apk add --no-cache nodejs npm && \
    rm -rf /var/cache/apk/*
# Используй --no-cache, чтобы не хранить временные файлы
За счет перехода на минимальные базовые образы (например, Alpine) и объединения команд ты можешь уменьшить размер образа на 71%. 2. 🛡 Безопасность: Запуск без root и CAP_DROP Никогда не запускай контейнер с флагом --privileged, так как это равносильно получению прав root на хосте, позволяя, например, смонтировать его корневую ФС. Всегда переключайся на непривилегированного пользователя внутри контейнера.
# Создаем непривилегированного пользователя 'app'
# Используй инструкцию USER, чтобы избежать root
RUN groupadd -r app_grp && useradd -r -g app_grp app
USER app 

# Если нужны только специфические права (например, bind к порту < 1024):
# Сбрось ВСЕ права (--cap-drop all) и добавь только необходимые
docker run --cap-drop ALL --cap-add CAP_NET_BIND_SERVICE alpine sh
Ограничение возможностей (Capabilities) — ключевой принцип безопасности, так как root в Linux — это коллекция возможностей, и Docker позволяет тебе их выборочно отключить. 3. 💾 Очистка: Удали висячий мусор Если ты не удаляешь остановленные контейнеры или висячие образы (dangling images), они будут накапливаться и занимать дисковое пространство.
# Удаление всех остановленных контейнеров
# docker rm $(docker ps -aq -f status=exited)
docker rm $(docker ps -aq) -f

# Удаление всех висячих (без тегов) образов
docker rmi $(docker images -q -f dangling=true)

# Очистка всего Docker-мусора (образов, сетей, контейнеров)
# Используй с осторожностью, это удалит ВСЁ, что не используется
docker system prune -a
Используй docker system prune -a для быстрой очистки, но помни, что тома (volumes) не удаляются автоматически и требуют отдельной очистки, если они не используются. 4. 🧠 Ограничение ресурсов: Защита от DoS-атак Ограничивай использование ресурсов с помощью cgroups, чтобы взломанный контейнер не смог вызвать отказ в обслуживании (DoS), исчерпав память или CPU хоста.
# Ограничение памяти (128 МБ)
# -m 128m задает жесткий лимит, предотвращая OOM на хосте
docker run -it --rm -m 128m my_app

# Ограничение использования CPU (на 2 CPU или 50% CPU-времени)
docker run -it --rm --cpus="2" my_app
# или, используя доли CFS:
docker run -d --name load_high -c 512 amouat/stress
Вывод: Применение этих практик (минимальные образы, непривилегированные пользователи и ограничения ресурсов) — это не просто оптимизация, это создание надёжной архитектуры, которую ты можешь смело развертывать в production. #Docker #DevOps #Security #Hardening #Optimization #CLI #Сборник

🔥 Открытый урок «Terraform: как работать с ним через GitLab». 🗓 11 декабря в 20:00 МСК 🆓 Бесплатно. Урок в рамках старта к
🔥 Открытый урок «Terraform: как работать с ним через GitLab». 🗓 11 декабря в 20:00 МСК 🆓 Бесплатно. Урок в рамках старта курса «CI/CD на основе GitLab». На вебинаре разберем: ✔️ Как использовать Terraform для управления инфраструктурой как кодом (IaC). ✔️ Настройку CI/CD-процессов в GitLab для работы с Terraform. ✔️ Лучшие практики разграничения окружения и управления конфигурацией. Кому будет полезно: - DevOps-лидам, управляющим инфраструктурой и CI/CD. - Архитекторам, разрабатывающим стратегии инфраструктурной автоматизации. - Инженерам, внедряющим Terraform в рабочие процессы. Что вы получите: - Понимание, Terraform-модули для работы через GitLab. - Понимание, настройка и оптимизация пайплайнов CI/CD . - Практические советы по безопасному и эффективному управлению инфраструктурой . 🔗 Ссылка на регистрацию: https://otus.pw/kKbj/ Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

💾 Bash-антигайд: Удаляй tmp-файлы даже после kill -9 Хей, защитник хоста! Если твой скрипт аварийно завершается, временные файлы (/tmp) остаются. Чтобы гарантировать удаление, используй ловушку EXIT.
#!/bin/bash
# Создай уникальное имя для временного файла
TMP_FILE=$(mktemp) 

# 1. Ловушка EXIT (сигнал 0) сработает при ЛЮБОМ выходе
trap "rm -f $TMP_FILE" EXIT

# 2. Здесь идет твой основной код
echo "Лог пишется в $TMP_FILE" >> $TMP_FILE 

# 3. Дополнительно можно перехватить SIGINT (2) и SIGTERM (15)
trap "rm -f $TMP_FILE; exit 1" INT TERM
Вывод: trap...EXIT обеспечивает, что функция очистки выполнится всегда, даже при ошибке. #Bash #Автоматизация #Скрипты #trap #CLI

Как правильно присвоить значение переменной в Bash?
Anonymous voting

🚀 Встречайте новый формат в @Gradeliftbot — Спринт! Хотите проверить свои знания по Linux быстро и эффективно? Теперь в нашем боте доступен режим "Спринт" — 20 случайных вопросов из базы в 1500+ тестов! 👉 Попробовать @Gradeliftbot