Bash Days | Linux | DevOps
Авторский блог от действующего девопса Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу. Автор: Роман Шубин Реклама: @maxgrue MAX: https://max.ru/bashdays Курс: @tormozilla_bot Блог: https://bashdays.ru
إظهار المزيد📈 نظرة تحليلية على قناة تيليجرام Bash Days | Linux | DevOps
تُعد قناة Bash Days | Linux | DevOps (@bashdays) في القطاع اللغوي الروسية لاعباً نشطاً. يضم المجتمع حالياً 23 794 مشتركاً، محتلاً المرتبة 5 701 في فئة التكنولوجيات والتطبيقات والمرتبة 28 128 في منطقة روسيا.
📊 مؤشرات الجمهور والحراك
منذ تأسيسه في невідомо، حقق المشروع نمواً سريعاً وجمع 23 794 مشتركاً.
بحسب آخر البيانات بتاريخ 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 — أهم رؤى العام 
