Bash Days | Linux | DevOps
Авторский блог от действующего девопса Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу. Автор: Роман Шубин Реклама: @maxgrue MAX: https://max.ru/bashdays Курс: @tormozilla_bot Блог: https://bashdays.ru
显示更多📈 Telegram 频道 Bash Days | Linux | DevOps 的分析概览
频道 Bash Days | Linux | DevOps (@bashdays) 俄语 语言赛道中的 是活跃参与者。目前社区聚集了 23 792 名订阅者,在 技术与应用 类别中位列第 5 701,并在 俄罗斯 地区排名第 28 128 位。
📊 受众指标与增长动态
自 невідомо 创建以来,项目保持高速增长,吸引了 23 792 名订阅者。
根据 17 六月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 -202,过去 24 小时变化为 -5,整体触达仍然可观。
- 认证状态: 未认证
- 互动率 (ER): 平均受众互动率为 21.91%。内容发布后 24 小时内通常能获得 12.48% 的反应,占订阅者总量。
- 帖子覆盖: 每篇帖子平均可获得 5 213 次浏览,首日通常累积 2 971 次浏览。
- 互动与反馈: 受众积极参与,单帖平均反应数为 21。
- 主题关注点: 内容集中在 bashdays, linux, bash, docker, скрипт 等核心主题上。
📝 描述与内容策略
作者将该频道定位为表达主观观点的平台:
“Авторский блог от действующего девопса
Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу.
Автор: Роман Шубин
Реклама: @maxgrue
MAX: https://max.ru/bashdays
Курс: @tormozilla_bot
Блог: https://bashdays.r...”
凭借高频更新(最新数据采集于 18 六月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。
- Просмотр истории и логов - Отображение состояния репозитория - Работа с изменениями на уровне отдельных блоков - Поиск по содержимому файловМожно конечно и через нативные git командами всё это глянуть, но любителям новогодних ёлок — tig однозначно зайдёт. Звездочек у проекта достаточно дохуя (12к), поэтому рекомендую забрать в свой рабочий инструментарий. Авось зайдёт на постоянку. Потыкай. Установка:
apt install tig
Репа на гитхабе: https://github.com/jonas/tig
tags: #utils #linux
—
🔔 @bashdays➡️ @gitgateapt update и внезапно отключают свет. Через минуту свет включают, ты запускаешь вновь apt update, а оно тебе орет:
The package cache file is corruptedЧто это за покемон? Почему оно сломалось? Потому что во время операции
apt update, часть данных была сохранена в памяти и данные просто не успели записаться на диск. Соответственно целостность файла с кешем была похерена.
Давай посмотрим:
free -h
Смотрим столбец buff/cache, в нем видим что-то вроде: 383Mi.
Это и есть те данные которые еще не успели записаться на диск и находятся в пограничном состоянии. Если сейчас выключат свет, все эти данные в памяти похерятся.
В Linux есть команда sync, которая позволяет насильно записать все данные из памяти на диск.
Но если после sync повторно запустить free -h, изменений ты не увидишь, потому что sync ничего не зачищает, а только записывает.
Зачистить можно так:
sync; echo 1 > /proc/sys/vm/drop_caches
sync; echo 2 > /proc/sys/vm/drop_caches
sync; echo 3 > /proc/sys/vm/drop_caches
Хуячим командами в ядро и зачищаем buff/cache, теперь можно снова запустить free -h и лицезреть меньший размер.
⚪Очищает кэш страниц (page cache), который используется для кэширования содержимого файлов и каталогов.
⚪Очищает только кэш объектов inode и dentry (данные о файловой системе, такие как пути и метаданные файлов).
⚪ Очищает как кэш страниц, так и кэш объектов inode и dentry.
Где применять?
1. Перед отключением устройства (umount)
2. Перед очисткой кэшей памяти (drop_caches)
3. После крупных файловых операций
4. В bash скриптах для безопасного завершения
А для анализа всех этих кешей, памяти, буферов и т.п. есть несколько утилит: vmtouch, bpfcc-tools, dstat. Можешь потыкать на досуге.
Пользуйтесь!
tags: #linux
—
🔔 @bashdays➡️ @gitgatemidnight commander и устанавливаем повторно + снимем бенчмарку.
time apt install -y --reinstall mc
real: 2.977s
Почти 3 секунды. Приемлемо. Но если нужно поставить 100 пакетов, то в среднем это займет 300 секунд или 5 минут. Уже дохуя!
ㅤ
Давай оптимизируем этот процесс и превратим 300 секунд в 150, а то и меньше.
Устанавливаем утилиту eatmydata:
apt install eatmydata
Устанавливаем midnight commander и замеряем время:
time eatmydata apt install -y --reinstall mc
real: 1.204s
Хуясе, почти одна секунда, установка mc прошла в два раза быстрее.
Но почему? И что сделала eatmydata?
eatmydata предназначенная для ускорения операций записи на диск в Linux-системах, особенно при установке пакетов с помощью APT. Она временно отключает механизмы, которые обеспечивают сохранность данных при сбоях системы, такие как fsync, fdatasync, flock и msync, что позволяет уменьшить время записи данных на диск.Короче говоря утилита игнорирует запросы на немедленное сохранение данных на диске (синхронизация). Где это можно использовать? Ну например на тестовых средах или в docker контейнерах. Везде, где целостность данных не критична, а важна лишь скорость. Такие дела, изучай! tags: #linux — 🔔 @bashdays➡️ @gitgate
apt install mc
The following NEW packages will be installed:
bzip2 libssh2-1 mailcap mc mc-data unzip
6 newly installed.
Ага, будет установлено 6 пакетов, включая паразитов — mailcap unzip.
Midnight Commander отлично работает без этих mailcap unzip.
А прикинь, ставишь ты какую-нибудь phantomjs, а он дополнительно тянет KDE, на сервер где вообще нет иксов.Это так для примера, чтобы ты понял про что я. Как избавиться от паразитов? Вот так:
apt install mc --no-install-recommends
Recommended packages:
mailcap unzip
The following NEW packages will be installed:
libssh2-1 mc mc-data
3 newly installed.
Всё! На три пакета установится меньше (bzip2 это Suggested packages)
Как глобально избавиться от Recommended packages?
Создаем файл: /etc/apt/apt.conf.d/99norecommends
И вставляем в него:
APT::Install-Recommends "false";
Теперь ключик no-install-recommends можно везде не пихать, паразиты отключены.
Ну а чтобы для конкретного пакета установить паразитов:
apt-get install mc --install-recommends
Конец! Пользуйся на здоровье!
tags: #linux
—
🔔 @bashdays➡️ @gitgatesudo apt install pwgen
declare -r PWGEN_OPT='-1 --symbols --ambiguous --capitalize'
declare -r PASSLEN=15
declare -r PASSNUM=5
declare -r KEYFILE=${0%/*}/'1.jpg'
declare -l HIDDENMOD=0
declare -r PWGEN=$(which pwgen)
declare LOGIN
declare MOD MOD1
if [[ ! "$PWGEN" ]];then
echo pwgen not installed
exit 1
fi
if [[ ! -s "$KEYFILE" ]];then
echo keyfile "$KEYFILE" not found
exit 2
fi
read -p "Input login:" LOGIN
if [[ "1y" =~ "$HIDDENMOD" ]];then
read -s -p "Input modificator:" MOD;echo
read -s -p "Confirm modificator:" MOD1;echo
if [[ "$MOD" != "$MOD1" ]];then
echo "Modificator not confirmed"
exit 3
fi
else
read -p "Input modificator:" MOD;echo
fi
echo pwgen options: $PWGEN_OPT
echo "Login: $LOGIN"
$PWGEN $PWGEN_OPT -H"${KEYFILE}#${LOGIN}${MOD}" $PASSLEN $PASSNUM
сохраняем в файл passgen.sh
chmod +x passgen.sh
./passgen.sh
По умолчанию ввод модификатора отображаемый. Для параноиков - установить HIDDENMOD=1 результат работы примерно такой:
Input login:tagd@bashdays.ru Input modificator:BashDaysTheBest pwgen options: -1 --symbols --ambiguous --capitalize Login: tagd@bashdays.ru aig3ohkie.Wah4X AiguW~u7vohphae eiJa7ahxei.die! FaeNa=phah9voh3 Kih]ahca3Hie7keЕсли повторить ввод тютелька в тютельку пароли будут те же самые, что и требовалось. ➡️ Тыкни сюда, чтобы посмотреть описание работы программы. Всё, пароли хранить не нужно - ввели логин и модификатор - получили пароли. При компрометации просто используете следующий. Если увеличить число генерируемых паролей - начальные пароли будут те же. Почитать:
help declare read man pwgen https://cheatsheets.ziptags: #bash #linux © by Tagd Tagd — 🔔 @bashdays➡️ @gitgate
- Не хватает практики и знаний для уверенной работы с к8s? - Разработка, дебаг и оптимизация приложений в K8s вызывают сложности? - Не понимаете о чем говорят DevOps'ы?😨 Поможем разработчику структурировать свои знания или с нуля влиться в Kubernetes 😏ОБНОВИЛИ ПРАКТИКУ в августе 2024 г. 76 часов практики и работы со стендами 😘 Чему научим: - Самостоятельно разрабатывать, разворачивать и дебажить приложения в k8s - Решать вопросы по настройке и сопровождению k8s инфраструктуры - Cтроить CI/CD пайплайн для Kubernetes - Понимать, как устроены основные компоненты кластера Старт потока 23 сентября 😨 7 недель обучения 😨 7 встреч со спикерами 😨 Сертификация по итогу обучения ➡️ Стоимость 50 000 ₽ Занять место на курсе и ознакомиться с программой 👉 на сайте Реклама ООО «Слёрм» ИНН 3652901451
У нас на заводе бухгалтерию так называли — «кабинет с бабинами». Бабины были моё почтение.В настоящее время мы пользуемся эмуляторами терминалов, это всякие Konsole, Gnome Terminal, Tilix, Guake и т.п. которые прекрасно себя чувствуют в GUI. То есть эмулируем ту самую хуйню с кнопками и телевизором. Теперь про консоль Для консолей гуёвость не нужна. Консолька это что-то на низком уровне, некий интерфейс, который общается с операционной системой. Например, отвалился второй жесткий диск прописанный в fstab, иксы не загрузились, тебя выкинуло как раз в консоль. Теперь ебись в ней. Писал я тут недавно про Magic SysRq, вот это про консоль. Кароче терминал захуярили, чтобы пользоваться консольными утилитами в GUI. Терминал:
/dev/pts/<x>: Псевдотерминальные устройства, используемые для терминальных сессий, таких как SSH или терминалы в графических средах. Они представляют собой виртуальные терминальные устройства, которые обычно создаются и управляются операционной системой.Консоль:
/dev/tty/<x>: Устройства, представляющие собой физические или виртуальные терминалы на уровне ядра. Например, это могут быть устройства для текстовых консольных сессий или виртуальные консоли, предоставляемые ядром Linux. Важно отметить, что /dev/tty без <x> также может обозначать текущее терминальное устройство, к которому привязан процесс, например, при работе в командной строке.Заходим в консоль и отправляем на терминал:
$ echo "Bashdays here!" > /dev/pts/0
А еще про всякие vt100, xterm, ansi я писал тут, почитай, интересно.Такие дела. Не заморачивайся. Изучай! tags: #linux — 🔔 @bashdays➡️ @gitgate
systemctl restart php-fpm
Unit php-fpm.service could not be found.
Хм, я точно знаю что php на сервере есть! Так какого чернослива?
За годы практики, я выработал методику поиска сервисов, которые называются совсем не очевидно.
В примере выше, php сервис называется: php8.2-fpm-fuck-you!
Ха! В жизни не догадаешься.
Первым делом пиздуем в:
history | grep php
И внимательно смотрим, если повезет, то там будет эта заветная строчка с ребутом и именем замудрёного сервиса. Возможно когда-то ты с ним имел дело, либо кто-то пытался иметь.
Если не повезло делаем так:
systemctl | grep php
php8.2-fpm-fuck-you.service
phpsessionclean.timer
Эта штука гарантированно выплюнет тебе полное название сервиса, ну а дальше ты знаешь что с ним делать.
Можно конечно воспользоваться внешними утилитами, но не рекомендую. Потому что systemctl есть всегда, а внешних утилит - нет.
➡️ Сразу привыкай работать с инструментами из коробки и будет тебе счастье.
Все!
Ну и анекдот как обещал: еслиб у бабушки был бы хуй, она была бы дедушкой.
tags: #linux #debug
—
🔔 @bashdays➡️ @gitgate#!/bin/bash
find . -type f -exec stat --format='%a %n' {} \; > permissions.txt
git add permissions.txt
git commit -m "на залупе лешего вертели"
git push
Пробегаемся по всем файлам и каталогам, записываем текущие права в файл permissions.txt, коммитим, пушим.
Ну и скрипт для восстановления прав:
#!/bin/bash
if [ -f permissions.txt ]; then
while read perm file; do
if [ -f "$file" ]; then
chmod "$perm" "$file"
fi
done < permissions.txt
fi
Вот и вся наука. По желанию вешаешь это на Git Hook (post-checkout, post-merge) и автоматизируешь.
Как автоматизировать писал в этом посте, на примере можешь адаптировать.А еще есть git-restore-mtime, для восстановления метаданных времени модификации файлов. Такие дела, изучай… tags: #linux #bash — 🔔 @bashdays➡️ @gitgate
Поток “Kubernetes База” ➕ видеокурс “Мониторинг в Grafana” ➕ видеокурс "Ansible. Основы" ➕ видеокурс "Docker. Основы" 🔥70 000 ₽ (вместо 100 000 ₽) Промокод на скидку в боте до 20 сентября⭐️ОБНОВИЛИ ВЕСЬ КУРС в июле 2024 г. ✅Чему научим: - Основам работы с K8s, системой автоматизации развертывания, масштабирования и управления приложениями в контейнерах. - Запускать кластер, работать с базовыми абстракциями и подключать дополнительные компоненты - Запускать приложение в кластере, понимать принципы работы сети и настраивать CI/CD пайплан Старт потока 7 октября ➡️ 7 недель обучения ➡️ 63 часа практики ➡️ 5 встреч со спикерами ➡️ Итоговая сертификация 👉 Промокод и подробнее о курсе в боте Реклама ООО «Слёрм» ИНН 3652901451
Это пост изобилует грубыми и матерными выражениями и, в силу своего содержания, вообще не предназначен для просмотра лицам с нежной и хрупкой психикой.Всё бы хорошо, но в моменте пуша свеженького image docker в registry, я невзначай обнаружил, что в гитлабе его просто-напросто НЕТ! ㅤ Куда же он сука такая делся? В облачном есть, в self-hosted — хуй! Ну думаю щас галочку где-нибудь в настройках поставлю и все у меня получится. Перерыл всё что только возможно. Но гитлаб тот еще выблядок парижской потаскухи. Нет галочки… Хуй сосали на вокзале!
Да даже взять ситуацию перевода private репы в public.Кароче. Чтобы включить Container Registry, нужно зайти в конфиг
/etc/gitlab/gitlab.rb и…
Раскомментировать эту строчку:
gitlab_rails['registry_enabled'] = true
И после этого запустить:
gitlab-ctl reconfigure
gitlab-ctl restart
Пиздец, почему нельзя конфиг просто перечитать без перезагрузки всех сервисов и ожидания.
И о чудо! Заветный пункт меню Container Registry внезапно появляется. Тут и сказочки конец. НО НЕТ. При попытке зайти в этот новый пункт, получаем ошибку:
Docker connection error. We are having trouble connecting to the Container Registry. Please try refreshing the page. If this error persists, please review the troubleshooting documentation .Ебутся блохи в суматохе!!! Идем читать документацию!
Реестр контейнеров автоматически включается и становится доступным в вашем домене GitLab, если вы используете встроенную интеграцию Let's Encrypt.Fuck This Shit! Включаем поддержку Let's Encrypt в конфиге
gitlab.rb:
letsencrypt['enable'] = true
letsencrypt['auto_renew'] = true
Запускаем gitlab-ctl reconfigure && gitlab-ctl restart
Иииии… тадам, модуль registry запустился!
sudo gitlab-ctl status ok: run: registry: (pid 20114) 0sКвест успешно пройден, но мне пиздец как не понравилось! Поэтому сношу я этот sefl-hosted гитлаб к хуям и возвращаюсь в облачный. А на малинку пожалуй воткну gitea, надеюсь там такой хуйни не будет. Или будет? Ладно, в любом случае решение я тебе показал. Пользуйся! tags: #devops — 🔔 @bashdays➡️ @gitgate
Я себе в арсенал ее добавил, штука охуительная, при условии если знаешь зачем оно тебе и как этим пользоваться. Я пока не знаю, но обязательно разберусь. У хорошего девопса и бычий хуй веревка!Короче это хуйня на расте позволяет анализировать «Эльфов» (ELF бинарники).ㅤ - Статический анализ: изучение структуры бинарного файла, включая секции, сегменты, символы и релокации. - Динамический анализ: выполнение бинарного файла с отслеживанием системных вызовов и сигналов (strace/ltrace). - Извлечение строк: поиск полезных строк (например, паролей или URL) внутри бинарного файла. - Шестнадцатеричный дамп: просмотр содержимого файла в виде шестнадцатеричного кода с удобной визуализацией. Инструкция по установке тут, есть докеры-хуёкеры и т.п. Я собрал из исходников, делов 30 секунд:
cd /tmp
VERSION="0.1.0"
wget "https://github.com/orhun/binsider/releases/download/v${VERSION}/binsider-${VERSION}-x86_64-unknown-linux-gnu.tar.gz"
tar -xvzf binsider-*.tar.gz
cd "binsider-${VERSION}"
./binsider
➡️ Репка на гитхабе
➡️ Заценить на ютубе
Обязательно посмотри, рекомендую!
Ааа, еще всех вас с пятницей, хороших предстоящих выходных. Ну и самое главное — береги себя! Всех обнял 🙃
tags: #debug #linux #utils #utilites
—
🔔 @bashdays➡️ @gitgate
现已上线!2025 年 Telegram 研究 — 年度关键洞察 
