ar
Feedback
Bash Days | Linux | DevOps

Bash Days | Linux | DevOps

الذهاب إلى القناة على Telegram

Авторский блог от действующего девопса Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу. Автор: Роман Шубин Реклама: @maxgrue MAX: https://max.ru/bashdays Курс: @tormozilla_bot Блог: https://bashdays.ru

إظهار المزيد

📈 نظرة تحليلية على قناة تيليجرام Bash Days | Linux | DevOps

تُعد قناة Bash Days | Linux | DevOps (@bashdays) في القطاع اللغوي الروسية لاعباً نشطاً. يضم المجتمع حالياً 23 797 مشتركاً، محتلاً المرتبة 5 708 في فئة التكنولوجيات والتطبيقات والمرتبة 28 124 في منطقة روسيا.

📊 مؤشرات الجمهور والحراك

منذ تأسيسه في невідомо، حقق المشروع نمواً سريعاً وجمع 23 797 مشتركاً.

بحسب آخر البيانات بتاريخ 16 يونيو, 2026، تحافظ القناة على نشاط مستقر. خلال آخر 30 يوماً تغيّر عدد الأعضاء بمقدار -201، وفي آخر 24 ساعة بمقدار -10، مع بقاء الوصول العام مرتفعاً.

  • حالة التحقق: غير موثّقة
  • معدل التفاعل (ER): يبلغ متوسط تفاعل الجمهور 20.40‎%. وخلال أول 24 ساعة من النشر يحصد المحتوى عادةً 11.53‎% من ردود الفعل نسبةً إلى إجمالي المشتركين.
  • وصول المنشورات: يحصل كل منشور على متوسط 4 855 مشاهدة. وخلال اليوم الأول يجمع عادةً 2 744 مشاهدة.
  • التفاعلات والاستجابة: يتفاعل الجمهور بانتظام؛ متوسط التفاعلات لكل منشور يبلغ 17.
  • الاهتمامات الموضوعية: يركز المحتوى على مواضيع رئيسية مثل bashdays, linux, bash, docker, скрипт.

📝 الوصف وسياسة المحتوى

يصف المؤلف القناة بأنها مساحة للتعبير عن الآراء الذاتية:
Авторский блог от действующего девопса Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу. Автор: Роман Шубин Реклама: @maxgrue MAX: https://max.ru/bashdays Курс: @tormozilla_bot Блог: https://bashdays.r...

بفضل وتيرة التحديث المرتفعة (أحدث البيانات بتاريخ 17 يونيو, 2026) تحافظ القناة على حداثتها ومستوى وصول مرتفع. وتُظهر التحليلات تفاعلاً نشطاً من الجمهور، ما يجعلها نقطة تأثير مهمة ضمن فئة التكنولوجيات والتطبيقات.

23 797
المشتركون
-1024 ساعات
-287 أيام
-20130 أيام
أرشيف المشاركات
Программный комплекс ALD Pro от «Группы Астра» успешно сертифицирован по второму уровню доверия ФСТЭК России. Теперь его можн
Программный комплекс ALD Pro от «Группы Астра» успешно сертифицирован по второму уровню доверия ФСТЭК России. Теперь его можно использовать в системах, обрабатывающих информацию, составляющую государственную тайну. Продукт соответствует самым строгим стандартам безопасности и обеспечивает надежную защиту данных. 🔐 Что такое ALD Pro? Это отечественное решение, включённое в реестр российского ПО Минцифры РФ. Оно позволяет управлять учётными записями, правами доступа, обновлять ПО и настраивать системные службы, обеспечивая безопасность вашей ИТ-инфраструктуры. 💼 Почему это важно? Сертификат был выдан после тщательных проверок, проведенных АО «НПО «Эшелон». Это служит подтверждением того, что ALD Pro отвечает всем требованиям защиты информации, установленным ФСТЭК России. Такой апдейт безопасности является важным шагом на пути к обеспечению российских организаций продуктами высокого качества, способными заменить зарубежные аналоги. Узнать о преимуществах подробнее, а также запросить ALD Pro на тест можно здесь. Реклама. ООО "РусБИТех-Астра". ИНН: 7726388700. Erid:2VtzqwezUzN.

Увидал сегодня у коллеги такое:
- name: Установка глобального PATH для Linux
  hosts: all
  become: true
  tasks:
    - name: Создать скрипт для глобального PATH
      copy:
        dest: /etc/profile.d/custom_path.sh
        content: |
          export PATH="/usr/bin:/bin"
        mode: '0644'
      notify: Reload profile

  handlers:
    - name: Reload profile
      command: source /etc/profile
это кусок ансибла если чо Что это за ебать костыль и нахуя? А это оказывается регламент такой внутренний, какие-то требования, которые должны быть применены при настройке новых серверов. И это только 1% из этого плейбука, показать весь по объективным причинам не могу. Короче суть — создается чистая переменная PATH, на глобальном уровне. Обычно это делается для повышения безопасности или для обеспечения предсказуемого поведения скриптов. Определяются только базовые пути. Безопасность: - Уменьшается риск выполнения вредоносного кода из непредсказуемых каталогов. - Снижается вероятность атаки типа Path Hijacking, когда злоумышленник подсовывает вредоносные программы в каталоги, находящиеся в начале PATH. Предсказуемость: - Скрипты и процессы используют конкретные версии утилит, а не случайные исполняемые файлы из пользовательских каталогов. Чистая среда для скриптов: - В автоматизированных сценариях, например, в CI/CD, чистая PATH помогает избежать конфликтов из-за пользовательских переменных окружения. Системное администрирование: - При диагностике или отладке минимальный PATH позволяет исключить влияние пользовательских и нестандартных путей. Например:
#!/bin/bash

export PATH=/usr/bin:/bin
if ! command -v curl &> /dev/null; then
    echo "curl не установлен или не доступен в чистом PATH"
    exit 1
fi

echo "curl доступен, продолжаем..."
Такой подход гарантирует, что скрипт будет использовать только проверенные исполняемые файлы из системных каталогов. Тема конечно больше про безопасность и в обычной жизни встречается крайне редко, всем насрать на Path Hijacking. Пусть за это специально обученные люди отвечают. У нас лапки. tags: #linux 🔔 @bashdays➡️ @gitgate

Докажите, что вы крутой айтишник и спасите Новый год! Гринч украл подарки и готов пойти на все, чтобы испортить жителям город
Докажите, что вы крутой айтишник и спасите Новый год!   Гринч украл подарки и готов пойти на все, чтобы испортить жителям города праздник. Только вы сможете спасти Новый год!   Путешествуйте по городской карте, выполняйте задания и ищите ответы на загадки. Приготовьтесь использовать свою эрудицию, смекалку и внимательность. Вам предстоит: взломать электронный замок, отбить DDoS-атаку, разгадать IT-ребусы и решить множество других задач!   Спасайте Новый год, получайте подарки от Selectel и партнеров и участвуйте в большом январском розыгрыше.   Переходите в бот и начните спасение Нового года прямо сейчас!   Реклама. АО “Селектел”, ИНН: 7810962785, ERID: 2Vtzqx6GGWE

В LF ребята частенько впадают в ступор, пытаются запушить в мастер, а оно такое — эй дядя, иди на хуй, такой ветки нет! Мануалы связанные с этим есть, а ветки нет? В смысле блядь нет? Всю жизнь была, а теперь нет?
Притащу сюда, раз из 10 человек 2е обязательно поинтересуются. Буду ссылку на пост давать, оптимизация процессов.
Это давнишняя история. Ёбнутые дядьки с загнивающего запада кукухой поехали и такие — мы потомки рабов, негоже нас оскорблядь! А в чем оскорбление? Обида на слово «master» Это можно трактовать как — «хозяин». А если ты еще и выгоревший в угли разработчик, то тебе пиздец наверное обидно. Ты типа slave (раб), а целая ветка в гите — «хозяин».
Отправляйся на плантацию в IDE и ебашь больше кода, а затем приноси его «хозяину»!
Ну короче ты понял, господа ёбу дали, лишь бы не работать. Ничо против не имею, у каждого свои загоны. Теперь в лучшем случае гит ветка по умолчанию называется — «main». А какая ветка у тебя основная? У меня «master», ебал я эти качели. Подробнее и душераздирающе можно почитать тут (на русском), особенно комменты доставляют удовольствие. tags: #рабочиебудни 🔔 @bashdays➡️ @gitgate

Учимся разворачивать отказоустойчивые кластеры по ценам 2024 года 🔥 27 января стартует курс «Kubernetes Мега» от учебного це
Учимся разворачивать отказоустойчивые кластеры по ценам 2024 года 🔥 27 января стартует курс «Kubernetes Мега» от учебного центра Слёрм: повышайте устойчивость, безопасность и производительность своих приложений, не ломая кластеры и не роняя прод. За 7 недель вы научитесь: 🔵переносить продукт на платформу k8s разворачивать отказоустойчивые кластеры 🔵ускорять траблшуттинг 🔵повышать отказоустойчивость продукта 🔵разворачивать и обслуживать кластер с автоматической ротацией сертификатов, автодеплоем и правильным хранением секретов ОБНОВИЛИ ВЕСЬ КУРС в сентябре 2024 ⭐️ - Старт 27 января - 7 недель обучения - 78 часов практики - 7 встреч со спикерами Стоимость: ▶️до 28 декабря 2024: 90 000 ₽ ▶️с 1 января 2025: 110 000 ₽ Забронировать скидку или полностью оплатить обучение — на сайте 👈 Реклама ООО «Слёрм» ИНН 3652901451

Привет чокаво. Ребенок щас вопрос задал — пап, а в чем разница? Этож одно и тоже?
source script.sh 
. script.sh
./script.sh
В первых двух случаях, да это одно и тоже. Source и точка (как макдак блядь), это идентичные команды. Точка сделана для краткости. Команда source и точка, используется для выполнения команд из файла в текущем сеансе оболочки.
VAR="bashdays"

source script.sh 
. script.sh
Передаем в скрипт переменную VAR, по итогу если в скрипте сделать echo $VAR, то на экран выведется слово — bashdays. Если же сделать так:
VAR="bashdays"

./script.sh 
Нихуя не выведется и даже не запустится если нет атрибута +x. Потому, что в этом случае запустится новый процесс, который не видит локальные переменные текущей оболочки, если они не были экспортированы. Чтобы это заработало нужно сделать:
export VAR="bashdays"
./script.sh 
Ну и захуячить chmod +x script.sh, тогда все взлетит.
Ааааа, еще в скрипте тебе нужно обязательно вставить shebang.
В случае с source и точка, эти пиздострадания не нужны. Не нужно ничего экспортировать, выставлять +x и добавлять shebang. ➡️ source script.sh и . script.sh Новый процесс: Нет Изменяет окружение текущей оболочки: Да Требует shebang: Нет Требует права на выполнение: Нет ➡️ ./script.sh Новый процесс: Да Изменяет окружение текущей оболочки: Нет Требует shebang: Да Требует права на выполнение: Да Когда это и где применять? - Используем source и точку для скриптов, которые должны изменить текущее окружение. - Используем ./script.sh для независимого выполнения скрипта. Ничего больше нового не скажу. Теперь и ты это знаешь. tags: #linux #bash 🔔 @bashdays➡️ @gitgate

🎥 Вебинар: «Отказоустойчивое хранилище DRBD: настройка, управление, надежность» Хотите защитить свои данные от сбоев и созда
🎥 Вебинар: «Отказоустойчивое хранилище DRBD: настройка, управление, надежность» Хотите защитить свои данные от сбоев и создать отказоустойчивую систему? DRBD — ваш ключ к максимальной надёжности! Что будет на вебинаре: - Разберём, что такое DRBD и как он работает. - Поговорим о типах репликации данных и тонкостях настройки. - Научимся восстанавливать систему после сбоев. Занятие для системных администраторов, инженеров DevOps и специалистов по инфраструктуре. ⭐️ Спикер Андрей Буранов — системный администратор в VK, входит в топ-3 лучших преподавателей образовательных порталов. 🚀 Урок проходит в преддверии старта курса «Инфраструктура высоконагруженных систем». Участники вебинара получат скидку на обучение! ⏰ Встречаемся 26 декабря в 18:00 мск. 👉 Для участия зарегистрируйтесь: https://vk.cc/cGjQBV Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

В linux существует куча всяких оболочек, я имею в виду не bash/zsh, а конкретно их типы: login, non-login, interactive, restricted и т.п. Очередной зоопарк с которым особо никто не разбирается. Давай закроем эту дырку. Interactive Shell — ну тут ежу понятно, ты вводишь в терминале буковки, а оно тебе в ответ что-то выдаёт. Интерактивно? Конечно! По умолчанию именно этот тип стартует при запуске терминала. На этом можно и закончить, но хуй там плавал, поехали дальше. Non-Interactive — Логично? Логично! Этот тип используется в основном для выполнения скриптов или задач в кроне. Когда ты запускаешь скрипт: ./bashdays.sh, интерактивная оболочка смотрит в скрипт и такая — ага, вижу shebang (#!/bin/sh) Запускаю интерпретатор sh. Это и будет считаться не интерактивной оболочкой, все запустится где-то там внутри, в кишках.
Что интересно, при запуске в такой оболочке все твои настройки в .profile/.bashrc игнорируются.
Почему? Из-за совместимости, вдруг ты в .bashrc нахуячил своих переменных и команд, а потом решил этот скрипт перенести на другую машину где нет этих переменных и команд. Такие дела. И в большинстве случаев здесь кроется проблема с выполнением скрипта из крона. Ручками запускаешь — работает. А из крона — нет! Потому что проигнорированы твои поделки в .bashrc и profile. Как вариант, пиши #!/bin/bash или в кроне явно указывай как запускать твой скрипт: bash script.sh Login = Запускается при входе в систему (например через ssh). Оболочка входа перечитывает файлы: /etc/profile, ~/.bash_profile, ~/.bash_login, ~/.profile. Чтобы определить текущий тип оболочки, запусти команду:
echo $0
Если вывод начинается со знака «-» это и есть login shell. Ну или так:
[[ $- == *i* ]] && echo "Interactive" || echo "Non-Interactive"
Non-Login = запускается из существующей сессии (например, внутри терминала из GUI). То есть не требуется авторизация. Не читает ~/.bash_profile вместо этого использует ~/.bashrc. Нипонятно… давай на примере: 1. Ты приходишь домой с работы. 2. Зашел через парадную дверь Login Shell. 3. Снимаешь трусы, всё происходит по определённым правилам (файл .bash_profile). Что происходит: - Ты готов к долгому пребыванию дома. - Тебя «встречают» файлы конфигурации входа (.bash_profile). 4. Ты внутри дома, и открываешь окно, чтобы покурить. 5. Non-Login Shell = это как открыть окно внутри дома. 6. Ты не снимаешь трусы заново — ты уже дома! Файлы .bash_profile не используются, потому что ты уже «внутри». Вместо этого, ты используешь «внутренние» правила дома (это как .bashrc). Login Shell: Зашёл в дом через дверь — загружается .bash_profile. Non-Login Shell: Открыл окно, уже находясь в доме — загружается .bashrc. Restricted Shell = ограниченная оболочка, кастрированные команды, закрученные гайки. Обычно делают для безопасности, чтобы криворукий юзер ничо не сломал.
Возможно ты слышал про rbash, это оно и есть.
System Shell = системная оболочка, используется системой для выполнения фоновых задач и скриптов инициализации (init, systemd). Зачастую это /bin/sh. Subshell = Подоболочка, создается при выполнении скрипта или команд в скобках () или с помощью bash -c. Подоболочка наследует переменные родительской оболочки, но не влияет на них после завершения. Например: (cd /tmp && ls) Есть еще Interactive Login, Interactive Non-Login. 1. Интерактивная оболочка, которая требует входа пользователя (например, через SSH). 2. Интерактивная оболочка, открытая из GUI терминала, но не требует аутентификации пользователя. ➡️ Почитать про shebang ➡️ Почитать про файлы .profile/bashrc и т.п. — Да и вроде всё, закончился зоопарк, по крайней мере про другие типа оболочек я не слышал, либо забыл нахуй.
Напиши в комменты если что-то можно сюда еще приплести, будет интересно.
Увидимся! Шестидневная рабочая неделька обещает быть томной. tags: #linux — 🔔 @bashdays➡️ @gitgate

Что в рот влезло, то и полезно тыгыдык вайл инфинити
while true; do echo -e "\a"; sleep 0.5; done
tags: #tricks #bash — 🔔 @bashdays➡️ @gitgate

Здрасти. Сегодня опять про шаблоны и создание нового пользователя. В прошлом посте я показал skel. Но есть еще одна хуйня, где можно тонко это поднастроить. Находится оно здесь: /etc/default/useradd И выглядит это так:
GROUP=100
HOME=/home
INACTIVE=30
EXPIRE=2024-12-31
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
UMASK=077
USERGROUPS_ENAB=yes
PASS_MAX_DAYS=90
PASS_MIN_DAYS=1
PASS_WARN_AGE=7
То есть ты заранее в этом файле прописываешь необходимые параметры, и затем через useradd оно будет по умолчанию подхватываться. Типа дефолтного шаблона для нового юзера. Все параметры описывать не буду, все логично. Разберем только неочевидный GROUP. GROUP = указывает GID (ID группы) по умолчанию для новой учетной записи. И чо у всех юзеров будет GID = 100? Неа! Этот параметр будет работать, только в случае если в файле /etc/login.defs выставлено USERGROUPS_ENAB=no. Во всех остальных случаях он будет проигнорирован. Заметь что в /etc/default/useradd можешь реврайтить USERGROUPS_ENAB и не лезть в /etc/login.defs. По умолчанию USERGROUPS_ENAB=yes. В этом случае для каждого пользователя создаётся его собственная группа с тем же именем, что и имя пользователя. И у этой группы будет уникальный GID. Например, для пользователя bashdays создаётся группа bashdays с GID 1000. Для следующего будет 1001 и так далее. Короче значение GROUP=100 применяется только тогда, когда пользовательская группа не создаётся автоматически. Такие дела, бери на вооружение. tags: #linux — 🔔 @bashdays➡️ @gitgate

K2 Cloud выкатил кастомные реакции на Хабре! Теперь можно выражать эмоции от статей. Для этого пройди квиз: выбери одну из ИТ
K2 Cloud выкатил кастомные реакции на Хабре! Теперь можно выражать эмоции от статей. Для этого пройди квиз: выбери одну из ИТ-профессий и проведи миграцию в облако. В конце и реакции разблокируешь, и в розыгрыше примешь участие — K2 Cloud дарит новогодние мистери боксы и другие призы. Квиз тут

Собирал docker контейнер и чет меня лог сборки прям напряг. То есть то, что отмечено на скрине красным прямоугольником, это о
Собирал docker контейнер и чет меня лог сборки прям напряг. То есть то, что отмечено на скрине красным прямоугольником, это область которая прокручивается. И предыдущий текст теряется. Ну хуйня же! — подумал я и пошел копать. А всё, как обычно, просто, в строке сборке делаем так:
docker build -t "setuppython" --progress=plain .
Устанавливаем параметр progress=plain и радуемся. Лог сборки прекращает ротироваться и весь мусор теперь на экране. Как альтернатива, можно сделать так:
export BUILDKIT_PROGRESS=plain
И теперь не нужно подставлять в каждую команду сборки этот параметр. progress может быть = autoplain, и tty tty вывод будет «более красивым» для интерактивных терминалов (то есть он будет перезаписываться). plain будет просто выводить все.  auto (по умолчанию) будет предпринята попытка определить, какой из двух вариантов больше подходит для текущей среды. Такие дела. Изучай. tags: #docker #devops — 🔔 @bashdays➡️ @gitgate

В bash есть переменная IFS, отвечающая за разделитель полей при чтении stdin, но нет переменной OFS - для выходного разделителя полей. 🔤🔤🔥🔤🔤🔤🔤 Или есть? Для преобразования можно использовать переменную $* в кавычках. Генерим CSV (comma separated value)
#!/bin/bash

IFS=",$IFS" # добавили запятую
set 1 2 3 4 "5 6" 7 # установили параметры
echo ' $* ='$*
echo '"$*"='"$*"
################### # $* =1 2 3 4 5 6 7 #"$*"=1,2,3,4,5 6,7
Обычно IFS содержит символы пробел, табуляция, перевод строки. Если использовать "$*" (в кавычках обязательно), то в качестве разделителя используется первый символ IFS. Будьте внимательны, команда set устанавливает параметры командной строки текущего экземпляра bash ($1...$N изменятся). tags: #bash #linux — 🔔 @bashdays➡️ @gitgate

Тренинги 🎓 Zabbix Сертифицированный Специалист 7.0 🎓 Zabbix Сертифицированный Профессионал 🎓 Zabbix Сертифицированный Эксп
Тренинги 🎓 Zabbix Сертифицированный Специалист 7.0 🎓 Zabbix Сертифицированный Профессионал 🎓 Zabbix Сертифицированный Эксперт 7.0 — ответ на вопрос «как быстро получить самые полные знания по Zabbix 7.0». Приглашаем на официальные тренинги Zabbix в январе-феврале и марте 2025 года Официальные тренинги Zabbix — лучшая инвестиция, которую вы можете сделать для себя или своих коллег. По итогам прохождения тренингов вы получаете сертификаты от компании Zabbix. Мы опросили участников предыдущих потоков и сформулировали основные преимущества от прохождения тренингов: 📖 устранить пробелы. Часто знания Zabbix ограничиваются эпизодическим изучением документации и фрагментарны. Курс поможет систематизировать знания и откроет для вас новые возможности уже знакомой системы мониторинга. 📖 делать своими силами. Участие подрядчиков в проектах внедрения подразумевает предоставление доступа в ваше окружение. Прохождение официальных курсов Zabbix на русском языке позволит вам выполнять работы своими силами. 📖 распространять знания. Сотрудники, получившие сертификат Zabbix, не просто совершенствуют свои собственные технические навыки — они привносят полученные знания в коллектив и делятся ими со своими коллегами. 📖 получить сертификат. Это официальный вендорский курс Zabbix, переведенный на русский язык. После прохождения курса у вас будет возможность сдать экзамен и получить сертификат. Сертификат подтверждает знания и дает дивиденды компании и мотивацию сотрудникам. 📅 Zabbix сертифицированный специалист 7.0 (ZCS 7.0) 27-31 января 2025 📅 Zabbix сертифицированный профессионал 7.0 (ZCP 7.0) 17-19 февраля 2025 📅 Zabbix сертифицированный эксперт 7.0 (ZCE 7.0) 24-28 марта 2025 Подробную информацию вы можете запросить, написав @galssoftware или через почту welcome@gals.software. Подписывайтесь на наши телеграм-каналы: 🚀 @zabbix_ru — канал о Zabbix и ничего кроме Zabbix 🚀 @usr_bin_linux — канал о лайфхаках по работе с Linux-системами 🚀 @monitorim_it — канал о мониторинге ИТ-систем Реклама. ООО "ГАЛС СОФТВЭР", ИНН: 5047195298, erid: 2Vtzqwnoh2h

Отлаживал сегодня багу связанную с правами доступа. В суть произошедшего вникать не будем. Главное, что багу помогла решить утилита — namei. Устанавливать не нужно, идет в коробке.
Утилита namei — разбивает путь до папки/файла на составляющие и выводит права доступа для каждой из них.
Из этого нихуя не понятно, давай просмотрим на практике. У меня php работает под юзером bashdays. Но при открытии админки, нихуя не работает. Проверяю путь до админки:
namei -l /var/www/bashdays/htdocs/wp-admin/index.php

f: /var/www/bashdays/htdocs/wp-admin/index.php
drwxr-xr-x root     root     /
drwxr-xr-x root     root     var
drwxr-xr-x bashdays bashdays www
drwxr-xr-x bashdays bashdays bashdays
drwx--x--x bashdays bashdays htdocs
drwx------ root root wp-admin
-rw-r--r-- bashdays bashdays index.php
Хм… и вижу, что с правами каталога wp-admin что-то совсем не так. Но почему не использовать ls -la?
ls -la  /var/www/bashdays/htdocs/wp-admin/index.php

-rw-r--r-- bashdays bashdays /var/www/bashdays/htdocs/wp-admin/index.php
Вот и ответ. Ключи для namei:
l — показывает подробный вывод (long listing) для каждого компонента пути. m — показывает права доступа (в виде числового значения, как ls -l). o — показывает владельца и группу каждого компонента. v — детализирует информацию о путях и ошибках. x — показывает права доступа в виде rwx (читаемо).
Давай сравнимnamei - разбирает полный путь на компоненты - показывает каждый компонент пути и его права - отображает права доступа на каждый узел пути - раскрывает симлинки и показывает, куда они ведут - выводит ошибки если путь где-то прерывается ⚪ ls - показывает только содержимое текущего каталога - показывает права только конечного узла - показывает права доступа в текущем каталоге - не показывает цепочку ссылок (только сами ссылки) - меньше подходит для цепочек узлов. Я namei пользуюсь достаточно редко, но метко. В основном руки заточены на ввод именно ls -la. Тут уж как привык. Возможно namei тебе зайдет. Изучай. tags: #utilites #linux — 🔔 @bashdays➡️ @gitgate

Учимся разворачивать отказоустойчивые кластеры по ценам 2024 года 🔥 27 января стартует курс «Kubernetes Мега» от учебного це
Учимся разворачивать отказоустойчивые кластеры по ценам 2024 года 🔥 27 января стартует курс «Kubernetes Мега» от учебного центра Слёрм: повышайте устойчивость, безопасность и производительность своих приложений, не ломая кластеры и не роняя прод. За 7 недель вы научитесь: 🔵переносить продукт на платформу k8s разворачивать отказоустойчивые кластеры 🔵ускорять траблшуттинг 🔵повышать отказоустойчивость продукта 🔵разворачивать и обслуживать кластер с автоматической ротацией сертификатов, автодеплоем и правильным хранением секретов ОБНОВИЛИ ВЕСЬ КУРС в сентябре 2024 ⭐️ - Старт 27 января - 7 недель обучения - 78 часов практики - 7 встреч со спикерами Стоимость: ▶️до 31 декабря 2024: 90 000 ₽ ▶️с 1 января 2025: 110 000 ₽ Забронировать скидку или полностью оплатить обучение — на сайте 👈 Реклама ООО «Слёрм» ИНН 3652901451

Привет. Я устал от сложностей написания Bash курса и решил отдохнуть и написать статью. 🔤🔤🔥🔤🔤🔤🔤
Если кто-то не пьет на Новый Год - читайте эту статью. Голова кружится не хуже, чем от алкоголя.
Сегодня поговорим об очень редко используемом и на мой взгляд, абсолютно ненужном и неадекватно работающем операторе bash. И сравним его с классикой. Представляю Вашему вниманию тернарный (троичной) оператор. В мануале он выглядит так:
expr1 ? expr2 : expr3
Работает оператор так: если expr1 истина, то результат expr2, иначе expr3. Для исследования я написал небольшую тестовую программу
#!/bin/bash
declare -i c=033 #27
declare -i d=044 #36
declare -i k=0 #counter

function wait2sec(){
  sleep 2
  echo $1
}

SECONDS=0
a=$((1 == 2?$(wait2sec c):$(wait2sec d))) #0
echo $((k++)) sec=$SECONDS a=$a

SECONDS=0
((a=1==2?$(wait2sec c):$(wait2sec d))) #1
echo $((k++)) sec=$SECONDS a=$a

SECONDS=0
a=$((1==2?$(wait2sec c):$(wait2sec d))) #2
echo $((k++)) sec=$SECONDS a=$a

SECONDS=0
[[ 1 == 2 ]] && a=$(wait2sec c) || a=$(wait2sec d) #3
echo $((k++)) sec=$SECONDS a=$a

SECONDS=0
[[ 1==2 ]] && a=$(wait2sec c) || a=$(wait2sec d) #4
echo $((k++)) sec=$SECONDS a=$a

####### result #############
# 0 sec=4 a=36
# 1 sec=4 a=36
# 2 sec=4 a=36
# 3 sec=2 a=d
# 4 sec=2 a=c
Функция wait2sec ждет 2 секунды и печатает первый параметр. Дальше идут пять как бы одинаковых блоков.
1 == 2 - expr1 (false) 
wait2sec c - expr2
wait2sec d - expr3
Анализируем результаты: 1. переменные d и с описаны как целые, но начинаются с 0, поэтому bash интерпретирует их как восьмеричные. 2. Тернарный оператор может использоваться только внутри арифметической подсистемы ((...)), в которой переменные допускается извлекать(получать значение) без знака $, поэтому c и d интерпретируются как переменные. 3. У тернарного оператора допустима даже "упоротая" форма (блок 1) 4. В математической подсистеме при сравнении пробелы вокруг знака сравнения на влияют на результат. 5. В блоке 4 допущена ошибка (нет пробелов вокруг знака сравнения, поэтому 1==2 - интерпретируется не как результат сравнения, а как не пустая строка, поэтому результат (истина) не верный. Такие ошибки очень трудно отлаживать. 6. В отличие от классического, башевского, сравнения при использовании тернарного оператора expr2 и expr3 вычисляются вне зависимости от условия. Об этом говорит удвоенное время выполнения блока. 🔤🔤🔤🔤🔤🔤 🅰️🅰️ Всех приглашаю на БЕСПЛАТНЫЙ курс BASH. 👇 ➡️ Записаться: https://t.me/+0j3ugyfKJH1iYzg6 Начало курса 11 января. До окончания записи 25 дней. Ссылку на группу для общения по курсу сообщу после начала курса. Заходите и проходите опросы. tags: #bash #linux — 🔔 @bashdays➡️ @gitgate

Идеальное IT-оборудование в 2024 году — миф? Новые серверы теперь найти в разы сложнее, а вендоры ушли из-за санкций. Поэтому
Идеальное IT-оборудование в 2024 году — миф? Новые серверы теперь найти в разы сложнее, а вендоры ушли из-за санкций. Поэтому стоит обратить внимание на ребят из ITTELO, которые поставляют IT-оборудование для ЛитРес, ЦИАН и других компаний и помогают найти его в условиях санкций. Они уже 10 лет обеспечивают клиентов качественным оборудованием, на которое дают гарантию 5 лет, а их техподдержка надежна как швейцарские часы. Все проблемы с подбором IT-оборудования решают они 👉 ITTELO.RU Реклама. ООО «АйТитело.ру». ИНН 6678087320.

Изба архитектурных костылей Вспомнил тут приколюху при создании нового пользователя в Linux. Ща расскажу. Короче при создании нового юзера, создается папка /home/user и в ней минимальный набор файлов, типа .bashrc, .profile. И все, больше в ней ничего нет.
Про различия .profile/.bashrc и т.п. я писал в этом посте.
Но я хочу для новых пользователей сразу создавать необходимую структуру папок. Например:
/home/user/www/htdocs
/home/user/www/logs
/home/user/www/tmp
Ну тут логично, триггерим какой-нибудь bash скрипт который через mkdir создаст эти папки. НО так не интересно! 😲 В коробке линукса для этого есть /etc/skel. Эта папка служит шаблоном для домашнего каталога нового пользователя. Вот это нихуясе? Ага! Работает это так:
sudo mkdir -p /etc/skel/www/htdocs /etc/skel/www/logs /etc/skel/www/tmp
Создаём необходимый шаблон со структурой папок. Так-же можешь добавить шаблонные файлы .bashrc и .profile Теперь создаем нового пользователя:
sudo useradd -m bashdays
Идем в домашнюю папку нового пользователя и видим, что папка содержит шаблонные папки, которые мы определили в skel. Ну красота же! Можешь создавать альтернативные шаблоны структур и затем это раскатывать так:
sudo useradd -m -k /custom/skel bashdays
И да, все права на папки и файлы автоматически установятся на те что нужно.
Ну и на закуску: Не обязательно хостить пользователей в папке /home, можно сделать так:
sudo useradd -m -d /var/www/bashdays bashdays
В этом случае домашняя папка юзера будет расположена в /var/www/, а в /etc/passwd будет такое:
bashdays:x:1000:1000::/var/www/bashdays:/bin/sh
Вот так вот и живем. Изучай. А какие приколюхи знаешь ты? Камон в комменты. tags: #linux — 🔔 @bashdays➡️ @gitgate

⁉️Хотите понять, как Kubernetes управляет контейнерами? 🔥Узнайте всё о его ключевых компонентах: Control Plane, Worker Nodes
⁉️Хотите понять, как Kubernetes управляет контейнерами? 🔥Узнайте всё о его ключевых компонентах: Control Plane, Worker Nodes, Pods, Namespaces. На открытом вебинаре мы разберём архитектуру Kubernetes и покажем, как настроить систему для масштабирования и отказоустойчивости. 📗Этот урок — ваш первый шаг к созданию инфраструктурной платформы. После вебинара вы поймёте, как управлять контейнерами, их взаимодействием и хранением данных. 🔗Регистрируйтесь на вебинар 17 декабря в 20:00 мск. Участники получат скидку 🎁 на обучение на курсе «Инфраструктурная платформа на основе Kubernetes»: https://vk.cc/cG3oHu Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576