Linux Bites
15 subscribers
10 photos
1 link
Linux Bites — это место, где Linux становится проще и интереснее.
Download Telegram
🧰 Стандартные инструменты для диагностики в Linux

Если вы работаете с серверами, пишете код или просто хотите понимать, что творится в системе — знание диагностических утилит спасёт вас не раз.

Основные категории и популярные инструменты:

🔩 Ядро

- perf — профайлинг ядра и приложений
- ftrace — трассировка функций внутри ядра
- stap — скриптовый анализ системы (SystemTap)
- lttng — мощный трейсер ядра и приложений
- bcc/BPF — современный подход к трассировке и манипуляциям в ядре

💾 Ввод/вывод

- iostat — статистика дисковых операций
- pidstat — нагрузка по процессам (I/O, CPU, память)
- pcstat — использование файлового кэша
- lsof — список открытых процессом файлов
- blktrace — детальная трассировка блочных устройств

🧵 Системные и библиотечные вызовы

- strace — отслеживание системных вызовов
- ltrace — отслеживание библиотечных вызовов

⚙️ Аппаратные счётчики

- tiptop — данные о процессах с аппаратных счетчиков
- numastat — статистика NUMA-памяти

🌐 Сеть

- netstat — классика: сокеты, порты, маршруты
- ss — более быстрая замена netstat
- ethtool — управление и диагностика сетевых интерфейсов
- snmpget — сбор данных через SNMP
- lldptool — информация LLDP о соседях в сети
- nicstat / ifstat — статистика сетевого трафика
- ip — управление сетью и маршрутизацией

🧑‍💻 Процессы

- top / htop — активные процессы
- vmstat — виртуальная память
- free — информация о свободной и занятой памяти
- slabtop — статистика SLAB-кэша

🧠 Процессор

- mpstat — загрузка CPU по ядрам
- turbostat — частота, питание, температура
- rdmsr — чтение из внутренних регистров процессора

🧪 Универсальные

- sar — сводка активности системы за период
- dstat — объединяет iostat, vmstat и другие
- dmesg — логи ядра с момента загрузки
- /proc — псевдо-ФС с данными ядра
- sysdig — мощный инструмент анализа всей системы

#Linux #Sysadmin #DevOps #Инфраструктура #ДиагностикаСистемы #perf #ftrace #stap #bcc #BPF #strace #tcpdump #Wireshark #htop #sar #dstat #LinuxTools #ITРоссии
🧰 Самые популярные команды Linux (для новичков и не только)

Если вы делаете первые шаги в Linux или часто работаете с серверами — эта шпаргалка для вас.
Вот список самых востребованных команд в повседневной работе.

🔍 Работа с файлами и папками

- ls — посмотреть содержимое каталога
- cd — перейти в нужную папку
- pwd — узнать текущий путь
- mkdir — создать директорию
- touch — создать пустой файл
- cp — скопировать файл или папку
- mv — переместить или переименовать
- rm — удалить файл (rm -r — удалить папку)
- cat — посмотреть содержимое файла
- nano или vim — открыть текстовый редактор в терминале

🛡 Управление правами

- chmod — изменить права доступа к файлу
- chown — изменить владельца файла
- su — переключиться на другого пользователя
- sudo — выполнить команду от имени суперпользователя

💻 Система и процессы

- top или htop — посмотреть загрузку системы и процессы
- ps — список активных процессов
- kill или pkill — остановить процесс
- df — проверить свободное место на дисках
- du — узнать размер файлов и папок
- free — информация о памяти
- uptime — время работы системы

🌐 Работа с сетью

- ping — проверить соединение с адресом
- ifconfig или ip a — посмотреть информацию о сетевых интерфейсах
- curl и wget — загрузить данные из интернета
- ssh — подключиться к удалённому серверу
- scp — передать файлы между устройствами через SSH

🔍 Поиск и сравнение

- find — найти файлы по заданным условиям
- grep — искать текст внутри файлов
- diff — сравнить два файла

💡 Совет: сохраните этот список — он станет вашим быстрым гидом по Linux.

#Linux #КомандыLinux #Terminal #Sysadmin #DevOps #Ubuntu #Debian #НачинающийАйтишник #ITРоссии #Bash #Shell #LinuxTips #Sysadmin
🔐 chattr в Linux: как защитить файлы от изменений

Иногда нужно надёжно защитить файл от случайного удаления, редактирования или перезаписи. Для этого в Linux есть мощный инструмент — chattr.

🧰 Что такое chattr?

chattr (change attribute) — команда, которая позволяет устанавливать специальные атрибуты файлов в файловой системе ext* (ext2/ext3/ext4).

Атрибуты работают даже если права доступа разрешают запись!

🔐 Полезные атрибуты:

+i - Файл неизменяемый: нельзя редактировать, удалять, переименовывать даже root
+a - Только добавление: можно дописывать данные, но нельзя менять существующие
+s - При удалении данные стираются насовсем (secure deletion)
+u - Сохраняет удалённое содержимое (undelete)

📌 Примеры использования:

🚫 Сделать файл неизменным:
sudo chattr +i filename


📎 Разрешить только добавление данных:
sudo chattr +a logfile.log


🔍 Посмотреть текущие атрибуты:
lsattr filename


🗑 Убрать защиту:
sudo chattr -i filename


💡 Когда использовать?

- Защита важных файлов от удаления/изменения
- Блокировка правки конфигов (например, /etc/passwd)
- Логирование только на добавление (лог-файлы)
- Безопасная очистка (secure delete)

⚠️ Важно:
Для изменения атрибутов нужны права root.

#Linux #chattr #ФайловаяСистема #Безопасность #Sysadmin #DevOps #ЗащитаДанных #LinuxTips #ITРоссии #LinuxTools #ITРоссии
🐳 Docker Compose: простой способ запуска контейнеров

Docker Compose — это инструмент для определения и запуска многоконтейнерных приложений Docker. Он упрощает управление несколькими сервисами через один YAML-файл.

📥 Установка Docker Compose

sudo apt update && sudo apt install docker-compose

Или скачайте последнюю версию:
sudo curl -L "https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose


Проверьте установку:
docker-compose --version


📄 Файл docker-compose.yml

Пример минимального файла:

version: '3'
services:
web:
image: nginx
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html


С помощью этого файла запустится Nginx, который будет отдавать файлы из локальной папки html.

▶️ Основные команды

- Запуск контейнеров:

  docker-compose up -d


- Остановка:

  docker-compose down


- Просмотр логов:

  docker-compose logs -f


- Пересоздание образов:

  docker-compose build


- Посмотреть запущенные сервисы:

  docker-compose ps


💡 Зачем использовать?

- Удобное управление несколькими контейнерами
- Простая настройка портов, томов, сетей
- Легко делиться конфигурацией с командой
- Подходит для dev-окружений и прототипов

#Docker #DockerCompose #DevOps #Контейнеризация #Linux #LinuxTips #LinuxBites #Sysadmin #Nginx #ITРоссии #Cloud #Backend
🧪 Docker Compose: Примеры простых проектов для старта
Практика — лучший способ освоить Docker Compose!
Разберём 5 реальных примеров, которые можно запустить за 5 минут. Копируйте код, экспериментируйте, адаптируйте под свои задачи.

🌐 1. Nginx + Статический сайт
Задача: Развернуть веб-сервер с вашим HTML/CSS.
Как:
1. Создайте папку my-site и положите туда HTML-файлы.
2. Добавьте docker-compose.yml:
services:
web:
image: nginx
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html


3. Запустите: docker-compose up. Откройте браузер → localhost:8080.

#Docker #Nginx #WebDev #DevOps

🐍 2. Python + PostgreSQL
Задача: Запуск Python-приложения с базой данных.
Как:
1. В docker-compose.yml добавьте:
services:
app:
build: .
ports:
- "5000:5000"
environment:
- DB_HOST=db
db:
image: postgres
environment:
- POSTGRES_USER=admin
- POSTGRES_PASSWORD=secret


2. Убедитесь, что в папке есть Dockerfile для Python (например, с Flask или FastAPI).
3. Запустите: docker-compose up --build.

#Python #PostgreSQL #Backend #DockerCompose

🧱 3. Node.js + MongoDB
Задача: API на Node.js с подключением к MongoDB.
Как:
1. docker-compose.yml:
services:
node-app:
build: .
ports:
- "3000:3000"
environment:
- MONGO_URI=mongodb://mongo:27017/test
mongo:
image: mongo
ports:
- "27017:27017"


2. В Dockerfile опишите сборку Node-приложения.
3. Запустите: docker-compose up.

#NodeJS #MongoDB #APIdev #DevOps

🧾 4. WordPress + MySQL
Задача: Быстро развернуть блог или сайт на WordPress.
Как:
1. docker-compose.yml:
services:
wordpress:
image: wordpress
ports:
- "8000:80"
environment:
- WORDPRESS_DB_HOST=mysql
- WORDPRESS_DB_USER=admin
- WORDPRESS_DB_PASSWORD=secret
mysql:
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD=secret
- MYSQL_DATABASE=wordpress


2. Запустите: docker-compose up. Перейдите на localhost:8000 и завершите установку WordPress.

#WordPress #MySQL #CMS #Docker

🧩 5. React Frontend + Express Backend
Задача: Full-stack приложение с фронтендом и бэкендом.
Как:
1. docker-compose.yml:
services:
frontend:
build: ./frontend
ports:
- "3000:3000"
backend:
build: ./backend
ports:
- "5000:5000"
environment:
- API_URL=http://backend:5000


2. Убедитесь, что в папках frontend и backend есть свои Dockerfile.
3. Запустите: docker-compose up --build.

#React #Express #FullStack #CloudDev

💡 Попробуйте любой пример!
Копируйте код, измените под свои нужды, запустите и убедитесь, как легко управлять микросервисами через Docker Compose.

#DockerCompose #DevOps #Cloud #Tech
🧩 Docker Compose: React Frontend + Express Backend в одном посте

Создайте full-stack приложение за 10 минут!
Разберём, как связать React (фронт) и Express (бэк) через Docker Compose.


Структура проекта:
my-app/  
├── frontend/ # React-приложение
└── backend/ # Express API


Что сделаем:
1. Создадим Dockerfile для React и Express.
2. Настроим docker-compose.yml для связи сервисов.
3. Запустим всё одной командой.

🧱 Dockerfile для React
В папке frontend/:
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]

Что делает:
- Берёт Node.js образ.
- Устанавливает зависимости.
- Запускает React-приложение на порту 3000.

🧱 Dockerfile для Express
В папке backend/:
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 5000
CMD ["node", "server.js"]

Что делает:
- Использует тот же Node.js образ.
- Запускает Express API на порту 5000.

🧪 docker-compose.yml
В корне проекта:
version: '3.8'
services:
frontend:
build: ./frontend
ports:
- "3000:3000"
environment:
- API_URL=http://backend:5000
backend:
build: ./backend
ports:
- "5000:5000"
environment:
- PORT=5000

Важно:
- http://backend:5000 — адрес бэкенда для фронтенда (через внутреннюю сеть Docker).

🚀 Запуск и проверка
1. Перейдите в корень проекта и выполните:
docker-compose up --build

2. Откройте браузер:
- Frontend: http://localhost:3000
- Backend: http://localhost:5000/api/hello

Если всё работает:
- Фронтенд получает данные от бэкенда через http://backend:5000.

⚠️ Распространённые ошибки
1. CORS:
- Добавьте cors() в Express:
     const cors = require('cors');
app.use(cors({ origin: 'http://frontend:3000' }));

2. Пути к файлам:
- Убедитесь, что COPY . . в Dockerfile копирует нужные файлы.
3. Сеть:
- Проверьте, что бэкенд доступен по http://backend:5000 (имя сервиса из docker-compose.yml).

💡 Советы для продвинутых:
- Используйте .dockerignore, чтобы исключить node_modules.
- Добавьте volumes для горячей перезагрузки:
  volumes:
- ./frontend:/app

- Разделите docker-compose.dev.yml и docker-compose.prod.yml для разных сред.

Попробуйте запустить проект!
Копируйте код, адаптируйте под себя и экспериментируйте.

#Docker #React #Express #DevOps #DockerCompose #FullStack
👍1
🛠 Оптимизация `.bashrc`: Как сделать терминал быстрее и удобнее
Ваш `.bashrc` — это секретное оружие в бою с хаосом в терминале.
Научитесь оптимизировать его за 5 шагов!

💡 1. Алиасы: Меньше слов, больше дела
Создавайте короткие команды для частых задач.
Пример:
alias ll='ls -la'
alias update='sudo apt update && sudo apt upgrade -y'
alias glog='git log --oneline'


Результат:
- Быстрее пишете команды.
- Не запоминаете сложные конструкции.

🔁 2. Функции: Повторяй меньше, делай больше
Замените часто используемые скрипты на функции.
Пример:
function mkcd() {
mkdir -p "$1" && cd "$1"
}


Как использовать:
mkcd my_new_folder  # Создаст папку и сразу перейдет в неё!


🗂 3. Организация: Делите на секции
Разделите .bashrc на блоки для удобства.
Пример структуры:
# === Aliases ===
alias ll='ls -la'

# === Git ===
alias glog='git log --oneline'

# === Functions ===
function mkcd() { ... }

# === Environment ===
export PATH="$HOME/.local/bin:$PATH"


Плюс: Легко находите нужное, не теряетесь в коде.

⚡️ 4. Ускорьте загрузку терминала
Избегайте тяжёлых команд при старте.
Советы:
- Используйте [[ -x "$(command -v git)" ]] && alias glog='...' — проверка существования программы.
- Отключайте ненужные функции/алиасы.
- Не запускайте сторонние скрипты без необходимости.

🎨 5. Цвета и подсказки: Сделайте терминал красивым
Добавьте цвета и полезную информацию в строку ввода.
Пример:
PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '


Что получите:
- Удобные подсказки (цвета, имя пользователя, путь).
- Меньше ошибок при работе в разных директориях.

🧹 6. Чистка и резервные копии
- Удалите дубликаты и неиспользуемые команды.
- Сохраните резервную копию:

  cp ~/.bashrc ~/.bashrc_backup


- Автоматизируйте обновление:
Добавьте в .bashrc автозапуск source ~/.bashrc после сохранения:

  alias reload='source ~/.bashrc'


Итог
Оптимизированный `.bashrc` — это:
- Быстрый старт терминала.
- Удобство работы.
- Меньше ошибок.

Попробуйте!
Копируйте примеры, адаптируйте под себя и наслаждайтесь улучшенным workflow.

#Bash #Linux #Terminal #DevOps #Productivity #Optimization #Linuxtips #Bashscripting #Devlife #Hackerlife #Sysadmin 🚀
🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
⚙️ Устаревшие команды Linux и их современные аналоги

Время меняется, и даже в мире Linux некоторые команды устаревают.
Разберём 10 устаревших команд и их современные замены, чтобы вы могли работать быстрее и эффективнее.

🧹 1. `ifconfig` → `ip`
Зачем менять? ifconfig устарел, а ip — часть пакета iproute2, поддерживающего современные сети.
Пример:
# Вывод информации о интерфейсах
ip addr show # Вместо ifconfig
# Включение/выключение интерфейса
ip link set eth0 up # Вместо ifconfig eth0 up


🌐 2. `netstat` → `ss` или `ip`
Зачем менять? netstat медленнее и не поддерживает современные протоколы.
Пример:
# Показать все TCP-соединения
ss -tuln # Вместо netstat -tuln
# Статистика сетевых интерфейсов
ip -s link # Вместо netstat -i


📊 3. `ps aux` → `top` или `htop`
Зачем менять? htop — интерактивный и визуально удобный аналог.
Пример:
htop  # Вместо ps aux
# Если htop не установлен:
sudo apt install htop


⏱️ 4. `uptime` → `w` или `who`
Зачем менять? Показывает больше информации о текущих пользователях.
Пример:
w  # Покажет загрузку системы и активных пользователей
who # Только список пользователей


🛜 5. `nm-tool` / `iwconfig` → `nmcli`
Зачем менять? NetworkManager управляет сетью через nmcli.
Пример:
# Список подключений
nmcli connection show
# Подключение к Wi-Fi
nmcli device wifi connect "Имя_сети" password "Пароль"


📡 6. `arp` → `ip neigh` или `arping`
Зачем менять? arp устарел, а ip neigh работает с IPv6.
Пример:
ip neigh  # Просмотр ARP-таблицы
arping -I eth0 -c 3 192.168.1.1 # Проверка доступности хоста


🚦 7. `route` → `ip route`
Зачем менять? ip route поддерживает современные маршрутизаторы.
Пример:
ip route show  # Вместо route -n
ip route add 192.168.2.0/24 via 192.168.1.1 # Добавление маршрута


📈 8. `watch ifconfig` → `watch -n 1 ip addr` или `nethogs`
Зачем менять? nethogs показывает трафик по процессам.
Пример:
# Мониторинг сетевых интерфейсов
watch -n 1 ip addr show
# Трафик по процессам
sudo nethogs eth0


📋 9. `last` → `journalctl` (для systemd)
Зачем менять? journalctl хранит логи в бинарном формате.
Пример:
journalctl -b -1  # Логи предыдущей сессии (вместо last reboot)


🗂 10. `fdisk` → `parted` или `gdisk`
Зачем менять? parted поддерживает GPT, а gdisk — безопасную работу с дисками.
Пример:
parted /dev/sda print  # Информация о разделах
gdisk /dev/sda # Для создания GPT-разделов


Итог
Современные аналоги:
- Быстрее, мощнее, поддерживают новые стандарты.
- Интегрируются с systemd, IPv6, GPT.

Обновляйте свои скрипты и привычки!
Linux развивается — не отставайте! 🚀

#Linux #DevOps #SysAdmin #Terminal #Productivity #LinuxBites #Terminal #Bash 🔧
🔥1
🧱 Что такое LVM в Linux?

LVM (Logical Volume Manager) — это гибкая система управления дисками в Linux.
Позволяет объединять физические диски в пулы и создавать логические тома, которые можно легко расширять, сжимать и резервировать.

🔧 Основные понятия:

🔹 PV (Physical Volume) — физический диск или раздел
🔹 VG (Volume Group) — пул из одного или нескольких PV
🔹 LV (Logical Volume) — логический том, как обычный раздел

📌 Представьте: вы купили ещё диск — и просто добавили его в общий "резервуар" свободного места.

💡 Преимущества LVM:

Гибкое управление дисками
Возможность увеличения/уменьшения томов
Снапшоты для бэкапов и тестирования
Объединение дисков разных размеров и типов

🛠 Пример использования:

1. Создаем Physical Volume:

   pvcreate /dev/sdb /dev/sdc


2. Создаем Volume Group:

   vgcreate vg_data /dev/sdb /dev/sdc


3. Создаем Logical Volume:

   lvcreate -L 20G -n lv_home vg_data


4. Форматируем и монтируем:

   mkfs.ext4 /dev/vg_data/lv_home
mount /dev/vg_data/lv_home /home


🔁 Расширить LV? Легко!

lvextend -L +5G /dev/vg_data/lv_home
resize2fs /dev/vg_data/lv_home


(В новых версиях xfs_growfs, если файловая система XFS)

💡 Используйте LVM, если:
- Нужно гибко управлять дисками
- Хотите без перезагрузок менять размер разделов
- Делаете снапшоты для бэкапов или тестовой среды

#Linux #LVM #Sysadmin #DevOps #Хранилище #ДисковоеУправление #ITРоссии #ФайловыеСистемы #Storage #VG #LV #PV
🔥1
📌 Шпаргалка по команде ip в Linux — быстро и понятно 🐧

Команда ip — это мощный инструмент для настройки сетевых интерфейсов, маршрутов и туннелей в Linux. Она заменила устаревшие ifconfig, route и arp. Ниже приведена удобная шпаргалка с часто используемыми командами ip.

🖥 Просмотр информации

ip a
# или
ip addr show

Показывает информацию обо всех сетевых интерфейсах (IP-адреса, MAC и т.д.)

ip link show

Отображает статус физических и виртуальных сетевых интерфейсов

ip -4 a

Показать только IPv4-адреса

ip -6 a

Показать только IPv6-адреса

🛠 Управление интерфейсами

ip link set dev eth0 up

Включить интерфейс eth0

ip link set dev eth0 down

Выключить интерфейс eth0

ip addr add 192.168.1.100/24 dev eth0

Назначить IP-адрес интерфейсу

ip addr del 192.168.1.100/24 dev eth0

Удалить IP-адрес у интерфейса

🌐 Маршруты и таблицы маршрутизации

ip route show

Показать таблицу маршрутизации

ip route add 192.168.2.0/24 via 192.168.1.1

Добавить маршрут через шлюз

ip route del 192.168.2.0/24

Удалить маршрут

ip route flush cache

Очистить кэш маршрутов

📦 ARP и соседи

ip neigh show

Показать ARP-таблицу (кэш соседей)

ip neigh add 192.168.1.50 lladdr 00:11:22:33:44:55 dev eth0 nud permanent

Добавить статическую ARP-запись

ip neigh del 192.168.1.50 dev eth0

Удалить ARP-запись

🧪 Примеры использования

Проверить IP и статус интерфейсов:
ip a


Включить Wi-Fi интерфейс:
ip link set dev wlan0 up


Добавить адрес и проверить:
ip addr add 10.0.0.1/24 dev eth0
ip a show eth0


💡 Полезные советы

🔹 Используйте tab для автодополнения команд
🔹 Добавляйте sudo перед командой, если нужны права root
🔹 Команды ip можно использовать в скриптах для автоматизации

🔚 Заключение

Команда ip — незаменимый инструмент для любого системного администратора и DevOps-инженера. Знание её базовых возможностей позволяет быстрее диагностировать и исправлять сетевые проблемы.

Сохраните эту шпаргалку себе в закладки! 📚
И не забудьте поделиться с коллегами 👨‍💻👩‍💻


#Linux #Network #Shell #Terminal #SysAdmin #DevOps #Терминал #Команды #LinuxTips #ipCommand #Шпаргалка #TelegramLinux
🐧🔥💻🚀
🔥1
🔐 Права доступа к файлам в Linux: Ownership и Permission — просто о сложном 🐧

Если вы только начинаете свой путь в мире Linux, понимание системы прав доступа поможет вам управлять безопасностью и доступом к файлам. Два ключевых понятия здесь — Ownership (владение) и Permission (разрешения).

Кто кому принадлежит? 👤

В Linux каждый файл и каталог имеет владельца и связан с группой. Это важно для контроля доступа:

- Owner (Владелец) — пользователь, создавший файл или получивший права на него.
- Group (Группа) — набор пользователей, которым предоставлены одинаковые права на файл.
- Other (Другие) — все остальные, кто не является владельцем или участником группы.

Что можно делать с файлом? 🔐

У файла или каталога могут быть три типа разрешений:

- Read (r) — чтение содержимого файла или просмотра списка файлов в директории.
- Write (w) — возможность редактировать, удалять или добавлять файлы.
- Execute (x) — запуск файла как программы или скрипта, либо переход внутрь директории.

Как это выглядит на практике? 📋

Например, если вы выполните команду ls -l, вы увидите что-то вроде:

-rw-r--r-- 1 user group 0 Apr 5 12:00 file.txt


Здесь:

- -rw-r--r-- — это права доступа.
- user — владелец файла.
- group — группа, связанная с файлом.

Разберём права подробнее:

- rw- — Владелец может читать и записывать.
- r-- — Участники группы могут только читать.
- r-- — Все остальные тоже могут только читать.

💡 Полезные команды:

🔹 Посмотреть права и владельца:
ls -l


🔹 Изменить владельца:
sudo chown user:group filename


🔹 Изменить права доступа:
chmod [права] filename


🧠 Зачем это нужно знать?

Права доступа — основа безопасности в Linux. Они помогают защитить важные данные от случайного изменения, а также контролировать, кто может выполнять те или иные действия.

📌 Сохраняйте себе и делитесь с коллегами!
Изучайте Linux шаг за шагом — легко, интересно и по делу 📚🐧


#Linux #Permissions #Filesystem #Terminal #SysAdmin #DevOps #chmod #chown #Security #LinuxTips #TelegramLinux 🐧🔥💻🚀
🔥1
🐋 Что такое Hadolint и почему он незаменим для Docker-разработчиков 🐧

Если вы работаете с Docker и пишете Dockerfile, то обязательно должны знать про Hadolint — это мощный и умный линтер, который помогает соблюдать лучшие практики при сборке контейнеров.

🔍 Что делает Hadolint?

Hadolint анализирует ваш Dockerfile и проверяет:

Соблюдение стиля и стандартов
Потенциальные ошибки
Небезопасные или неэффективные команды
Использование устаревших инструкций
Несоответствия в метаданных (labels)
И даже запускает ShellCheck внутри инструкций RUN, чтобы проверить Bash-скрипты!

🛠 Как использовать Hadolint?

Вы можете запустить его локально или через Docker:

# Локальный запуск
hadolint Dockerfile

# Через Docker
docker run --rm -i hadolint/hadolint < Dockerfile


Также можно игнорировать определённые правила:
hadolint --ignore DL3006 --ignore SC1081 Dockerfile


⚙️ Конфигурация и настройка

Hadolint поддерживает конфигурационные файлы .hadolint.yaml, где можно:

🔹 Указать, какие правила игнорировать
🔹 Задать уровень строгости (error/warning/info)
🔹 Добавить список доверенных реестров (trustedRegistries)
🔹 Настроить обязательные метки (label-schema)
🔹 Включить/выключить строгую проверку меток

Пример конфига:
ignored:
- DL3000
- SC1010
trustedRegistries:
- docker.io
- my-company.com:5000
override:
warning:
- DL3042
- DL3033


🧩 Поддержка разных оболочек

Hadolint умеет работать с разными shell:
🔹 Bash
🔹 PowerShell
🔹 Cmd
🔹 Sh

Для Windows-образов добавьте комментарий:
# hadolint shell=powershell

Это отключит лишние предупреждения о bash-специфичных правилах.

🚫 Игнорирование правил

Можно временно отключать проверки прямо в Dockerfile:

# hadolint ignore=DL3006
FROM ubuntu


Или игнорировать правило глобально для всего файла:
# hadolint global ignore=DL3003,SC1035
FROM ubuntu


🏷 Проверка меток (Labels)

Hadolint может проверять, чтобы в Dockerfile были указаны нужные вам метаданные:

hadolint --require-label author:text --require-label version:semver Dockerfile


Или через конфиг:
label-schema:
author: text
version: semver
strict-labels: true


📦 Интеграции

Hadolint легко интегрируется:

🔹 В CI/CD (GitHub Actions, GitLab CI, Jenkins и др.)
🔹 В редакторы кода (VS Code, Vim, Emacs и др.)
🔹 Как pre-commit хук
🔹 В IDE для автоматической проверки при написании Dockerfile

🧠 Почему стоит использовать Hadolint?

🔹 Повышает качество и безопасность Docker-образов
🔹 Обнаруживает скрытые проблемы ещё до сборки
🔹 Упрощает соблюдение стандартов в команде
🔹 Автоматизирует контроль качества Dockerfile

📌 Сохраняйте себе и делитесь с коллегами!
Изучайте инструменты, которые делают работу с контейнерами удобнее и надёжнее 📚🐋

#Docker #Containerization #DevOps #CI_CD #Linux #Cloud #SysAdmin #Hadolint #Dockerfile #Linting #CodeQuality #TelegramLinux 🐳🔥🐧🚀
🔥1
🚀 Linux Storage Stack: Как ваш файл превращается в биты? 💾

Разберем магию Linux Storage Stack – ту самую "кухню", которая превращает вашу команду cat meme.jpg в пиксели на экране. Это многослойный бутерброд 🥪 в ядре Linux, отвечающий за ВСЁ, что касается хранения данных!

📦 Представьте цепочку доставки:

1. Вы (Приложение 🖼️): Говорите: "Хочу этот файл!" (read()/write()).

2. Почтовое отделение (VFS 🏣): Единый фронт-офис! Принимает запросы ЛЮБОГО типа (локальный диск, сеть, флешка) и передает нужной "службе доставки" (ФС).

3. Служба доставки (Файловая система 📂): ext4, XFS, Btrfs, ZFS и др. Организуют данные на "складе" (диске): где лежит файл, его размер, права. Используют Page Cache (📦 Кэш страниц) – быстрый склад-буфер в ОЗУ, чтобы не бегать на медленный диск каждый раз!

4. Логистический центр (Блочный уровень 🚚): Получает заказы "доставить такие-то блоки". Его главный герой – I/O Scheduler (⏱️ Планировщик)! Он:
* Сортирует запросы (особенно важно для HDD 🧩, чтобы головка меньше "бегала").
* Объединяет мелкие запросы в крупные (эффективнее!).
* Выбирает стратегию: deadline, bfq (честное распределение), none (для быстрых NVMe ).

5. Драйверы грузовиков (Драйверы устройств 🚛): Превращают заказы в команды для железа: nvme (для SSD NVMe), sd (для SATA/SAS), dm (Device Mapper – основа LVM 🧩 (объединяй диски, меняй размеры на лету!), dm-crypt (🔐 шифрование), dm-thin (тонкое выделение)).

6. Склад (Железо 🖴): HDD, SSD (SATA/NVMe), NVMe, сетевые хранилища (iSCSI). Физические биты!

🔧 Зачем ВАМ это знать? 🤔

Тупит диск? Поймете, где искать пробку: в ФС, планировщике, драйвере или самом диске? 🐢➡️

Выбираете ФС? ext4, XFS, Btrfs, ZFS – у каждой свои суперсилы! 💥

Настраиваете сервер? Оптимизация кэша, планировщика, LVM – ключ к производительности! 🔑

Работаете с LVM, RAID, шифрованием?Device Mapper (dm) – ваш фундамент! 🏗️

Любите копать глубже? Это основа для понимания контейнеров (overlayfs), Ceph и других крутых штук! 🐳

🛠️ Инструменты для детектива:
iostat, iotop, blktrace, bpftrace/bcc, lvm, lsblk, fio – ваши лучшие друзья в анализе I/O.

💡 Вывод:
Linux Storage Stack – невидимый, но мощный мотор вашей системы! Понимая его слои (VFS, ФС, кэш, планировщик, драйверы, LVM), вы:
Лучше оптимизируете систему.
Быстрее решаете проблемы.
Осознаннее выбираете технологии.

#Linux #Storage #StorageStack #ФайловаяСистема #VFS #Ext4 #XFS #Btrfs #ZFS #LVM #DeviceMapper #IOScheduler #PageCache #Kernel #SysAdmin #DevOps #Железо #Оптимизация
🔥1
Другое дело!
😁1
Как я настраивал переключение раскладки на Ubuntu 24.04 =)

Привет, друзья! 🐧

Решил поделиться своей небольшой историей о том, как я боролся с настройками клавиатуры в Ubuntu 24.04. После установки системы столкнулся с проблемой - привычное переключение раскладки через Alt+Shift не работало. Как же так...

Первый подход.
Попробовал самый очевидный путь - через настройки системы. Открыл Settings → Keyboard → Keyboard Shortcuts → Typing. Нашел пункт "Switch to next input source" и попытался установить Alt+Shift. Вроде бы все просто, но не сработало.

Переходим в терминал.
Подумав, вспомнил про gsettings и решил покопаться в консоли:

gsettings set org.gnome.desktop.wm.keybindings switch-input-source ['<Alt>Shift_L']


Тут меня ожидал первый подвох - система ругалась на синтаксис. Забыл кавычки! Правильная команда выглядит так:

gsettings set org.gnome.desktop.wm.keybindings switch-input-source "['<Alt>Shift_L']"
gsettings set org.gnome.desktop.wm.keybindings switch-input-source-backward "['<Shift>Alt_L']"


Важный момент с правами, настройки ввода хранятся для каждого пользователя отдельно.

Проверка результата
Чтобы убедиться, что все сработало, выполним:

gsettings get org.gnome.desktop.wm.keybindings switch-input-source


И получим ожидаемый результат: ['<Alt>Shift_L']

Итог: у меня снова работает переключение раскладки через Alt+Shift! 🎉

#Ubuntu #Linux #Настройки #AltShift #GNOME #LinuxTips
🔥1
🔥 Воскрешаем флешку: магия fdisk и mkfs в Linux!
32 ГБ не должны пропадать зря!

👾 На выходных нашел старую флешку на 32 ГБ — Ubuntu её видела, но не монтировала «неизвестная файловая система». Расскажу, как вернуть её к жизни двумя терминальными командами!

🛠 Шаг 1: fdisk — хирург для дисков
Это утилита для управления разделами диска. Что умеет:
Просмотр таблицы разделов
Создание/удаление разделов
Изменение типов разделов

Мой кейс:
1️⃣ Смотрим подключенные диски:
sudo fdisk -l

Нашел флешку как /dev/sda (без разделов!)

2️⃣ Запускаем «операцию»:
sudo fdisk /dev/sda


💡 Главные команды fdisk:
- p — показать разделы
- n — создать раздел (я сделал primary на весь диск → /dev/sda1)
- w — записать изменения (осторожно!)
- q — выйти без сохранения

Шаг 2: mkfs — создаем файловую систему
Раздел есть — теперь нужно его «форматировать». Тут вступает mkfs (make filesystem).

Выбираем тип ФС:
🔷 NTFS (для Windows/Linux):
sudo mkfs.ntfs -L "MyUSB32GB" /dev/sda1

Флаг -L задает метку диска


🔷 Другие варианты:
# FAT32 (для любой ОС)
sudo mkfs.fat -F32 /dev/sda1

# ext4 (только Linux)
sudo mkfs.ext4 /dev/sda1


Результат:
После mkfs Ubuntu автоматически смонтировала флешку! Проверим:
df -h


⚠️ Важно!
Правила безопасности:
1. ТРОЙНАЯ ПРОВЕРКА устройства в fdisk -l перед запуском!
2. sudo mkfs безвозвратно уничтожает данные на разделе.
3. Не путайте /dev/sda (весь диск) и /dev/sda1 (раздел)!

🤖 Альтернативы:
- GParted — графический редактор разделов
- Disks (встроен в Ubuntu) — форматирование в пару кликов

... но fdisk + mkfs незаменимы в скриптах и для тонкой настройки!

💎 Итог:
Эти инструменты дают полный контроль над дисками:
- fdisk — «лепит» разделы 🗂️
- mkfs — наполняет их файловой системой 💾

Пользуйтесь осторожно, и ваши флешки будут жить вечно! 💪

#Linux #Terminal #fdisk #mkfs #Ubuntu #Железо #Администрирование #Советы #SysAdmin #FAT32 #ext4 #NTFS
🔥1
🎵 Умные оповещения в терминале Linux

Каждый линуксоид сталкивался с ситуацией: запускаешь долгую команду, отходишь на кухню за кофе, а потом возвращаешься и... забыл, что вообще запускал. А может команда завершилась с ошибкой? Придется возвращаться к терминалу и проверять.

Представляю вашему вниманию супер-алиас `alert`, который решает эту проблему раз и навсегда!

🚀 Что делает этот алиас?

alias alert='
if [ $? = 0 ]; then
# Успех
notify-send --urgency=normal -i terminal " Готово" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert.*$//'\'')";
paplay /usr/share/sounds/gnome/default/alerts/string.ogg 2>/dev/null;
else
# Ошибка
notify-send --urgency=critical -i error " Ошибка" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert.*$//'\'')";
paplay /usr/share/sounds/gnome/default/alerts/hum.ogg 2>/dev/null;
fi'


🎯 Как это работает?

Алиас делает сразу несколько полезных вещей:

1. Проверяет результат выполнения
- $? - код возврата последней команды
- 0 = успех
- Любое другое число = ошибка

2. Показывает уведомление
- Зеленый чек для успешных операций
- Красный крест для ошибок
- Текст команды в уведомлении

3. Проигрывает звук
- Мелодичный звон при успехе
- Низкий гудок при ошибках

💡 Примеры использования

# Компиляция проекта
make clean && make all; alert

# Обновление системы
sudo apt update && sudo apt upgrade; alert

# Архивация больших файлов
tar -czf backup.tar.gz /home/user; alert

# Поиск по файлам
grep -r "важный_текст" /var/log/; alert

# Синхронизация данных
rsync -av /source/ /backup/; alert


🔧 Установка

Добавьте алиас в ваш ~/.bashrc:

1. Откройте файл:
nano ~/.bashrc


2. Добавьте алиас в конец файла

3. Перезагрузите настройки:
source ~/.bashrc


🎵 Звуки по умолчанию

GNOME звуки:
- Успех: /usr/share/sounds/gnome/default/alerts/string.ogg
- Ошибка: /usr/share/sounds/gnome/default/alerts/hum.ogg

Можно заменить на другие звуки:
# Ubuntu звуки
/usr/share/sounds/ubuntu/notifications/Amsterdam.ogg
/usr/share/sounds/ubuntu/stereo/dialog-error.oga

# Или свои файлы
~/sounds/success.mp3
~/sounds/error.wav


🛠 Требования

Для работы необходимы пакеты:
# Уведомления
sudo apt install libnotify-bin

# Звуковые утилиты
sudo apt install pulseaudio-utils


⚡️ Преимущества

Экономия времени - не нужно возвращаться к терминалу
Визуальные оповещения - уведомления на рабочем столе
Звуковые сигналы - слышно даже из другой комнаты
Интеллектуальная обработка - разные сигналы для успеха и ошибок
История команд - показывает, что именно выполнялось

🎯 Когда особенно полезно?

- 🕐 Долгие операции - компиляция, архивация, копирование
- 🔄 Автоматизированные скрипты - бэкапы, синхронизация
- 📊 Системные задачи - обновления, мониторинг
- 🔍 Поиск и анализ - grep, find, логи
- 🛠 Разработка - сборка проектов, тесты

💡 Лайфхаки

# Добавьте в конец часто используемых команд
make; alert
git push; alert
docker build .; alert

# Используйте в цепочках команд
command1 && command2; alert
command1 || command2; alert

# Для фоновых процессов
nohup long-process & alert


Этот алиас alert - настоящий must-have для каждого разработчика и системного администратора. Он превращает терминал из "черного ящика" в интерактивный инструмент, который держит вас в курсе всех событий.

#Linux #Bash #Terminal #Ubuntu #Productivity #DevTools #SysAdmin #CommandLine #Automation #Shell #Development #Tips #Workflow #GNOME #OpenSource
🔥1
🛠 nano простой, понятный… но, честно? По умолчанию — немного скучноват.
Однако! С парой настроек он превращается в настоящего помощника. Давайте сделаем nano удобнее — за 5 минут! 💥

🔧 Базовые горячие клавиши (на всякий случай)

- Ctrl+O — сохранить 📥
- Ctrl+X — выйти 🚪
- Ctrl+W — поиск 🔍
- Ctrl+\ — замена 🔄
- Ctrl+K — вырезать строку ✂️
- Ctrl+U — вставить 📋
- Ctrl+C — показать номер строки и позицию курсора 📍

> Подсказки всегда внизу экрана — просто смотри, что написано.

🎨 Подсветка синтаксиса — добавляем цвета

По умолчанию всё серое. Но можно включить подсветку для .py, .sh, .html, .conf и других файлов.

Копируем и сохраняем репозиторий:

git clone https://github.com/scopatz/nanorc.git ~/.nano


После этого просто подключите всё в конфиге — и ваш код заиграет новыми красками. Попробуйте — и вы не захотите возвращаться к серому тексту.

🔢 Номера строк — больше не потеряетеcь

Добавьте в конфиг:

set linenumbers


Теперь вы всегда будете знать, на какой строке находитесь — особенно полезно при редактировании конфигов или логов. Попробуйте включить, и сразу почувствуете разницу.

🚫 Отключаем перенос строк

nano по умолчанию «ломает» длинные строки — это раздражает, особенно при работе с логами или кодом.

Решение простое:

set nowrap


Теперь строки не будут переноситься — только при прокрутке. Попробуйте, и вы оцените удобство.

⚙️ Умные отступы и работа с Tab

Хотите, чтобы Tab вставлял пробелы (как в Python)? Добавьте:

set tabsize 4
set tabstospaces
set autoindent


Теперь:
- Tab = 4 пробела (или сколько укажете)
- При переходе на новую строку — отступ сохраняется
- Код остаётся чистым и красивым

Попробуйте использовать эти настройки — и ваш код станет аккуратнее.

🖱 Поддержка мыши — да, это реально!

Добавьте:

set mouse


Теперь можно:
- Кликать мышкой, чтобы поставить курсор
- Выделять текст
- Прокручивать колесиком

> Работает даже в SSH, если терминал поддерживает (например, в tmux).

Попробуйте — и вы удивитесь, насколько приятнее стало работать в терминале.

📂 Работа с несколькими файлами

Можно открывать сразу несколько файлов:

nano file1.txt file2.txt


Переключайтесь между ними:
- Alt+> — следующий файл
- Alt+< — предыдущий

Попробуйте использовать это при редактировании связанных конфигов — очень удобно.

📋 Как копировать в nano?

Официальной команды Ctrl+C нет, но можно:

1. Ctrl+6 — начать выделение
2. Переместите курсор — выделите нужный фрагмент
3. Alt+6 — скопировать
4. Ctrl+U — вставить

Да, не интуитивно, зато работает! Попробуйте пару раз — и вы привыкнете.

🚀 Алиас для удобства

Добавьте в ~/.bashrc:

alias nano='nano -w -i'


Где:
- -w — отключает перенос строк
- -i — включает умный отступ при Enter

После source ~/.bashrcnano будет запускаться уже с полезными настройками. Попробуйте — и вы не захотите работать по-старому.


🧩 Готовый конфиг ~/.nanorc

Создайте файл:

nano ~/.nanorc


И вставьте туда это:

# Подключаем подсветку синтаксиса (если установлена)
include ~/.nano/*.nanorc

# Показывать номера строк
set linenumbers

# Не переносить строки
set nowrap

# Размер табуляции и замена на пробелы
set tabsize 4
set tabstospaces

# Автоматический отступ
set autoindent

# Поддержка мыши
set mouse

# Разрешить регулярные выражения в поиске
set regexp

# Автосохранение резервной копии файла
set backup

# Показывать непечатаемые символы (пробелы, табы)
set whitespace "·»"


Попробуйте эти настройки — и вы удивитесь, насколько приятнее станет работать в терминале.

#nano #Linux #Терминал #DevOps #Программирование #Лайфхаки #РаботаСТерминалом #НастройкаLinux #ТекстовыйРедактор #СистемаДляЧайников #Код #Ubuntu #ТехноЛайф #LinuxTips
1