LinuxSkill - Сводки с прода и Шпаргалки
Следим за новостями Linux, DevOps и ИБ, чтобы быть готовым к любым факапам. Бонусом — плотные шпаргалки и чеклисты для ежедневной работы в терминале. 📩 По всем вопросам: @chorapov Зеркало в MAX: https://max.ru/LinuxSkill РКН https://vk.cc/cMUwm4
显示更多📈 Telegram 频道 LinuxSkill - Сводки с прода и Шпаргалки 的分析概览
频道 LinuxSkill - Сводки с прода и Шпаргалки (@linuxskill) 俄语 语言赛道中的 是活跃参与者。目前社区聚集了 10 743 名订阅者,在 技术与应用 类别中位列第 11 101,并在 俄罗斯 地区排名第 59 272 位。
📊 受众指标与增长动态
自 невідомо 创建以来,项目保持高速增长,吸引了 10 743 名订阅者。
根据 31 八月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 -51,过去 24 小时变化为 -5,整体触达仍然可观。
- 认证状态: 未认证
- 互动率 (ER): 平均受众互动率为 11.78%。内容发布后 24 小时内通常能获得 4.80% 的反应,占订阅者总量。
- 帖子覆盖: 每篇帖子平均可获得 1 265 次浏览,首日通常累积 516 次浏览。
- 互动与反馈: 受众积极参与,单帖平均反应数为 4。
- 主题关注点: 内容集中在 docker, linux, bash, devops, скрипт 等核心主题上。
📝 描述与内容策略
作者将该频道定位为表达主观观点的平台:
“Следим за новостями Linux, DevOps и ИБ, чтобы быть готовым к любым факапам.
Бонусом — плотные шпаргалки и чеклисты для ежедневной работы в терминале.
📩 По всем вопросам: @chorapov
Зеркало в MAX: https://max.ru/LinuxSkill
РКН https://vk.cc/cMUwm4”
凭借高频更新(最新数据采集于 01 九月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。
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 #Утилиты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 #Мониторинг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 #МиниГайд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 #Скрипт #Утилиты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# 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 #Кейс# 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 #Безопасность #systemdsystemctl – 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 #Автоматизация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 #Сборник/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