Bash Days | Linux | DevOps
24K subscribers
202 photos
26 videos
747 links
Авторский блог от действующего девопса

Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу.

Автор: Роман Шубин
Реклама: @maxgrue

MAX: https://max.ru/bashdays

Курс: @tormozilla_bot
Блог: https://bashdays.ru
Download Telegram
Тайна вызова Less в Linux утилитах

Привет ребят. Ща покопаемся в неочевидных вещах, залезем так сказать под капот.

Знаешь же такую команду:

git log


Тут всё просто, она выводит историю коммитов. И что примечательно, в конце будет пагинация (pager). Смотри картинку 1.

А теперь пойдем неочевидной дорожкой и выполним:

sudo mv /usr/bin/less /usr/bin/less.bak 


Ну и снова запустим git log: Смотри картинку 2.

Хуяк и нет больше пагинации. Сразу вывалилась простыня. О чем это говорит? А говорит это о том, что git использует внешнюю утилиту less при выводе истории коммитов, причем делает это по умолчанию.

Но если less накрылся пиздой, git сразу вывалит простыню без пагинации. Забавно! Давай подключим strace и подтвердим этот факт, запускаем:

strace -f -e execve git log


И видим картину маслом: Смотри картинку 3

Ага, запускается less, а теперь снова перемещаем less и смотрим выхлоп strace: Смотри картинку 4

Вот и прекрасно, словили ошибку error: cannot run less: No such file or directory. Но ожидаемый результат все равно получили.

Если выполнить команду echo $PAGER, то увидим, какая утилита будет использоваться для пагинации. По умолчанию less, но раз есть переменная, её можно переопределить. Давай попробуем это сделать.

apt install lolcat
export PAGER="lolcat"
git log


Иииии ебать копать: Смотри картинку 5.

Кстати не только git завязан на переменную $PAGER, такое же поведение ты можешь увидеть у утилит: man, systemctl, journalctl и т.п. Всё что работает с пагинацией, использует переменную $PAGER.

Ну и на закуску:

export PAGER="vim -"
man ls


Команда man ls будет выполнена в vim. То есть получается что любая программа, доверяющая $PAGER, фактически запускает произвольную команду пользователя.

А это уже еще один вектор атаки из арсенала пентестеров, о котором никто не рассказывает. Так что бери на вооружение, глядишь сгодится при прохождении очередного HackBox’а.

🛠 #security #linux

💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
237
Selectel работает — вы зарабатываете до 20% от чека клиентов

Становитесь партнером ведущего независимого провайдера ИТ-инфраструктуры, рекомендуйте качественный сервис и получайте пассивный доход от реферальной программы. Партнером может стать как юридическое, так и физическое лицо.

При регистрации в программе до 31 мая вы получите повышенную ставку 20% на 3 месяца. А после этого срока — от 10 до 15% от чека с ежемесячными выплаты без лимитов по сумме и сроку.

Ваши рефералы будут довольны. В Selectel 50+ инфраструктурных продуктов, большой выбор комплектующих для серверов и бесплатная техподдержка.

Регистрируйтесь в партнерской программе Selectel до 31 мая и получайте 20% от чека ваших рефералов первые 3 месяца: https://slc.tl/3cp0s

Реклама. АО "Селектел". erid:2W5zFJbjLJm
6
Less и секретный режим мониторинга

Очередные консольные приколы о которых ты не знаешь. Есть такая красота:

tail -f /var/log/nginx/access.log


Эта команда будет в реальном времени выводить строчки из файла по мере их добавления. То есть ты можешь наблюдать за лог файлами как с авто-суфлёра.

НО есть аналог:

less +F /var/log/nginx/access.log


А если кто не знал, то в less можно пользоваться клавишами vim. Например, навигация hjkl.

Сразу видно, что утилиты затачивали под одну экосистему и unixway. Ну а теперь вкуснятина.

После выполнения команды less +F нажимаем CTRL+C и теперь можно передвигаться по выводу как раз теме же клавишами hjkl, что-то поискать /127.0.0.1, g/G, n/N.

На минуточку, в tail ты так быстро ничего не поищешь. Надо тормозить процесс, выгружать в файл, грепать-хуепать.


Ну а чтобы вернуться в режим наблюдения, нажимаем SHIFT+F и less возвращает режим мониторинга, строчки с логами продолжают бежать в реальном времени.

Так что less это не просто про пагинацию, а немного больше.

🛠 #bash #linux

💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Please open Telegram to view this post
VIEW IN TELEGRAM
80
Docker кеш без боли

Давай поговорим про docker и кеширование, тема вроде поверхностная, но как оказалось многие в ней плавают и особо не понимают почему их сборка каждый раз занимает 100500 минут.

А занимает она столько минут, по одной причине — копировать исходники нужно в последнем слое. Механизм тут простой, если какой-то слой изменился, то следующие слои будут пересобраны. Логично, что если ты копируешь исходники так:

FROM node:22
WORKDIR /app
COPY . .
RUN npm install
RUN npm run build
CMD ["node", "dist/index.js"]


Тебе пезда! Всё будет пересобираться каждый раз с нуля, никаким кешированием тут и не пахнет. Так делают многие, ведь оно работает и пофигу что долго.

В примере выше, команда COPY копирует весь проект. Представь, что ты изменил одну букву в конфиге и приехали. Кеш инвалидировался, сборка пошла по новой и RUN npm install доставит много удовольствия.

Ключевой момент тут исходники, которые меняются.

Получаем:

- заново устанавливает npm зависимости
- заново качает пакеты
- заново rebuild native modules
- тратит минуты в CI

Хотя зависимости вообще не менялись. Мрак! Фиксим:

FROM node:22

WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci
COPY . .
RUN npm run build
CMD ["node", "dist/index.js"]


Теперь если что-то изменить в коде проекта, пересобирается только:

COPY . .  
RUN npm run build


А RUN npm ci возьмется из кеша. Аналогично и в питончике и гошке:

COPY . .  
RUN pip install -r requirements.txt

COPY . .
RUN go mod download


Бест-практика простая: От самого стабильного → к самому изменяемому.

- base image
- системные пакеты
- lock-файлы зависимостей
- install dependencies
- исходники
- build
- startup

Короче думай паттерном, а не жопой — «Какие файлы меняются редко?» и выносить их максимально вверх Dockerfile.

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

Вот и вся наука.

🛠 #devops #docker

💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Please open Telegram to view this post
VIEW IN TELEGRAM
59
Техника тоже может сидеть на Правильном Питании (ПэПэ)
 
Каждый же слышал о ПэПэ? Только вот сегодня речь не о еде в привычном ее понимании, а о бесперебойниках ПП-ИБП от Systeme Electric. Если быть точнее, разговор о Правильном Питании (ПэПэ) для вашего железа. С этим оборудованием вопрос «что будет с техникой, если с электричеством беда?» в принципе не возникает. С ПП-ИБП от Systeme Electric с онлайн-топологией все точно продолжит работать без сбоев, как ни в чем не бывало.
 
Systeme Electric — это бывшее российское подразделение Schneider, производителя легендарных бесперебойников APC: «Шнайдер» из России ушел, а прозводство, технологии и лучшая команда инженеров — остались, просто работают под новым локальным брендом. Так что Systeme Electric точно знают толк в надежной защите оборудования.
 
Вот что реально впечатляет в ПП-ИБП от Systeme Electric с онлайн-топологией:
 
ü  Тотальный онлайн-ЗОЖ — онлайн Защита от Отключений Железа.
ü  Повышенная БЖУ — Бесперебойность Жизненно-важных Устройств. Тянут нагрузку в 150% от номинальной.
ü  Настоящий суперфуд для оборудования — высочайший КПД 95%.
ü  Самое полное ПП-меню — поддерживают все возможные интерфейсы и протоколы (EPO, SNMP, RS-485, RS-232, USB, RJ45/RJ11, EMBS).
 
Альтернатива ПП-ИБП сейчас — только китайский электро-фастфуд. Но это для тех, кто свое оборудование совсем не любит. Через год-другой аккумы в таких дешманских ибп-шках вздуются, как живот после углеводов.
 
А вот у Systeme Electric официальная гарантия аж 3 года — абсолютный рекорд! Такой ни у кого нет. У «китайцев» максимум год, и даже у оригинальных шнайдеровских APC было только 2 года (а сейчас на серозавезенные и вовсе никакой нет).
 
Кстати, техподдержка работает круглосуточно: днем — телефон, мессенджеры и чаты отвечают 24/7. Так что долой голод, после 6 — можно!
 
Ну и конечно, чтобы железо не «болело», стоит начать заботиться о его Правильном Питании заранее. На здоровье оборудования не экономят!
 
За подробностями — сюда.
 
Вот такие пп-шные пироги.

Реклама. АО "СЭ" ИНН 7712092928 Erid: 2W5zFFubkxq
9