Bash Days | Linux | DevOps
Авторский блог от действующего девопса Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу. Автор: Роман Шубин Реклама: @maxgrue MAX: https://max.ru/bashdays Курс: @tormozilla_bot Блог: https://bashdays.ru
Show more📈 Analytical overview of Telegram channel Bash Days | Linux | DevOps
Channel Bash Days | Linux | DevOps (@bashdays) in the Russian language segment is an active participant. Currently, the community unites 23 752 subscribers, ranking 5 673 in the Technologies & Applications category and 28 019 in the Russia region.
📊 Audience metrics and dynamics
Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 23 752 subscribers.
According to the latest data from 26 June, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by -194 over the last 30 days and by -9 over the last 24 hours, overall reach remains high.
- Verification status: Not verified
- Engagement rate (ER): The average audience engagement rate is 25.52%. Within the first 24 hours after publication, content typically collects 13.60% reactions from the total number of subscribers.
- Post reach: On average, each post receives 6 062 views. Within the first day, a publication typically gains 3 232 views.
- Reactions and interaction: The audience actively supports content: the average number of reactions per post is 32.
- Thematic interests: Content is focused on key topics such as bashdays, linux, bash, docker, скрипт.
📝 Description and content policy
The author describes the resource as a platform for expressing subjective opinions:
“Авторский блог от действующего девопса
Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу.
Автор: Роман Шубин
Реклама: @maxgrue
MAX: https://max.ru/bashdays
Курс: @tormozilla_bot
Блог: https://bashdays.r...”
Thanks to the high frequency of updates (latest data received on 27 June, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.
git add .
git commit -m "ебальник убивальник"
git push
Если что-то напрягает, это что-то нужно оптимизировать. Тут всё как обычно банально. Делаем алиас и избавляемся от рутины.
ㅤ
Умеешь алиасы делать? Ладно, раз тут разжевываем, покажу.
Открываешь ~/.bashrc или чо там у тебя ~/.zshrc и пиздяришь:
alias gg="git add . && git commit -m \"$(date +'%d-%m-%Y %H:%M:%S')\" && git push"
Не забываем сделать source ~/.bashrc && ~/.zshrc. Теперь когда нужно что-то закомитить и отправить. Просто пишем «gg» и дело в шляпе.
В описание коммита попадет текущая дата и время. В продуктовой команде тебе конечно пизды дадут за это, но если что-то пилишь для себя то вполне допустимо.
Ну или если работаешь в VSCode или т.п. там плагины для гита есть, мышкой можешь в один клик отправлять все свои изменения в репу, без всяких алиасов.
А можно еще прям в конфиге гита сделать алиас
[alias]
cm = "commit -m"
либо командой:
git config --global alias.cm "commit -m"
Тогда команда для коммита будет такая:
git cm "initial commit"
Пример файла с нативными алиасами:
тыкни на блок и он раскроется (это спойлер):
[alias] a = add aa = add . c = commit cm = commit -m s = status pl = pull pu = push df = diff b = branch bl = branch --all bd = branch --delete bD = branch -D bren = branch -m bdr = push origin --delete fa = fetch --all fp = fetch -p t = tag tf = fetch --tags tpu = push origin --tags tpuacq = push acquia --tags td = tag -d tpur = push origin --delete tpuacq = push acquia --delete co = checkout cob = checkout -b resh = reset --hard lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --graph clear = clean -f -d clearw = checkout -- .Нихуя сложного, правда же? А вообще девопс должен знать всего две основных команды:
git push и git pull
Всё остальное лежит на плечах разработчиков. Пусть они ебуться с мерджами, конфликтами и т.п. У девопса другие задачи.
Если уж нужно что-то смержить, смержить можно мышкой через морду или просто забить хуй.
Вот так и живем! Пользуйся!
tags: #git #devops #linuxfactory
—
🔔 @bashdays➡️ @gitgategit@, а публичные можешь и через https.
Если попробуешь склонировать приватную репу через https, оно запросит у тебя логин и пароль от учетки гитлаба/гитхаба. Но такие вещи обычно делают на ssh ключах, без хуйни и паролей.
git clone git@gitlab.com:linuxfactory/infra.git
Есть еще хороший хак, если в к конце этой команды добавить символ точки «.» через пробел, то репка склонируется в текущую папку (не будет создана папка infra) НО при условии что папка на локальной машине у тебя пустая, иначе получишь git add .
git commit -m "initial commit"
git push
Не забываем что однажды получишь сообщение: Author identity unknown, про этот случай я рассказывал вчера.
Всё. Никаких ебучих конфликтов, тонны комманд и т.п. все прозрачно и просто. На первых этапах прям рекомендую использовать этот способ. Меньше говна хлебнешь.
Второй вариант
cd /path/to/project
git init
git add .
git commit -m "initial commit"
git remote add origin https://gitlab.com/username/reponame.git
git push -u origin master
Как видишь тут уже дерьма побольше, сложновато запомнить неокрепшему уму. К тому же можешь словить ряд ошибок:
fatal: repository not found remote: HTTP Basic: Access denied remote origin already exists Updates were rejected because the tip of your current branch is behind error: failed to push some refsПридется гуглить, делать
rebase или вообще конфликты решать. А решать конфликты это то еще удовольствие.
Теперь даже если что-то локально нахуевертил в гите, просто ёбни папку .git в проекте. Сделай все по первому способу и всё починится. Это намного быстрее чем разгребать и дебажить неочевидные ошибки.
tags: #git #devops #linuxfactory
—
🔔 @bashdays➡️ @gitgateAuthor identity unknown
*** Please tell me who you are.
Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
fatal: empty ident name (for <user@dev.>) not allowed
Не устану повторять — читай то, что тебе пишут!
Эта штука появляется в момент команды git commit.
В ошибке говорится — я хуй знает кто ты такой, давай уже определись и тогда все заработает.
То есть гит не знает от чьего имени оправлять коммит в репозиторий.
Как решать?
Ну оно тебе явно уже написало какие команды нужно забить. А забить надо пару строк:
git config --global user.email "hello@devopsina.ru"
git config --global user.name "Roman Shubin"
Всё, теперь коммит подпишется и ошибка уйдет. Глобальные настройки обычно лежат в файле ~/.gitconfig
Ну дак оно же глобально прописалось для всех реп??
Конечно, но это можно изменять в конфиге самой репы. То есть допустим у меня есть 2 репы:
1. BashDays 2. LinuxFactoryВ первом случае я хочу подписывать и отправлять коммиты как Roman Shubin, а во втором как Harbor Whore. Сейчас на глобальном уровне в обоих случаях будет Roman Shubin. Чтобы это пофиксить. Открываем нужную нам гит репу на своей машине, пиздуем в папку
.git и открываем на редактирование файл config.
Ну и в него добавляем секцию user.
[user]
name = Roman Shubin
email = hello@devopsina.ru
Соответственно для второй репы делаем тоже самое, только меняем мыло и имя на нужное тебе.
Если руками в падлу писать, выполняем команды:
git config user.email "hello@devopsina.ru"
git config user.name "Roman Shubin"
Тут отсутствует ключик --global.
Ну и чтобы посмотреть кем подпишется коммит, есть команда:
git config --list --show-origin
Находясь в папке с репой, она выведет всю необходимую информацию. Порой очень полезно предварительно проверить, перед пушем в репу.
Ну и скучная, но важная теория:
- Если вы используете GitHub, GitLab или другую платформу, и хотите, чтобы ваши коммиты были связаны с вашим аккаунтом, то email, указанный в Git, должен совпадать с email, привязанным к вашему аккаунту на этой платформе. Это нужно для того, чтобы платформа могла корректно отображать ваши коммиты в вашем профиле. - Если email не совпадает, коммиты все равно будут отправлены, но они не будут автоматически связаны с вашим аккаунтом на платформе.Такие дела. Видишь, не все так сложно как ты думаешь. Завтра рассмотрим еще очень важные вещи, от которых жопа обычно горит на начальных этапах. tags: #git #devops #linuxfactory — 🔔 @bashdays➡️ @gitgate
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576 GIT LFS. Дословно — Large File Storage (дохуя большое файловой хранилище).
У LFS уже свои лимиты в отличие от нативного git репозитория. И это LFS включен из коробки в гитлабах/гитхаба/битбакетах. Там уже размер файла может быть 1 гигабайт или что-то вроде того.
В gitea тоже можно LFS через конфиг включить:
[server]
LFS_START_SERVER = true
LFS_ALLOW_PURE_SSH = true
[lfs]
PATH = /home/gitea/data/lfs
Как этим пользоваться?
Ставим к себе на машину:
apt-get install git-lfs
brew install git-lfs
Переходим в свой гит репозиторий и инициализируем:
cd /home/user/linuxfactory/infra
git lfs install
В папке /infra/roles/node_exporter/files у меня лежит бинарник node_exporter который весит 100 мегабайт
На самом деле я хуй знает сколько он весит, это для примера.
Помечаем его:
cd /infra/roles/node_exporter/files
git lfs track "node_exporter"
После этого в папке files появится файл .gitattributes. Это правила для этого файла, которые указывают чтобы node_exporter улетал в LFS.
Внутри этот файл выглядит так:
node_exporter filter=lfs diff=lfs merge=lfs -text
И по итогу бинарник в репе станет ссылкой на настоящий бинарник в LFS.
А еще можно вайлдкардами трекать:
git lfs track "*.jpg"
Ну а дальше, как обычно:
git add .
git commit -m "add lfs for node_exporter"
git push
Всё! Теперь твой большой файл аккуратно лежит в LFS, а в самом гит репозитории осталась лишь ссылка которая на этот файл ссылается.
Мне тут пришлось партнерских постов на эту неделю понабрать, реинвестируем в развитие @gitgate, так что рекомендую включить баннерную слепоту и сильно не триггериться. Спасибо за понимание!
Чтиво: про LFS можешь глянуть еще тут и тут.
tags: #git #devops
—
🔔 @bashdays➡️ @gitgate1. Bombardier 2. StressПервая (Bombardier) отлично подходит для генерации паразитного http трафика.
bombardier -c 125 -n 10000000 http://localhost:8080
Вторая (Stress) можно нагрузить ядра процессора и позырить чо будет. Ну или над жестким диском надругаться или памятью.
stress --cpu 4
stress --hdd 100
stress --cpu 4 --vm 2 --io 1 --timeout 20
Ну а чтобы протестировать no space left on device просто генерим большой файлик удобным тебе способом.
Установка элементарная:
apt install bombardier stress
Эти утилиты отлично подходят для тестирования разнообразных алертилок, к примеру alertmanager. Нагнал синтетических данных, получил соплю в графане, алертилка тригернулась и накричала в чатик. Отладил, задеплоил.
Красота и удобно! Для этих дел есть еще всякие wrk, ab, hey и т.п. но с ними как-то у меня не сложилось.
Такие дела, бери на вооружение, мож сгодится в хозяйстве.
tags: #utilites #highload #qa
—
🔔 @bashdays➡️ @gitgateЕсли ты студент, можешь хорошо выебнуться своей длинной писькой перед преподами. И может тебя по телеку покажут, как когда-то создателя «BolgenOS» или антивируса Бабушкина.➡️ Исходники тут / Демка тут ps: А есть еще такой проект: mysh tags: #utilites — 🔔 @bashdays➡️ @gitgate
Не знаю, писал ли я вторую часть, но если найду, закину!tags: #рабочиебудни #memories — 🔔 @bashdays➡️ @gitgate
local0.* @log.bashdays.com:514
И тут как раз частый вопрос - чо за символ «собаки» перед названием сервера?
Магии тут нет, символ «@» означает протокол передачи UDP.
Надеюсь ты знаешь, что UDP не гарантирует доставку. Если сеть перегружена или приходят «сетевые ножницы», пакет может — проебаться.
ㅤ
Чтобы этого избежать, логичнее использовать TCP, в rsyslog это делается через двойную собаку.
local0.* @@log.bashdays.com:514
По итогу получаешь:
- Подтверждение доставки (сервер подтверждает приём данных).
- Повторную отправку пакетов, если они теряются.
- Сохранение порядка доставки пакетов.
Короче тут сам выбираешь что тебе важнее, либо скорость, либо надежность.
Запоминаем:
Раз «собака» = UDP
Два «собака» = TCP
Что чаще применяют?
UDP, но если логи прям критичные то TCP, нет серебряной пули, всё зависит от конкретной ситуации. Но тут речь не про это, а про «собак».
Такие дела.
tags: #linux #monitoring
—
🔔 @bashdays➡️ @gitgatelocal0 – local7. Чо эт ваще такое?
ㅤ
Это «Фасилити»… Ладно, это что-то вроде категорий в которые можно завернуть свои логи и потом уже по ним грепать.
Суть этих категорий — не смешивать выхлоп пользовательских программ с системными логами.Системные логи это:
auth, daemon, mail, kern и т.д. Эти штуки ты можешь встретить например при настройке rsyslog конфига.
Рассмотрим пример:
import syslog
syslog.openlog(ident="BashDays", facility=syslog.LOG_LOCAL0)
syslog.syslog(syslog.LOG_INFO, "Привет из local0")
Не проверял, но суть ты поймешь.
Здесь я завернул логи приложения в категорию local0. И теперь могу открыть этот local0 и обрабатывать как мне нужно.
Например, закинуть его в эластик:
local0.* @log.bashdays.com:514
Ну или обработать локально в файл:
local0.* /var/log/local0.log
Так же можно завернуть необходимую группу приложений в эту категорию и отделить ее от системных логов.
Практика использования
local0: логи веб-сервера local1: для docker контейнеров local2: логи бекапов local3: логи крон скриптов local4–local7: резервныеТакие вот пироги. Ничо в этом сложного нет. Просто категории для изоляции, гибкости и скалируемости. Изучай! tags: #linux #monitoring — 🔔 @bashdays➡️ @gitgate
По реверс-шелам у меня есть отдельный пост с подробным мануалом.🎄 Ну и еще раз с Наступающим! Нарезали салатиков? tags: #utilites #linux #security — 🔔 @bashdays➡️ @gitgate
Available now! Telegram Research 2025 — the year's key insights 
