DevOps Portal | Linux @loose_code Channel on Telegram

DevOps Portal | Linux

@loose_code


Присоединяйтесь к нашему каналу и погрузитесь в мир DevOps

Связь: @devmangx

DevOps Portal | Linux (Russian)

DevOps Portal | Linux - это канал, который приглашает вас в захватывающий мир DevOps и Linux. Если вы заинтересованы в разработке, тестировании и сопровождении программного обеспечения, то это место для вас. Здесь вы найдете актуальные статьи, новости, обзоры инструментов и технологий, а также сможете общаться с единомышленниками и специалистами в области DevOps. Наш канал - это не просто информационный ресурс, а целый портал, где вы сможете углубить свои знания и навыки в данной области.

Присоединяйтесь к нашему каналу и погрузитесь в мир DevOps уже сегодня! Связь: @devmangx

DevOps Portal | Linux

17 Feb, 10:07


💡 Совет по Linux

Получайте уведомления, когда ваши команды в терминале завершаются!

$ sudo apt update; notify-send "Обновление завершено" "Получение обновлений завершено"


Замените apt update на любую команду, выполнение которой займет некоторое время. Не забудьте сначала установить inotify-tools:

$ sudo apt install inotify-tools


👉 DevOps Portal

DevOps Portal | Linux

17 Feb, 08:07


Крутая программа для тех, кто уже работает с Linux и хочет погрузиться DevOps.

В двух словах: программа на 2 месяца, ты учишься, тебе еще и платят. Начинка: начинающий и продвинутый курс по Linux, погружение в DevOps. Обучение с практикой, лабораторными и под контролем экспертов из K2 Сloud.

Подробнее можно узнать на сайте

DevOps Portal | Linux

17 Feb, 06:54


🤓 Что такое git stash?

Git stash позволяет временно сохранить черновик ваших изменений, которые еще не были зафиксированы (committed), и вернуть рабочую директорию в чистое состояние. Это полезно, если вам нужно переключиться на другую задачу, но вы не хотите коммитить незавершенную работу.

Как работает Git Stash?

Когда вы выполняете команду git stash, Git берет все незакоммиченные изменения из вашей рабочей директории и сохраняет их в специальном хранилище (stash) — по сути, это стек отложенных изменений. После этого все незакоммиченные изменения удаляются из рабочей копии, и она снова соответствует последнему коммиту (HEAD).

Сохраненные изменения остаются в отдельном месте, пока вы не будете готовы снова применить их. Это позволяет переключаться между ветками, получать обновления из удаленного репозитория, выполнять rebase и другие операции, не мешая текущей незавершенной работе.

Рабочий процесс с Git Stash

🔹Сохранение изменений в stash
Перед тем как зафиксировать изменения в stash, сначала добавьте файлы в индекс, чтобы Git начал их отслеживать:
$ git add .

Если нужно сохранить только определенные файлы, укажите их при добавлении:
$ git add file.txt demo.txt
Затем создайте новый stash:
```bash
$ git stash

Эта команда сохранит ваши изменения и вернет рабочую директорию в состояние последнего коммита.

🔹Присвоение имени stash
Чтобы дать stash понятное название, используйте параметр -m:
git stash -m "<имя>"

Это поможет вам легче идентифицировать нужные сохраненные изменения позже.

🔹Просмотр списка stash'ей
Чтобы увидеть список всех сохраненных stash'ей, используйте:
$ git stash list

Для просмотра краткого описания stash'а выполните:
```bash
git stash show
Где <stash> — это идентификатор stash'а из списка git stash list.

🔹Применение stash'а
Когда вы готовы вернуть сохраненные изменения, используйте команду git stash pop:
git stash pop

Эта команда применяет изменения и удаляет stash из списка. Если вы хотите сохранить stash после применения, используйте:
git stash apply


🔹Применение конкретного stash'а
Чтобы применить stash, кроме последнего, используйте:
git stash apply <stash>

Или:
git stash pop --index <stash>

Где <stash> — идентификатор stash'а из git stash list. apply сохраняет stash, а pop удаляет его после применения.

🔹Создание новой ветки с stash'ем
Вы можете создать новую ветку и применить к ней изменения из stash'а:
git stash branch <branch-name> <stash>

Эта команда создаст новую ветку с изменениями из stash'а, привязанными к коммиту, в котором stash был создан.

🔹Удаление stash'ей
Когда stash больше не нужен, удалите его командой:
git stash drop <stash>

Это удаляет один stash. Чтобы удалить все stash'и, используйте:
git stash clear

После очистки stash'и невозможно будет восстановить.

🔹Дополнительные возможности
Git stash поддерживает множество дополнительных опций, включая возможность отправки stash'ей в удаленный репозиторий. Подробнее читайте в официальной документации.

Когда использовать Git Stash?

Git stash полезен в следующих ситуациях:
🔹Переключение на другую ветку для получения обновлений
🔹Временное сохранение работы для исправления критической ошибки (hotfix)
🔹Разрешение конфликтов при выполнении git rebase
🔹Пауза в работе для слияния другой ветки в вашу

С помощью stash можно легко менять контексты работы без необходимости делать временные коммиты.

Заключение
Git stash позволяет откладывать локальные изменения без коммитов, помогая гибко управлять рабочим процессом и переключаться между ветками. Это делает его важным инструментом для эффективной работы с Git.

👉 DevOps Portal

DevOps Portal | Linux

16 Feb, 09:17


💡 Быстрый совет по Linux 🐧

Команда diff — полезный инструмент для поиска различий между файлами в терминале Linux. Однако, icdiff предлагает еще более удобное сравнение, выводя файлы бок о бок с цветным отображением изменений.

$ icdiff config-1 config-2


Результат выведет оба файла рядом, с выделением различий красным и зеленым цветами, что позволяет легко увидеть различия.

👉 DevOps Portal

DevOps Portal | Linux

16 Feb, 07:17


В конце 2022 года Bitcoin стоил $16k, Solana – $8, мемкоины никто не воспринимал всерьёз. Прошло чуть больше года – BTC x7, Solana x25, мемкоины улетели на десятки тысяч процентов.

Так же было и с "монетой Трампа" – многие не понимали, как зайти на раннем этапе, а те, кто разобрался, сделали x100+.

Секрет? Крупные игроки не ждут сигналов в СМИ – они заходят, пока толпа спит.

Чтобы не копаться самому – читай канал Crypto Master.

Здесь все основные и ранние инсайды!

Подписывайся – следующий x100 может быть твоим:
https://t.me/+cSLHRmotJjllMjIy

DevOps Portal | Linux

16 Feb, 06:07


Docker Daemon (Демон Docker)

Демон Docker — это серверная составляющая Docker, которая работает в фоновом режиме для управления образами Docker, контейнерами, сетями и томами.

Он играет ключевую роль в архитектуре Docker, слушая запросы API от клиента Docker и выполняя запрашиваемые операции.

—Ниже приведены основные функции демона Docker:

1. Управление образами

🔹Управляет Docker-образами, которые используются как шаблоны для создания контейнеров.
🔹Загружает образы из реестра Docker (например, Docker Hub) и сохраняет их локально на хосте Docker.
🔹Управляет жизненным циклом и хранением этих образов.

2. Управление контейнерами

🔹Отвечает за запуск, остановку и управление контейнерами Docker.
🔹Создает новый контейнер из образа при выполнении команды docker run.
🔹Останавливает и удаляет контейнеры в ответ на команды docker stop и docker rm.

3. Сетевое управление

🔹Управляет сетями Docker, которые соединяют контейнеры друг с другом и с внешними системами.
🔹Поддерживает различные сетевые драйверы (например, bridge, host, overlay, macvlan) для обработки различных сетевых требований и сценариев.

4. Управление томами

🔹Управляет томами Docker для сохранения данных, генерируемых контейнерами.
🔹Позволяет подключать тома к контейнерам во время их работы, что позволяет сохранять и обмениваться данными между контейнерами.

5. API

🔹Предоставляет REST API для программного взаимодействия с Docker.
🔹Клиент Docker использует этот API для отправки команд (например, создание контейнеров или управление образами) демону.

— Как работает демон Docker

🔹Фоновый процесс: работает непрерывно в фоновом режиме на хосте Docker.
🔹Взаимодействие: прослушивает запросы API от клиента Docker через Unix-сокет или сетевой порт.
🔹Настройка: может быть настроен с помощью различных параметров, таких как драйверы хранения, сетевые драйверы и параметры логирования, для разных вариантов использования.

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

👉 DevOps Portal

DevOps Portal | Linux

14 Feb, 11:15


Быстрый совет по Linux 🐧

Вы можете использовать опцию -exec команды find, чтобы вызвать внешнюю программу для выполнения определённого действия над найденными файлами, соответствующими заданным критериям. Например, удаление файлов, вывод прав доступа и т. д.

$ find ~/ -type f -exec ls -lah {} \;


Это особенно полезно, когда нужно выполнить одно и то же действие над несколькими файлами, расположенными в разных местах.

Приведённая команда выводит информацию о правах доступа и других метаданных для каждого найденного файла.

Разбор опции -exec:
🔹exec ls — указывает find выполнить команду ls для каждого найденного файла.
🔹-lah — отображает все файлы (включая скрытые), их права доступа и другие метаданные (например, размер) в удобочитаемом формате.
🔹{} — это специальный placeholder, заменяемый именем каждого найденного файла. Он всегда должен быть последним в списке параметров.
🔹; — указывает конец списка параметров. Его необходимо экранировать (\;), иначе shell интерпретирует его неправильно.

Также вместо ; можно использовать +, что позволяет передавать сразу несколько файлов в одну команду. Между + и {} должен быть пробел.

Можно выполнять несколько команд с помощью -exec. Например, следующая команда считает количество слов в текстовых файлах и их занимаемое место на диске:

$ find . -name "*.txt" -exec wc {} \; -exec du -sh {} \;


👉 DevOps Portal

DevOps Portal | Linux

14 Feb, 05:35


Лучшие практики использования томов Docker
🔹Используйте именованные тома для важных данных.
🔹Регулярно очищайте неиспользуемые тома, чтобы не занимать дисковое пространство.
🔹Будьте осторожны с привязанными томами, так как они дают контейнеру доступ к файловой системе хоста.
🔹Используйте плагины для томов для расширенных возможностей, таких как шифрование и снапшоты.

Заключение
Docker Volumes — это мощный инструмент для управления данными в контейнерах. Их грамотное использование значительно упрощает развертывание, разработку и администрирование контейнеризированных приложений.

👉 DevOps Portal

DevOps Portal | Linux

14 Feb, 05:35


👩‍💻 Docker Volumes: Полное руководство

Контейнеры Docker изначально задумывались как эфемерные, то есть их файловая система не сохраняется после остановки или удаления контейнера. Docker Volumes (тома) обеспечивают механизм хранения и обмена данными, который выходит за пределы жизненного цикла контейнера, предотвращая потерю данных. Это особенно важно для приложений, которым требуется постоянное хранилище, таких как базы данных, CMS или stateful-сервисы.

Типы томов Docker
Существует три основных типа томов в Docker:

🔹Именованные тома (Named Volumes)
Это наиболее распространенный и удобный тип. Они управляются самим Docker и хранятся в файловой системе хоста в специальном каталоге (/var/lib/docker/volumes/ на Linux). Именованные тома подходят для хранения данных, требующих сохранности (например, базы данных) и легко поддаются резервному копированию или миграции.

🔹Анонимные тома (Anonymous Volumes)
Анонимные тома, как и именованные, управляются Docker, но не имеют явного имени. Они используются для временных данных, которые не нужно сохранять между пересозданиями или перезапусками контейнера. Их сложнее отслеживать, и они автоматически удаляются, когда контейнер, их использующий, уничтожается.

🔹Привязанные тома (Bind Mounts)
В отличие от обычных томов, привязанные тома позволяют монтировать конкретный каталог или файл с хостовой системы в контейнер. Этот метод предоставляет больше контроля над местоположением и правами доступа к данным. Изменения, внесенные в файлы на хосте, сразу отображаются в контейнере и наоборот. Bind mounts удобны для совместного использования конфигурационных файлов или исходного кода в процессе разработки.

Создание и монтирование именованных томов

Создать именованный том можно командой:

docker volume create jenkins_home

Если имя не указано, Docker сгенерирует его автоматически.

Для запуска контейнера с монтированным томом используйте флаг -v:

docker run -d --name jenkins -p 8080:8080 -v jenkins_home:/var/data jenkins/jenkins

В этом примере том jenkins_home монтируется в контейнер по пути /var/data.

По умолчанию тома монтируются с правами чтения-записи. Чтобы примонтировать том в режиме "только для чтения", используйте :ro:

docker run -d --name jenkins -p 8080:8080 -v jenkins_home:/var/data:ro jenkins/jenkins


Создание и монтирование анонимных томов

Анонимный том создается автоматически при запуске контейнера с -v, но без указания источника:

docker run -d -v /data nginx


Создание и монтирование привязанных томов

Привязанные тома используют файловую систему хоста, а не Docker. Чтобы создать bind mount, необходимо заранее создать нужный каталог или файл на хосте.

Для монтирования каталога используйте флаг -v:

docker run -d -p 80:80 -v $(pwd):/data nginx


Или более явный --mount:
docker run -d -p 80:80 --mount type=bind,source=$(pwd),target=/data nginx


Теперь любые файлы, созданные в /data внутри контейнера, появятся в текущем каталоге на хосте.

Важно: следите за правами доступа, чтобы избежать проблем с доступом к файлам.

Просмотр и управление томами Docker

🔹Список всех томов в системе:
docker volume ls


🔹Просмотр информации о томе:
docker volume inspect jenkins_home


🔹Удаление томов Docker
Удаление конкретного тома:
docker volume rm jenkins_home


Удаление всех неиспользуемых томов:
docker volume prune


Анонимные тома и привязанные тома обычно удаляются вместе с контейнером.

Практическое применение Docker Volumes

🔹Сохранение данных: базы данных или файловые хранилища сохраняют данные даже после удаления контейнера.
🔹Общий доступ к данным: несколько контейнеров могут использовать общий том.
🔹Разработка: привязанные тома позволяют разрабатывать без пересборки контейнеров, так как код обновляется на лету.
🔹Резервное копирование и миграция: данные тома можно скопировать с одного хоста на другой.

DevOps Portal | Linux

13 Feb, 16:36


💡 Совет дня по Linux 🐧

В Linux оператор конвейера (|) полезен, когда нужно направить вывод одной команды на вход другой для дальнейшей обработки:

$ cat data.txt | grep "No such file"


Однако это не перенаправляет ошибки. Если файл не существует, команда grep не даст результата.

Что если нужно перенаправить и обработать как ошибки, так и обычный вывод? 🤔

Здесь на помощь приходит оператор перенаправления |&.

Этот оператор направляет как стандартный вывод (stdout), так и стандартные ошибки (stderr) первой команды через конвейер на стандартный ввод (stdin) второй команды. Посмотрите на следующий пример:

$ cat data.txt |& grep "No such file"


Обратите внимание на разницу: команда grep смогла найти совпадение.

Оператор |& в bash является сокращением для оператора перенаправления 2>&1 |:

$ cmd-1  2>&1  |  cmd-2


👉 DevOps Portal

DevOps Portal | Linux

13 Feb, 10:18


💻 Основные компоненты Kubernetes

Управление современными распределенными приложениями — это сложная задача. Обеспечение надежности, масштабируемости и отказоустойчивости систем требует использования сложных инструментов оркестрации.

И здесь на помощь приходит Kubernetes.

Kubernetes (K8s) упрощает развертывание, масштабирование и управление контейнеризованными приложениями, становясь основой современной практики DevOps.

В своей основе Kubernetes строится на нескольких ключевых компонентах, каждый из которых выполняет свою роль.

Понимание этих компонентов даст вам крепкую базу знаний — давайте погрузимся 😱

🔹Node: Машины (физические или виртуальные), на которых работают контейнеризованные приложения. Узлы (Nodes) хостят рабочую нагрузку, которая состоит из Pods.

🔹Pod: Самая мелкая единица развертывания в Kubernetes, содержащая один или несколько контейнеров, которые делят хранилище, сеть и ресурсы.

🔹Control plane (Управляющая плоскость): "Мозг" кластера, управляющий состоянием системы и контролирующий работу узлов и Pods.

Состав управляющей плоскости:

API сервер: обрабатывает запросы на управление кластером
Scheduler (Планировщик): назначает Pods на узлы
Controller manager (Менеджер контроллеров): поддерживает желаемое состояние системы
etcd: хранит конфигурацию кластера и его состояние в виде распределенного хранилища ключ-значение

🔹Service (Сервис): Предоставляет стабильные конечные точки (IP/DNS), чтобы обеспечить связь между Pods или открыть приложения для внешних пользователей.

🔹Ingress: Управляет внешним трафиком HTTP/HTTPS, направляя его к соответствующим сервисам внутри кластера.

🔹Namespace: Виртуальный кластер в рамках Kubernetes, позволяющий изолировать ресурсы и поддерживать многопользовательскую среду.

🔹Persistent Volume (Постоянный том): Отделяет хранилище от Pods, обеспечивая сохранность данных при перезапуске или удалении контейнеров.

Все эти компоненты работают вместе, создавая мощную систему для автоматизации оркестрации приложений. Kubernetes стал основой для обеспечения надежности и масштабируемости в современных программных системах.

Однако это не решение для каждого приложения. Есть крутой кривой обучения и высокая сложность. В некоторых случаях более простые или легковесные решения, такие как Docker Swarm или PaaS-платформы, могут быть более подходящими

👉 DevOps Portal

DevOps Portal | Linux

13 Feb, 07:25


Что такое параметризованные пайплайны в Jenkins?

Динамичные и переиспользуемые пайплайны

Параметризованные пайплайны в Jenkins позволяют передавать пользовательские входные данные при запуске билда, делая конвейеры более гибкими и универсальными. Это позволяет использовать один и тот же пайплайн для разных сценариев без необходимости значительных изменений в коде.

Применение:
🔹Конфигурация сборок: Запуск сборок для разных окружений (dev, staging, production), веток или версий приложения.
🔹Тестирование: Выполнение тестов на разных браузерах, операционных системах и конфигурациях.
🔹Деплой: Развертывание приложения в различные среды с индивидуальными настройками.
🔹Кастомные workflow: Возможность задавать параметры вручную для специфических задач.

Создание параметризованного пайплайна

1. Определение параметров: В Jenkins Pipeline (в декларативном или скриптовом синтаксисе) используется директива parameters для объявления доступных параметров:
pipeline {
parameters {
string(name: 'ENVIRONMENT', defaultValue: 'dev', description: 'Целевое окружение для деплоя (dev, staging, prod)')
choice(name: 'BUILD_TYPE', choices: ['Release', 'Debug'], description: 'Тип сборки')
}
}


2. Использование параметров: Обращение к значениям, введенным пользователем, через объект params в шагах пайплайна:
stages {
stage('Build') {
steps {
echo "Сборка для окружения: ${params.ENVIRONMENT}"
echo "Тип сборки: ${params.BUILD_TYPE}"
}
}
}


3. Запуск сборок: При старте параметризованного пайплайна в UI Jenkins появится форма для ввода параметров.

Типы параметров в Jenkins:
🔹String: Текстовый ввод.
🔹Choice: Выпадающий список значений.
🔹Boolean: Флаг (true/false).
🔹File: Загрузка файла.
🔹Password: Скрытый ввод для конфиденциальных данных.
🔹И другие. (Полный список доступен в документации Jenkins.)

— Преимущества параметризованных пайплайнов:
🔹Гибкость: Управление процессами без изменения кода пайплайна.
🔹Переиспользуемость: Один пайплайн можно применять для разных задач.
🔹Удобство: Позволяет даже нетехническим пользователям запускать билды с нужными параметрами.
🔹Оптимизация CI/CD: Упрощает процессы непрерывной интеграции и доставки (CI/CD).

— Дополнительные замечания:
🔹Можно задавать параметры по умолчанию.
🔹В истории билдов отображаются введенные параметры для каждого запуска.
🔹Для управления параметризованными пайплайнами можно использовать Jenkins Shared Libraries.

👉 DevOps Portal

DevOps Portal | Linux

12 Feb, 14:07


💡 Быстрый совет по Linux 🐧

Многие либо не знают об этом, либо редко используют.

Нажатие Ctrl+U в терминале Linux удаляет все от позиции курсора до начала строки.

Аналогично, Ctrl+K удаляет все от позиции курсора до конца строки.

Это особенно полезно, если вы неправильно ввели пароль. Вместо того чтобы долго удерживать клавишу backspace, просто нажмите Ctrl+U, чтобы очистить ввод и ввести пароль заново.

Эти сочетания клавиш имеют множество других практических применений

👉 DevOps Portal

DevOps Portal | Linux

12 Feb, 06:47


Как работает преобразование сетевых адресов (NAT)

Преобразование сетевых адресов (NAT) — это фундаментальная технология в современных сетях, которая позволяет устройствам в частной сети обмениваться данными с внешними сетями, такими как Интернет, используя один публичный IP-адрес. Эта возможность критически важна для экономии ограниченных ресурсов IPv4-адресов и повышения безопасности сети. Рассмотрим, как работает NAT на основе приведенной инфографики.

Основы NAT

NAT работает, изменяя информацию о IP-адресах в пакетах, когда они проходят через маршрутизатор или брандмауэр. Конкретно, он преобразует частные IP-адреса в локальной сети в публичный IP-адрес для связи с внешними сетями.

Компоненты и процесс

1. Частная сеть и публичный IP:

🔹Устройства в частной сети получают частные IP-адреса (например, 192.168.3.6, 192.168.3.7, 192.168.3.8).
🔹Маршрутизатор, выполняющий NAT, имеет частный IP-адрес (например, 192.168.3.0/24) на своем внутреннем интерфейсе и публичный IP-адрес (например, 200.100.10.1) на внешнем интерфейсе, предоставленный поставщиком Интернет-услуг (ISP).

2. Преобразование пакетов:

🔹Когда устройство (например, 192.168.3.6) хочет общаться с внешним сервером (например, 65.44.21.24) через Интернет, оно отправляет пакет с своим частным IP-адресом в качестве источника.
🔹Маршрутизатор с включенным NAT перехватывает этот пакет. Прежде чем отправить его в назначение, маршрутизатор заменяет частный IP-адрес (192.168.3.6:5733) на свой публичный IP-адрес (200.100.10.1:5733). Этот процесс позволяет пакету пройти через Интернет, поскольку он не маршрутизирует частные IP-адреса.

3. Поддержание сеансов:

🔹Маршрутизатор поддерживает таблицу NAT для отслеживания активных сеансов. Эта таблица содержит соответствия между внутренними частными IP-адресами и портами и внешними публичными IP-адресами и портами.
🔹Например, таблица NAT может отображать соответствие 192.168.3.6:5733 -> 200.100.10.1:5733, что позволяет маршрутизатору корректно перенаправлять ответы обратно на исходное устройство в частной сети.

4. Обратное преобразование пакетов:

🔹Когда внешний сервер (65.44.21.24) отвечает, он отправляет пакеты на публичный IP-адрес (200.100.10.1:5733).
🔹NAT-маршрутизатор перехватывает эти входящие пакеты, обращается к таблице NAT и преобразует адрес назначения обратно в частный IP-адрес (192.168.3.6:5733), прежде чем отправить его соответствующему внутреннему устройству.

Преимущества NAT

🔹Сохранение IP-адресов: NAT позволяет нескольким устройствам в локальной сети использовать один публичный IP-адрес, что значительно уменьшает количество требуемых IP-адресов.
🔹Безопасность: NAT скрывает внутренние IP-адреса сети, обеспечивая дополнительный уровень безопасности, предотвращая прямой доступ к внутренним устройствам из внешней сети.

Заключение

NAT — это важная технология, которая помогает эффективно использовать IP-адреса и повышать безопасность сети. Преобразуя частные IP-адреса в публичные и управляя этими соответствиями, NAT обеспечивает бесперебойную связь между частными сетями и Интернетом. Эта функциональность незаменима в условиях ограниченных ресурсов IP-адресов и повышенных требований к безопасности.

👉 DevOps Portal

DevOps Portal | Linux

11 Feb, 18:54


💡Совет по Bash-скриптам

Вы можете использовать ловушку DEBUG, чтобы шаг за шагом проходить через bash-скрипт, давая вам возможность проверять каждую строку перед её выполнением — это идеально для отладки!

— Вот как это работает:

Команда trap с параметром DEBUG срабатывает сразу перед выполнением каждой строки, приостанавливая выполнение, чтобы вы могли решить, хотите ли продолжить. Это как интерактивное «пошаговое выполнение» вашего bash-скрипта.

В отличие от sh -x, который выводит каждую строку без остановки, этот метод позволяет вам контролировать выполнение каждой команды перед её запуском.

Ловушка DEBUG не является настоящим сигналом, а представляет собой специальную функцию (псевдосигнал), которая срабатывает перед каждой строкой скрипта, что удобно для понимания поведения скрипта построчно.

Вы также можете изучить похожие псевдосигналы, такие как EXIT, который выполняет команды перед завершением скрипта; RETURN, который срабатывает при возврате из функции или после того, как скрипт был загружен (с помощью source или .); и ERR, который обрабатывает команды, возвращающие ненулевой код завершения при активированном set -e.

👉 DevOps Portal

DevOps Portal | Linux

11 Feb, 10:07


💡 Быстрый совет по Linux 🐧

Когда вы запускаете программу в терминале или по SSH, она завершится сразу после закрытия сессии терминала (когда вы выйдете из него) или при разрыве соединения.

Чтобы избежать этого и сохранить выполнение программы и всех её процессов, используйте команду nohup (сокращение от no hangup – «без зависания»). Она игнорирует все сигналы разрыва соединения, позволяя процессу продолжать работу даже при закрытии терминала.

Например, чтобы сжать большой объем данных с помощью команды tar и гарантировать, что процесс не прервётся при случайном закрытии терминального окна, выполните команду:

$ nohup tar -cf archive.tar file1 file2


Также nohup создаёт файл nohup.out, в который записывает вывод команды:

$ cat nohup.out


Альтернативно, можно использовать tmux, disown или screen.

👉 DevOps Portal

DevOps Portal | Linux

11 Feb, 06:59


🖥 Основные компоненты Docker: объяснение

Docker решает проблему «у меня на машине работает» 😱

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

Docker решает проблему «у меня на машине работает» и упрощает развертывание приложений, инкапсулируя их вместе с зависимостями в стандартизированные, масштабируемые и изолированные контейнеры (контейнеризация).

В основе Docker лежит несколько ключевых компонентов.

Разбираясь в них, вы получите прочную базу понимания. Давайте разберем их!

🔸Образы (Images)
Образы — это неизменяемые шаблоны, используемые для создания контейнеров. Они создаются с помощью инструкций в Dockerfile или загружаются из Docker-реестра, такого как Docker Hub.

🔸Контейнер (Container)
Контейнер — это запущенный экземпляр образа. Это легковесный, автономный пакет, содержащий все необходимое для работы приложения.

🔸Dockerfile
Файл, содержащий последовательность команд для создания образа Docker.

🔸Docker Engine
Docker Engine отвечает за запуск и управление контейнерами. Он состоит из демона Docker и CLI-инструмента, взаимодействующего с ним через REST API.

🔸Docker Daemon
Фоновый сервис, управляющий объектами Docker. Он обрабатывает API-запросы и управляет образами, контейнерами, сетями и томами хранения.

🔸Docker Registry
Репозитории для хранения и распространения образов Docker. Реестры могут быть публичными или частными. По умолчанию Docker использует публичный реестр Docker Hub.

🔸Сеть Docker (Docker Network)
Контейнеры работают в сетях, что позволяет им взаимодействовать друг с другом и с внешним миром. Сеть предоставляет коммуникационный шлюз между контейнерами на одном или разных хостах.

🔸Тома (Volumes)
Тома позволяют сохранять данные вне контейнера и делиться ими между контейнерными инстансами, даже после удаления контейнера. Они обеспечивают независимость данных от жизненного цикла контейнера.

Все эти компоненты взаимосвязаны, создавая удобную систему для автоматизации развертывания, масштабирования и управления приложениями. Благодаря этому Docker стал мощным и важным инструментом в современной разработке программного обеспечения.

👉 DevOps Portal

DevOps Portal | Linux

10 Feb, 07:00


💡 Совет по Linux

Получите контекст вашего поиска с помощью grep, используя параметр -C:

$ grep -C3 filename


Это покажет 3 строки до и после найденного совпадения.

Очень помогает при анализе логов 😎

👉 DevOps Portal

DevOps Portal | Linux

10 Feb, 04:54


Структура манифеста развертывания Kubernetes: объяснение

В YAML-файле развертывания Kubernetes определяется, как приложение должно быть развернуто и управляться в кластере Kubernetes.

Ниже приведена структура YAML с пояснениями.

Объяснение ключевых разделов

🔸apiVersion & kind: Определяет, что этот ресурс является развертыванием и использует API Kubernetes apps/v1.
🔸metadata: Содержит информацию, такую как имя и метки для организации приложения.
🔸spec.replicas: Определяет желаемое количество работающих экземпляров (Pod'ов).
🔸spec.selector.matchLabels: Гарантирует, что развертывание управляет только Pod'ами с соответствующими метками.
🔸spec.template:
- Определяет шаблон Pod'а (его metadata и spec).
- Раздел containers описывает контейнер, включая образ, порты и ресурсы.
- Можно также задать переменные среды, монтирование томов и лимиты ресурсов.
🔸spec.strategy: Управляет стратегией обновления развертывания (RollingUpdate или Recreate).
🔸volumes: Позволяет определить постоянное хранилище, такое как ConfigMaps, Secrets или Persistent Volumes.

— Дополнительные параметры
🔸Проверки работоспособности: Liveness & Readiness Probes
🔸Управление размещением: Affinity & Node Selectors
🔸Предварительная обработка: Init Containers

👉 DevOps Portal

DevOps Portal | Linux

06 Feb, 17:39


💡 Быстрый совет по Docker

Хотите узнать, сколько дискового пространства занимают образы, контейнеры, локальные тома или кэш сборки?

Используйте команду:

docker system df


👉 DevOps Portal

DevOps Portal | Linux

06 Feb, 14:07


Работаешь в сфере IT?

👨‍💻 Тогда выбирай свой уровень:

• Новичок: Полноценная помощь с трудоустройством. Проведение интервью, работа с ментором, создание персонального RoadMap и резюме под ключ! Работа до результата с кандидатами любого уровня!

• С опытом: Предоставим статус «Toп-специалиста», откроем доступ к эксклюзивным вакансиям. Возьмем на себя продвижение вашей кандидатуры компаниям, гарантируем высокую зарплату с учетом пожеланий по загрузу и условиям труда!

Еще больше информации👇
Канал:
@rabotayou_ru
Сайт:
rabotayou.ru
Бот:
@rabota_you_bot

DevOps Portal | Linux

06 Feb, 06:31


Это репозиторий примеров из книги "Ansible for DevOps" Джеффа Гирлинга.

Он демонстрирует использование Ansible для автоматизации серверов и управления конфигурациями, с реальными примерами и плейбуками

👉 https://github.com/geerlingguy/ansible-for-devops

👉 DevOps Portal

DevOps Portal | Linux

04 Feb, 07:56


Строим контейнерные образы как профи 😎

Множество ресурсов по созданию образов:
🔹5 учебных пособий по композиции образов, выбору базового образа, многоступенчатым сборкам и образам без дистрибутива.
🔹12 практических задач для создания и отладки образов.

Посмотреть здесь: https://labs.iximiuz.com/skill-paths/build-container-images

👉 DevOps Portal

DevOps Portal | Linux

03 Feb, 16:07


Docker против Kubernetes: В чем разница?

Оба инструмента играют важную роль в современном облачном разработке и DevOps, но их задачи различаются. Понимание разницы между ними важно для эффективного управления контейнерами в облачных вычислениях и архитектурах микросервисов.

Docker

🔹 Платформа для контейнеризации.
🔹 Упаковывает приложения и зависимости в контейнеры.
🔹 Обеспечивает переносимость между средами.
🔹 Запускает контейнеры на одном хосте.
🔹 Используется в CI/CD-пайплайнах для автоматизации развёртывания.

Kubernetes

🔹 Система оркестрации контейнеров.
🔹 Управляет контейнеризированными приложениями на большом масштабе.
🔹 Обрабатывает развёртывание, масштабирование и сетевые взаимодействия.
🔹 Распределяет рабочие нагрузки между несколькими узлами.
🔹 Оптимизирован для микросервисов и облачно-ориентированных приложений.

Как они работают вместе

Docker создает и запускает контейнеры. Kubernetes оркестрирует и управляет ими в большом масштабе. Вместе они позволяют создавать масштабируемые и устойчивые облачные системы и DevOps-процессы.

Нужны ли вам оба инструмента?

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

👉 DevOps Portal

DevOps Portal | Linux

03 Feb, 08:06


Kubernetes 101: назначение Pod'ов на узлы

В статье подробно рассматриваются механизмы назначения Pod'ов на узлы в Kubernetes.

Автор объясняет такие инструменты, как nodeSelector, nodeAffinity и taints/tolerations, которые позволяют контролировать, где именно будут запускаться ваши Pod'ы

👉 Ссылка на статью

👉 DevOps Portal

DevOps Portal | Linux

02 Feb, 18:17


💻 Совет по устранению неполадок в Kubernetes: Устранение проблем с сетью.

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

Лично я предпочитаю использовать инструмент "Netshoot", основанный на Docker-образе. В нем есть большинство необходимых инструментов (ping, curl, dig, nmap, netcat и т. д.), и его можно запустить как временный под. Он будет работать, пока вы им пользуетесь, а как только вы выйдете из пода, тот сразу же будет удален.

Команда для его запуска:
❯ kubectl run tmp-shell --rm -i --tty --image nicolaka/netshoot --namespace=<namespace> -- /bin/bash

👉 DevOps Portal

DevOps Portal | Linux

02 Feb, 06:25


Быстрый совет по Linux 🐧

Если вы хотите удалить пустые директории, команда find может упростить задачу:

$ find . -type d -empty -exec rmdir -v {} +

Опция -type d ищет директории, -empty выбирает пустые, а -exec rmdir {} выполняет команду rmdir, чтобы удалить их.

Команда rmdir гарантирует, что директория пуста, прежде чем удалить её.

Альтернативно, вы можете использовать эту команду для выполнения той же задачи:

$ find . -type d -empty -delete


👉 DevOps Portal

DevOps Portal | Linux

01 Feb, 16:07


DevOps
MLOps
CloudOps
AlOps
DataOps
ITOps
RevOpS
FinOps
HROps
LegalOps
SysOps
BizOps
DevSecOps
ClickOps
LLMOps
ChatOps
NoOps

👉 DevOps Portal

DevOps Portal | Linux

31 Jan, 13:04


Dockerfile: рекомендации и ошибки

Типичный совет, который часто дают, — избегать использования кэша менеджера пакетов. На первый взгляд это кажется логичным, потому что:

🔹Последующие сборки не смогут повторно использовать кэш.
🔹Кэшированные файлы увеличат размер финального образа.

...но что если я скажу вам, что:

🔹Разные запуски команды docker build могут повторно использовать кэш менеджера пакетов.
🔹Кэшированные файлы не попадут в финальный образ.
🔹Кэш будет работать, даже если один из вышеуказанных слоев изменится.

И все, что для этого нужно, это использовать инструкцию RUN --mount=type=cache. Вот пример для сборки образа с Python 👆

👉 DevOps Portal

DevOps Portal | Linux

30 Jan, 14:23


Введите в вашем терминале эту команду:

watch -d -n 1 sensors


Это отображает данные о температуре CPU, GPU, Wi-Fi, NVMe SSD и HDD в реальном времени.

Подробнее: https://cyberciti.biz/faq/howto-linux-get-sensors-information/

👉 DevOps Portal

DevOps Portal | Linux

30 Jan, 08:47


💡🐧 Быстрый совет по Linux

Команда ls — отличный инструмент командной строки для вывода списка файлов и каталогов в Linux.

Однако lsd — это еще более современная альтернатива ls. Она добавляет значки, цветной вывод и делает представление информации более удобным и наглядным.

$ lsd -lah


Если команда lsd не установлена в вашей системе по умолчанию, обратитесь к документации вашей системы для инструкций по установке.

👉 DevOps Portal

DevOps Portal | Linux

29 Jan, 09:37


⚙️ Руководство по сетевому программированию в Linux — LinuxNetworkProgramming

Полный учебник, охватывающий всё:
Основы сетевого программирования в Linux
Работа с сокетами
Создание HTTP/TCP-клиентов
Использование неблокирующих сокетов
Безопасная коммуникация с libcurl и OpenSSL

👉 GitHub: LinuxNetworkProgramming

👉 DevOps Portal

DevOps Portal | Linux

29 Jan, 06:29


DevOps Roadmap 2025

Этот дорожный план поможет вам освоить ключевые навыки и технологии, необходимые для того, чтобы стать успешным инженером DevOps в 2025

👉 DevOps Portal

DevOps Portal | Linux

28 Jan, 11:16


Atuin

Это инструмент для улучшения истории командной строки, заменяющий стандартную историю оболочки.

Он сохраняет команды в зашифрованной базе данных, синхронизирует историю между устройствами и позволяет легко искать и фильтровать команды. Atuin поддерживает bash, zsh и fish, обеспечивая удобство работы с историей в терминале.

👉 https://github.com/atuinsh/atuin

👉 DevOps Portal

DevOps Portal | Linux

16 Jan, 06:06


Если любишь унижения от железного друга, это просто must-have

Включаем "режим унижений". Суть его проста: ошибаешься с паролем при использовании sudo — система выдаёт порцию "тёплых слов" ❤️

Активируется добавлением в файл /etc/sudoers (либо в /etc/sudoers.d/fuck.conf) строчки:

Defaults insults


А после этого попробуй выполнить от пользователя:

sudo apt update


и ошибись с паролем. Получишь в ответ:

Take a stress pill and think things over.
You fucking stupid shit!
My mind is going. I can feel it.
Realy? Are you on drugs?


А если базовых оскорблений недостаточно, кастомизируй через:
Defaults  badpass_message="Ты там в порядке, вообще?"


А кто хочет пойти ещё дальше, может собрать свой bash-скрипт с выборкой «теплых слов» для рандомного вывода. Например:
#!/bin/bash

messages=("Неверный пароль! Твой мозг там как, цел?"
"Еще раз и я в логах всё твоё позорище сохраню."
"Ты серьезно? Ну хоть капслок проверь...")

echo "${messages[$RANDOM % ${#messages[@]}]}"


Режим точно не для слабонервных, но если вам не хватает эмоций в консоли — милости просим😈

👉 DevOps Portal

DevOps Portal | Linux

14 Jan, 12:59


Чем отличается команда rm от unlink?

Обе эти команды умеют удалять, но в 99% используется именно rm, потому что про unlink вы либо не слышали, либо rm с головой хватает.

Есть ошибочное мнение, что unlink предназначен для удаления лишь ссылок — команда вполне может удалять обычные файлы. А если углубиться, то весь процесс удаления в Linux, это удаление ссылок.

У unlink есть всего лишь два ключа запуска help и version. Очень ограниченный инструмент, но чем инструмент проще, тем проще его синтаксис.

# unlink /tmp/hardlink
# unlink /tmp/file


Софт очень молчаливый — после удаления, он промолчит и ничего не выведет на экран.

Команда unlink использует системную команду unlink, в то время как команда rm использует системный вызов unlinkat. Оба системных вызова практически одинаковы.

Unlink не умеет работать с wildcard и globbing шаблонами. Так же вы не сможете с помощью нее удалить каталог.

Запустим команду и пытаемся насильно удалить файл которого нет в каталоге:

rm -f test.txt

И получаем - НИЧЕГО. То есть rm -f не вернул ошибку, что файл отсутствует. А если сделать так:

unlink test.txt

получим ошибку:

unlink: cannot unlink 'test.txt': No such file or directory

То есть если нужно будет обработать результат выполнения команды rm -f, то будет непонятно, существовал ли вообще файл.

С unlink можно гибче обрабатывать эксепшены в скриптах. А еще при использовании команды unlink отсутствует проверка безопасности. Она удалит файл, защищенный от записи. Хотя современная версия rm теперь тоже так умеет.

Небольшой секрет: если нужно, чтобы файл никто не смог удалить, включая root:

chattr +i test.txt

chattr позволяет устанавливать и отключать атрибуты файлов, на уровне файловой системы не зависимо от стандартных (чтение, запись, выполнение).

Ключ i - сделает файл неизменяемым. Чтобы снять с файла этот аттрибут, в команде которая выше, замените знак «+» на «-».

👉 DevOps Portal

DevOps Portal | Linux

14 Jan, 07:30


Требуются парни и девушки в возрасте 19–40 лет, желающие работать в сфере IT.

Опыт в программировании не нужен.

Завтра запускаем бесплатный онлайн-интенсив по Frontend-разработке, где будем показывать, как разрабатывать сайты и веб-приложения используя ChatGPT.

За 7 дней обучения ты:


1. Создашь полноценный веб-сайт на HTML и CSS;
2. Оживишь страницу с помощью JavaScript;
3. Используешь фронтенд-фреймворк Angular;
4. Подключишь Backend и загрузишь сайт на хостинг;
5. Получишь советы по доработке своего проекта;
6. Научишься использовать ChatGPT и Giga во Frontend-разработке;
7. Узнаешь 9 способов найти первый заказ на фрилансе даже без опыта.

А главное, ты увидишь, что разрабатывать сайты и приложения не так сложно, как кажется. И поймёшь, как тебе развиваться в этой профессии, чтобы уже через пару месяцев зарабатывать от 1000$ на вёрстке сайтов.

👉 Проскочить на интенсив бесплатно

🔥 С 2019 стабильно помогаем с обучением, практикой, зарабатывать на фрилансе и проходить собеседования.

DevOps Portal | Linux

14 Jan, 05:54


В этом репозитории вы найдете Dockerfile для 13 языков программирования

Для каждого образа Docker имеется свой Dockerfile, содержащий набор инструкций, необходимых для его создания. В этом файле указывается, что должно быть в образе, какие команды, зависимости и процессы он будет содержать.

React
NodeJS
Python
Golang
Java Spring Boot
Java Quarkus
ASP.NET Core
Ruby
Rust
PHP Laravel
Dart
R Studio
Contact

👉 https://github.com/hoalongnatsu/Dockerfile

👉 DevOps Portal

DevOps Portal | Linux

11 Jan, 11:30


⚡️ Море IT-информации, а полезное найти все сложнее?

Мы собрали лучшие Telegram-ресурсы, которые помогут тебе развиваться:

📱 Python — от фишек языка и уроков, до практических примеров и готовых скриптов.

👩‍💻 Linux\DevOps — всё для админов и разработчиков, которые хотят совмещать Linux и программирование.

📱 GitHub — лучшие находки с гитхаба и просторов open-source.

📱 IT Курсы — более 2ТБ проверенных курсов по Python, Devops, Backend, Frontend и др...

🗂 CodeVault — книги, скрипты, гайды и шпаргалки для разработки.

🔥 Не стоит ждать, заходи прямо сейчас, чтобы не упустить!

DevOps Portal | Linux

11 Jan, 10:19


Лучшие практики работы с Docker

Никогда не запускайте контейнер от имени root.

Запуск от имени root внутри контейнера означает запуск от имени root на хосте Docker. Если злоумышленник получит доступ к вашему контейнеру, он получит все привилегии root и сможет совершать атаки на хост.

👉 DevOps Portal

DevOps Portal | Linux

10 Jan, 09:37


Полный рабочий процесс CI/CD с Skaffold для вашего приложения

Современный способ построения полного рабочего процесса от локального до продакшена с помощью Skaffold и Gitlab на кластере Kubernetes для снижения когнитивной нагрузки и операционной сложности в стеках приложений.

🔛 Часть I
https://blog.equationlabs.io/cicd-workflow-with-skaffold-for-your-application-part-i

🔛 Часть II
https://blog.equationlabs.io/how-to-build-a-cicd-workflow-with-skaffold-for-your-application-part-ii

🔛 Часть III
https://blog.equationlabs.io/how-to-build-a-cicd-workflow-with-skaffold-for-your-application-part-iii

👉 DevOps Portal

DevOps Portal | Linux

10 Jan, 07:37


😈 Senior-специалист группы безопасности Касперского создал крутейший канал про ИБ

Благодаря простым примерам даже новичок поймет основы информационной безопасности и научится искать уязвимости.

Присоединяйтесь: @infosec

DevOps Portal | Linux

10 Jan, 06:43


Popeye — утилита, которая сканирует работающие кластеры Kubernetes и сообщает о потенциальных проблемах с развёрнутыми ресурсами и конфигурациями.

👉 DevOps Portal

DevOps Portal | Linux

09 Jan, 09:37


#Cобеседования

df сообщает о наличии 20 Гб занятого пространства, подсчёт занятого файлами места при помощи du даёт результат в 20 Мб. При каких обстоятельствах может возникнуть описанная ситуация?

Когда файл удален т. к. файловый дескриптор «держит» его.

Ищем файл через:

lsof -a +L1 | grep var | grep httpd

При удалении файла, который в этот момент был «занят» процессом — его имя удаляется, но inode — остаётся в файловой системе до тех пор, пока не завершится процесс, который «держит» этот файл.

Соответственно, что бы «освободить» уже удалённые файлы — необходимо перезапустить процесс, который этот файл держит.

👉 DevOps Portal

DevOps Portal | Linux

09 Jan, 07:37


⚡️ 72% программистов не имеют среднего образования

Наше поколение — самоучки, а изучить любое IT-направление легко благодаря нашему ресурсу с полезными материалами:

👩‍💻 JavaScript 👩‍💻 React
👩‍💻 Python 👩‍💻 Docker
👩‍💻 Java 🖼️ Spring
👩‍💻 C# 👩‍💻 Game Dev
👩‍💻 С/С++ 👩‍💻 DevOps
👣 GoLang 🖼️ Redis
👩‍💻 Kotlin 👩‍💻 Mob Dev
🖼️ PHP 🖥 SQL
🖼️ Swift 👩‍💻 Kubernetes

Пользуйтесь, потом сами себе спасибо скажете!

DevOps Portal | Linux

09 Jan, 07:06


KubePug

Загружает сгенерированный файл data.json, содержащий информацию об устаревании API Kubernetes

Проверяет текущий кластер Kubernetes или входные файлы, проверяя, существуют ли объекты в этих устаревших версиях API, позволяя пользователю проверить перед переносом

Особенности

🔛 Может запускаться в кластере Kubernetes, используя kubeconfig или текущий кластер
🔛 Может выполняться с другим набором манифестов/файлов
🔛 Позволяет указать целевую версию Kubernetes, подлежащую проверке
🔛 Предоставляет заменяющий API, который следует использовать
🔛 Сообщает версии, что API устарел или удален, в зависимости от версии целевого кластера

Как использовать

Запустите kubectl krew install deprecations

Как использовать с Helm

Если хотите проверить сгенерированные манифесты с помощью Helm, можно запустить так:

helm template -f values.yaml .0 | kubepug --k8s-version v1.22.0 --input-file=-


Измените аргументы в kubepug (и шаблоне Helm) по своему желанию

👉 DevOps Portal

DevOps Portal | Linux

07 Jan, 09:07


Держите пять классных ресурсов, которые помогут разобраться в GIT

👉 Learn Git Branching — это интерактивный учебник по Git, направленный на закрепление теории прохождением наглядной практики.

👉 Oh My Git! — игра для обучения Git. Там визуализируются внутренние структуры репозиториев. Игра опенсорс, так что можно покопаться в исходниках

👉 Git How To — это интерактивный тур, который познакомит вас с основами Git

👉 Pro Git book — онлайн учебник по Git, который предлагает подробные руководства и документацию по всем аспектам работы с системой контроля версий

👉 Git Gud — CLI-игра с различными уровнями сложности, которая поможет освоить Git от базового уровня до профи

👉 DevOps Portal | #ресурсы

DevOps Portal | Linux

07 Jan, 07:07


Учишь Python, но как дело доходит до собственного кода — всё, кирдык? 😥

На форумах только одно: «Больше практиковаться!» А толку? Ноль понимания и никакой поддержки от профи

Плавали - знаем)) Поэтому специально для тебя - чат для Python-щиков 🤝

Что получишь?

1️⃣ Сможешь задавать любые вопросы без страха и осуждения и получать ответы за минуты, а не часы поиска в инете
2️⃣ Регулярные плюшки в виде стримов от препода с 15-ти летним опытом
3️⃣ Общение с единомышленниками и заряд мотивации

➡️ А еще, забирай в закрепе БЕСПЛАТНЫЙ вводный курс по Python

Короче, всё для прокачки! Залетай к нам — ссылка на чат (тык)

DevOps Portal | Linux

07 Jan, 05:47


Команды systemd для управления Docker

Для запуска Docker многие дистрибутивы Linux используют systemd. Для запуска сервисов используется команда systemctl. Если ее нет, следует использовать команду service.

$ sudo systemctl start docker
$ sudo service docker start


Чтобы добавить сервис в автозагрузку, либо убрать его:

$ sudo systemctl enable docker
$ sudo systemctl disable docker


Для проверки параметров запуска сервиса и их изменения:

$ sudo systemctl edit docker

Просмотра связанных с сервисом журналов:

$ journalctl -u docker

👉 DevOps Portal

DevOps Portal | Linux

06 Jan, 07:07


tailspin

Утилита, которая позволяет просматривать логи с подсветкой. Это удобно, красиво и сокращает много времени на анализ.

Но есть один минус - если привыкните, то читать логи без этой тулзы будет очень сложно 🤓

🔛 https://github.com/bensadeh/tailspin

👉 DevOps Portal | #ресурсы

DevOps Portal | Linux

03 Jan, 08:10


Упражнения для DevOps специалистов на GitHub

Репозиторий содержит в себе разные упражнения по:
- Linux
- DNS
- АРМ
- Go


И мноооого всего другого

Ссылка: тык

👉 DevOps Portal | #ресурсы

DevOps Portal | Linux

03 Jan, 05:07


1000+ Bash скриптов для DevOps

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

Так что держите эту большую подборку — это скрипты, связанные с настройкой и управлением AWS, GCP, Kubernetes, Docker, PostgreSQL, MySQL, Hive, Impala, Kafka, Hadoop, Jenkins, GitHub, GitLab, BitBucket, Azure TeamCity, Spotify, LDAP, Python и это далеко не полный список

Есть здесь даже скрипты для конфигурирования .bashrc, .vimrc, .gitconfig, .screenrc, tmux

Ссылка: тык

👉 DevOps Portal | #ресурсы

DevOps Portal | Linux

29 Dec, 09:37


Kubetools — это тщательно подобранный список популярных инструментов для Kubernetes.

Хочу поделиться несколькими тулами, которые точно заслуживают внимания:

🔹 kubie - лично пользуюсь, удобно. Kubie - это kubectx + kubens в одной туле, в конфиге достаточно указать где искать kubeconfigs.

🔹 k9s - UI в терминале с кучей хоткеев, я раньше как-то недооценивал, то потом мне его продал Макс Витковский (кубер-шайтан из моей команды). В общем, теперь это primary cli тула в работе.

🔹 Lens - это красивая, но прожорливая приложуха. Отлично выглядит, но не более 😅 Удобно для девов, или начинающих крутить кубер. Плохо работает на большом скейле - безбожно тупит.

По ссылке ниже - ещё 100500 тулов для менеджмента, работы, аудита и анализа кубер кластера 👇
https://collabnix.github.io/kubetools/

👉 DevOps Portal

DevOps Portal | Linux

29 Dec, 07:37


Готовишься к собеседованию в IT?

Разбираем для тебя самые актуальные вопросы для подготовки

Выбирай направление:

👩‍💻 Frontend
👩‍💻 Python
👩‍💻 Go
👩‍💻 Java
👩‍💻 C/C++
👩‍💻 C#
👩‍💻 PHP
👩‍💻 QA
📊 SQL
👩‍💻 Git

DevOps Portal | Linux

29 Dec, 06:07


Как определить состояние контейнера Docker?


1️⃣Проверить статус всех контейнеров:

docker ps -a


Эта команда выводит список всех контейнеров, их идентификаторы, имена, статус и время работы. В колонке "STATUS" можно увидеть текущее состояние контейнера, например:
- Up X hours — контейнер работает.
- Exited (code) — контейнер завершил работу с определённым кодом выхода.

2️⃣ Проверить состояние конкретного контейнера:

Используйте команду docker inspect, чтобы получить подробную информацию о состоянии контейнера:

docker inspect <container_id>


Эта команда выводит всю информацию о контейнере, включая статус, ошибки, время работы и другие параметры. Для удобства можно использовать фильтрацию JSON-вывода, например:

docker inspect -f '{{.State.Status}}' <container_id>


Возможные статусы:
- running — контейнер запущен.
- exited — контейнер завершил работу.
- paused — контейнер приостановлен.
- restarting — контейнер перезапускается.

3️⃣ Проверить логи контейнера:

Чтобы увидеть последние действия контейнера, можно просмотреть его логи:

docker logs <container_id>


Это поможет понять, что происходило с контейнером, особенно если он неожиданно завершил работу.

👉 DevOps Portal

DevOps Portal | Linux

27 Dec, 16:07


Руководство по командам Linux

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

Также содержит сочетания клавиш для работы в терминале.

Полезно 👍

👉 DevOps Portal

DevOps Portal | Linux

27 Dec, 06:18


Поговорим о команде enable. Она включает или отключает встроенные команды оболочки.

Отключение встроенных команды позволяет выполнить дисковую команду, имеющую то же имя, что и встроенная команда оболочки, без указания полного пути, даже если оболочка ищет встроенные команды перед дисковыми командами.

Запускаем:

bash 
type test


И видим: test is a shell builtin. То есть используется команда test встроенная в оболочку. А не та что лежит на пути в test: /usr/bin/test. Воспользуемся дисковой версией этой утилиты:

enable -n test
type test


И получим такое: test is /usr/bin/test. Получается мы сделали некое переключение. И по факту используем разные версии test.

Чтобы включить обратно встроенную команду test в оболочке, выполняем:

enable test


Можно подгрузить расширения поставляемые с оболочкой. Некие плагины, экстеншены. Для этого эти экстеншены нужно установить:

apt/yum install bash-builtins


Оно установится в папку /usr/lib/bash/. В ней будут всякие mkdir, rm, sleep и т.п. По сути это те же дисковые команды, только экстеншены для оболочки.

Для начала узнаем дисковую версию команды mkdir:

mkdir --version


mkdir (GNU coreutils) 8.32

Теперь загружаем экстеншен в оболочку:

enable -f /usr/lib/bash/mkdir mkdir
mkdir --version


Получаем такое: -bash: mkdir: --: invalid option

Теперь запускаем:

type mkdir


Видим: mkdir is a shell builtin, то есть теперь mkdir используется не системный (дисковый), а тот что подгружен в оболочку bash.

Например, мы снесли все системные бинарники и остался только bash. Через подгрузку экстеншенов можно без проблем обслуживать свою операционную систему, даже если в системе пропал mkdir и т.п.

Чтобы посмотреть что вообще подгружено в оболочку, воспользуемся командой:

lsof +fg -p $$


Получим отчет по текущему процессу, что подгружено в данный момент в оболочку и используется.

С версии 4.4 в bash появилась переменная BASH_LOADABLES_PATH, с помощью нее можно задать путь для поиска экстеншенов. Тогда при подгрузке этих модулей, не нужно будет использовать полные пути.

BASH_LOADABLES_PATH=/usr/lib/bash/
enable -f sleep sleep


👉 DevOps Portal

DevOps Portal | Linux

26 Dec, 10:30


Awesome Linux Software

Ооооочень объёмный перечень приложений, ПО, инструментов и других материалов для разных дистрибутивов Linux.

👉 https://github.com/luong-komorebi/Awesome-Linux-Software

👉 DevOps Portal

DevOps Portal | Linux

26 Dec, 08:30


infosec - один из самых ламповых каналов по информационной безопасности, где говорят об истории ИТ, публикуют актуальные новости и пишут технический материал по разным темам:

- Как зарождалась Флибуста?
- Сервисы для обеспечения безопасности в сети;
- Каким образом "компьютерные мастера" обманывают своих клиентов?
- Бесплатный бот, который проверит файлы на предмет угроз более чем 70 антивирусами одновременно.

А еще у нас часто проходят розыгрыши самых актуальных и новых книг по ИБ. Так что присоединяйся, у нас интересно!

DevOps Portal | Linux

26 Dec, 06:28


Чем отличаются файлы .bashrc .bash_profile .profile и т.п.

Основное различие этих конфигурационных файлов заключается в том, что некоторые из них читаются только оболочками входа (login). Например, при входе в систему с другого хоста или при входе в текстовую консоль локальной unix-машины. Используются файлы .login .profile .zlogin. Зависит от того какая у вас оболочка.

Далее идут конфигурационные файлы, которые читаются «интерактивными» оболочками. То есть подключенными к терминалу или псевдотерминалу. Это файлы с именами .bashrc, .tcshrc, .zshrc и т.д.

Файл .bashrc читается только интерактивной и non-login оболочкой, поэтому большинство людей в конечном итоге инклудят в файле .bash_profile чтение файла .bashrc, например:

[[ -r ~/.bashrc ]] && . ~/.bashrc


Другие оболочки ведут себя по-другому. Например, в zsh, файл .zshrc всегда читается для интерактивной оболочки, независимо от того, является ли она login или нет.

А файл .profile, это просто сценарий входа в систему. И изначально использовался в /bin/sh. Оболочка Bash, будучи обратно совместимым с sh, будет читать .profile, если он конечно же существует.

Пример файла .profile

if [ "$BASH" ]; then
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
fi


Как видим, при login’е заинклудится файл .bashrc.

В дистрибутивах семейства Debian сначала выполняется .profile, а потом уже .bash_profile. А вот в дистрибах производных от RHEL, сначала выполняется .bash_profile, а уже потом .profile. Ну вот прям каша! 

В документации bash хорошо объясняется, при каких обстоятельствах читается каждый файл. И поведение на разных машинах в целом одинаково.

Выжимка из man bash:

/bin/bash - The bash executable
/etc/profile - The systemwide initialization file, executed for login shells
/etc/bash.bashrc - The systemwide per-interactive-shell startup file
/etc/bash.bash.logout - The systemwide login shell cleanup file, executed when a login shell exits
~/.bash_profile - The personal initialization file, executed for login shells
~/.bashrc - The individual per-interactive-shell startup file
~/.bash_logout - The individual login shell cleanup file, executed when a login shell exits
~/.inputrc - Individual readline initialization file


👉 DevOps Portal

DevOps Portal | Linux

25 Dec, 17:10


👩‍💻 Безопасность Kubernetes

Держите шпаргалку для защиты Kubernetes-кластеров:

— Защита компонентов
— Сетевая безопасность
— Безопасность pods и объектов
— Управление credentials и данными

👉 DevOps Portal | #ресурсы

DevOps Portal | Linux

25 Dec, 15:10


Совет на 2025 год - учите Data Science и Machine learning

Все нейросети, базы данных компаний, выявление болезней и многое другое - не обходятся без DS и ML.

А чтобы освоиться за несколько месяцев, а не лет, читайте канал Data Science. В нём на пальцах рассказывается, что и как учить, чтобы стать специалистом.

Начните 2025 год с освоения новой профессии - devsp

DevOps Portal | Linux

25 Dec, 06:16


kubectx

Это инструмент командной строки, который позволяет пользователям переключаться между контекстами (кластерами) и пространствами имен Kubernetes быстрее и проще, чем с помощью одних только команд kubectl.

# switch to another cluster that's in kubeconfig
$ kubectx minikube
Switched to context «minikube».

# switch back to previous cluster
$ kubectx -
Switched to context «oregon».

# rename context
$ kubectx dublin=gke_ahmetb_europe-west1-b_dublin
Context «gke_ahmetb_europe-west1-b_dublin» renamed to «dublin».

# change the active namespace on kubectl
$ kubens kube-system
Context «test» set.
Active namespace is «kube-system».

# go back to the previous namespace
$ kubens -
Context «test» set.
Active namespace is «default».


Установка

Можно установить с помощью Krew:

kubectl krew install ctx
kubectl krew install ns


После установки инструменты будут доступны в виде kubectl ctx и kubectl ns.

Еще можно установить так:

brew install kubectx


и так:

sudo apt install kubectx

👉 DevOps Portal | #ресурсы

DevOps Portal | Linux

24 Dec, 06:10


Все надоело, ничего не хочу. Как снова полюбить работу и жизнь?!

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

Пропадает улыбка, интерес к работе, да и в целом к жизни. Все больше хочется позалипать на ютубчик или котиков 🫠

Самому выбраться из этого состояния сложно - ни отпуск, ни смена работы не помогают надолго.

📍 Чтобы справиться с выгоранием и больше его не допустить, рекомендуем подписаться на канал Психолог взрослого человека.

Автор канала, Вадим, точно знает, как IT-специалисту выйти из застоя и вернуть себе силы и энергию.

— Научиться расставлять приоритеты и найти время на жизнь
— Избавиться от прокрастинации
— Вернуть себе мотивацию и интерес к работе
— Расставить границы и перестать перерабатывать

Подписывайся на канал @vadimpetrovpsi и научись работать без упахивания и ущерба для личной жизни!

DevOps Portal | Linux

24 Dec, 05:07


SecretScanner

Ищет незащищённые креды и пароли в Docker-образах, контейнерах и на ПК.

Сканирует данные, сверяя их с базой из 140 типов секретов.

Входит в состав ThreatMapper — инструмента с открытым кодом для выявления и ранжирования уязвимостей в облачных приложениях.

👉 GitHub

👉 DevOps Portal | #ресурсы

DevOps Portal | Linux

23 Dec, 10:07


ZRAM позволяет сжимать оперативную память на лету и таким образом увеличить ее объём.

При включении zram, сжатие переносит часть нагрузки на процессор, но использование zram действительно может улучшить производительность.

Также есть zswap, которая сжимает данные в разделе подкачки. И которая по умолчанию включена почти во всех официальных ядрах.

Проблема zswap заключается в том, что его приоритет выше чем у zram, который остается неиспользуемым. Чтобы решить эту проблему, нужно отключить zswap в ядре.

CONFIG_ZSWAP_DEFAULT_ON=N


Но чтобы применить эту опцию, нужно пересобрать ядро. Пойдем легким путем и выключим zswap через загрузчик grub.

Редактируем файл /etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="zswap.enabled=0" loglevel=3 quiet "


Не забываем перегенирировать конфиг grub:

grub-mkconfig -o /boot/grub/grub.cfg


Перезагружаем машину и проверяем отключение zswap:

cat /sys/module/zswap/parameters/enabled


Если вывелась буква N — значит все правильно.

Ну и наконец включаем zram. Для этого пишем bash скрипт и кидаем его в автозагрузку:

#!/bin/bash

modprobe zram
mkdir /sys/block/zram0
echo lz4 > /sys/block/zram0/comp_algorithm
echo 1G > /sys/block/zram0/disksize
echo 2 > /sys/block/zram0/max_comp_streams
mkswap --label zram0 /dev/zram0
swapon --priority 100 /dev/zram0


1. Загружаем модуль zram
2. Выбираем алгоритм сжатия lz4 (либо zstd)
3. Объем zram 1гиг физической оперативки
4. 2 это количество потоков сжатия (потоки процессора)
5. Создаем блочное устройство и включаем его

Запускаем скрипт и проверяем включение командой: zramctl. Если на экран что-то вывелось, значит всё хорошо и сжатие начало работать.

Если заморачиваться с bash скриптами не хочется, ставим утилиту которая будет работать через systemd.

apt install systemd-zram-generator


Правим конфиг /etc/systemd/zram-generator.conf

[zram0]
zram-size = ram
compression-algorithm = lz4


Активируем и запускаем:

systemctl daemon-reload
systemctl start /dev/zram0


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

👉 DevOps Portal

DevOps Portal | Linux

23 Dec, 08:07


👩‍💻 Программирование — В С Ё

В 2024 году на кодинге уже не вывезешь, перспектива года - Информационная Безопасность.

Ловите полезные каналы, которые помогут ворваться в новое направление.

👍 ZeroDay - Уроки, эксплуатация уязвимостей с нуля
👍 Белый Хакер - Свежие новости из мира ИБ
😎 Арсенал Безопасника - Все необходимые инструменты
😎 Бункер Хакера - Статьи, книги, шпаргалки и хакинг
👨‍💻 Серверная Админа - Настройка и уроки по компьютерным сетям

📂Вступай и изучай новое направление!

DevOps Portal | Linux

23 Dec, 06:36


👩‍💻 Топ-5 полезных утилит для Docker

Portainer — проект с открытым исходным кодом, представляющий собой образ графического web-интерфейса для управления Docker.

Hadolint — представляет собой утилиту, предназначенную для оценки Dockerfile с точки зрения корректности синтаксиса и безопасности инструкций.

Dozzle — представляет собой веб-интерфейс для отображения логов контейнеров в режиме реального времени.

Dive — утилита, которая визуально отображает подробную информацию о Docker образах и их слоях.

Ctop — утилита для мониторинга метрик в контейнерах, которая напоминает утилиту top в Unix системах.

👉 DevOps Portal | #ресурсы

DevOps Portal | Linux

21 Dec, 16:37


😁

👉 DevOps Portal

DevOps Portal | Linux

20 Dec, 16:07


Самоучитель по CI/CD в K8s

Отличный ресурс, чтобы освоить Kubernetes и научиться доставлять в него код своих приложений

Пошаговые инструкции, теория и примеры кода помогут быстро погрузиться в процесс

Выбирайте свою технологию:

👉 Node.js
👉 Spring Boot
👉 Django
👉 Go
👉 Rails
👉 Laravel

👉 DevOps Portal | #ресурсы

DevOps Portal | Linux

20 Dec, 09:17


Топ 4 лучших типа сервисов Kubernetes в одной диаграмме.

👉 ClusterIP
ClusterIP - это стандартный и наиболее распространенный тип службы. Kubernetes назначает сервису ClusterIP внутренний IP-адрес кластера. Это делает службу доступной только в пределах кластера.

👉 NodePort
Это позволяет вывести сервис за пределы кластера, добавив общекластерный порт поверх ClusterIP. Мы можем запросить сервис по NodeIP:NodePort.

👉 LoadBalancer
Этот способ раскрывает сервис извне, используя балансировщик нагрузки облачного провайдера.

👉 ExternalName
Сопоставляет службу с доменным именем. Обычно это используется для создания службы в Kubernetes для представления внешней базы данных.

👉 DevOps Portal

DevOps Portal | Linux

18 Dec, 16:07


Примеры типовых операций в bash-скриптах

Арифметические действия, циклы по кол-ву раз

#!/bin/bash
A="10"
B="5"
C=`expr $A + $B`
printf "A=10 B=5 C=expr \$A + \$B C=%d \n" "$C"

# пример цикла по i
I=0
while [ $I -lt 15 ]
do
printf "0x%02x " "$I"
I=`expr $I + 1`
done
echo



Разного рода проверки

#!/bin/bash
# пример проверки существования файла
# создаем файл test1
touch test1
# проверяем существование файла test1
if [ -f test1 ] ; then
echo "файл test1 существует"
fi
# проверяем несуществование файла test2
if ! [ -f test2 ] ; then
echo "файл test2 не существует"
fi
# краткая справка по другим опциям команды [ ]
# -d filename директория существует
# -f filename файл существует
# -L filename символьная ссылка существует
# -r, -w, -x файл доступен для чтения, записи или выполнения
# -s filename файл существует и имеет ненулевую длину
# f1 -nt f2 f1 новее чем f2
# f1 -ot f2 f1 старше чем f2



Работа с FTP

#!/bin/bash
ADDRESS=192.168.1.150
USER=root
PASSWORD=root
ftp -n -p ADDRESS <<EoF
user USER PASSWORD
cd /usr/bin
put my_cool_program
quit
EoF
exit 0



Работа с telnet

#!/bin/bash
(
sleep 1
echo "root"
echo "cd /tmp"
echo "ls"
sleep 1
echo "quit"
) | telnet 192.168.1.150

Примечание: в этом случае root логинится без пароля, если нужен пароль, то надо добавить после echo "root" еще одно эхо с паролем.

Пример цикла по множеству значений

#!/bin/bash
# пример цикла по множеству значений
for A in раз два три четыре пять
do
echo "$A,"
done
echo "вышел заяц погулять"
echo


Не забываем, что для того, чтоб скрипт можно было запустить, надо изменить права доступа к нему, добавив возможность исполнения файла, например командой

chmod a+x
script.sh

👉 DevOps Portal

DevOps Portal | Linux

18 Dec, 08:03


🔥 Шпаргалка по SSH-командам

Давно не делились полезными шпаргалками! Держите – объемная подборка по SSH: от базовых команд до туннелирования

Сохраняй, пригодится 😎

👉 DevOps Portal | #ресурсы

DevOps Portal | Linux

17 Dec, 14:30


Ansible против bash-скрипта 😀

👉 DevOps Portal

DevOps Portal | Linux

16 Dec, 15:15


DistroSea

Удобный способ протестировать операционные системы перед установкой.

Сервис позволяет запустить десятки дистрибутивов Linux, ознакомиться с интерфейсом, протестировать функционал и поработать в терминале.

👉 distrosea.com

👉 DevOps Portal | #ресурсы

DevOps Portal | Linux

29 Nov, 07:06


Основы систем инициализации в Linux: всё, что вы должны знать 🐧

Сегодня мы поговорим о системах инициализации в Linux. Эта тема может показаться сложной для новичков, но не волнуйтесь, мы постараемся объяснить всё максимально просто.

1️⃣ Что такое система инициализации?

Система инициализации - это программа, которая запускает и останавливает другие программы при старте и выключении компьютера. Она играет ключевую роль в процессе загрузки дистрибутива. В мире Linux существует несколько систем инициализации, но мы сосредоточимся на двух основных: SysV и systemd.

1. SysV init:
SysV init - это одна из старейших систем инициализации в Linux. Она использует скрипты в стиле Bash для управления службами. Каждая служба имеет свой собственный скрипт инициализации, расположенный в каталоге /etc/init.d. Вы можете управлять службами, используя команды, такие как service или chkconfig.

Пример запуска службы с использованием SysV init:

sudo service apache2 start


2. systemd:
systemd - это современная система инициализации, которая заменяет SysV init во многих дистрибутивах Linux. Она управляет службами и процессами с использованием юнит-файлов, и она более мощная и гибкая по сравнению с SysV init.

Пример запуска службы с использованием systemd:

sudo systemctl start apache2


2️⃣ Как выбрать систему инициализации?

Большинство современных дистрибутивов Linux используют systemd, но некоторые старые или специализированные дистрибутивы могут все еще использовать SysV init. Вы можете проверить, какая система инициализации используется на вашем компьютере, выполнив команду:

ps -p 1 -o comm=


3️⃣ Что выбрать новичку?

Если вы новичок в мире Linux, то systemd, скорее всего, будет более удобным выбором, так как он более современный и интуитивно понятный. Он также предоставляет множество инструментов для управления службами, журналами и т. д.

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

👉 DevOps Portal

DevOps Portal | Linux

28 Nov, 09:17


Коды завершения в Linux 🚪

Обратили внимание на такую вот конструкцию в предыдущем посте:

echo $?


Команда echo, думаю, понятно что делает. Но что за значок доллара и вопросительный знак после? Это обозначение для вывода кода завершения команды.

Логика простая: если вернется 0, то ошибок нет, команда отработала как нужно. Если получили 1, то что-то пошло не так. Все просто 🤷‍♂️

Использовать удобно все в тех же скриптах для проверки успешности того, как этот скрипт отработал. Например, нужно выполнить какое-то действие только после того, как будете уверены, что конфигурация верная. Вначале выполняем валидацию конфига (допустим, веб-сервера Nginx):

nginx -t


После проверяем, что вернулся 0 и если да, то выполняем команду на рестарт конфига:

nginx -s reload


Если получили 1, то нужно проверить конфигурацию веб-сервера на ошибки.

Обычному пользователю такое никогда может и не пригодится, но если вы любите скрипты и автоматизацию работы с системой, то коды завершения сильно упростят жизнь. Профи об этом уж точно знают, новичкам будет полезно ☺️

👉 DevOps Portal

DevOps Portal | Linux

28 Nov, 07:17


⚡️Всероссийский Хакатон ФИЦ 2024

🚀Попробуйте себя в одном из предложенных кейсов:

Кейс №2. Выявление трендов в сфере бухгалтерского учета, поиск «болей» бухгалтера: разработать алгоритм для поиска новых трендов и проблем бухгалтера.

Кейс №8. Формирование фото и видео контента с использованием нейросетей на основе биографии и фото персоны.

Кейс №10. Цифровая карта подземных коммуникаций с использованием Cesium.

Кейс №12. Цифровой сервис для ведения реестра зеленых насаждений города Москвы.

Кейс №17. Стартовый (профилактический) комплаенс: предотвращение рисков с помощью AI.

Кейс №19. Parallax-scroll лендинг для сайта Insidium.

И другие 19 кейсов смотрите на сайте: https://фиц2024.рф/hackathon

Хакатон пройдет в 2 этапа: Отборочный этап в Онлайн, Финал в Офлайн.

🏆Призовой фонд: 6 000 000 руб.
🔥Дедлайн регистрации: 28 ноября, 23:59
📅Даты отборочного этапа: 29 ноября - 2 декабря
🦾Даты финала: 3 - 4 декабря

Зарегистрируйтесь для участия в хакатоне: https://фиц2024.рф/hackathon

Реклама. ООО «Акселератор Возможностей», ИНН: 9704005146, erid:2VtzqwZkaCf

DevOps Portal | Linux

28 Nov, 06:07


Работаем с блочными устройствами Linux через скрипты

Сегодня расскажу про две очень полезные утилиты Linux, с помощью которых удобно в скриптах делать проверки наличия подключенных и примонтированных блочных устройств и файловых систем. Это утилиты findmnt и findfs.

1️⃣ Findmnt удобна и полезна сама по себе, без привязки к скриптам. Просто запустите её и посмотрите вывод. Она выводит в консоль подробную информацию о всех точках монтирования. А ключ -x ещё и позволяет проверить отредактированный файл fstab на наличие в нём ошибок. Рекомендую запомнить эту возможность и использовать:

# findmnt -x 
Success, no errors or warnings detected


Если в чём-то ошибётесь, то получите ошибку:

# findmnt -x 
/mnt/backup
[E] unreachable on boot required source: UUID=151ea24d-977a-412c-818f-0d374baa5012


2️⃣ Findfs сама по себе ничего не выводит. Она умеет искать файловые системы по заданными параметрами В качестве аргумента принимает значение LABEL, UUID, PARTLABEL и PARTUUID. Например так:

# findfs "UUID=151ea24d-977a-412c-818f-0d374baa5013" 
/dev/sda2


Нашли файловую систему на /dev/sda2 с заданным UUID. При этом код выхода будет 0:

# echo $? 
0


Если файловая система не будет найдена, код будет 1:

# findfs "UUID=151ea24d-977a-412c-818f-0d374baa5012" 
findfs: unable to resolve 'UUID=151ea24d-977a-412c-818f-0d374baa5012'
# echo $?


3️⃣ Соответственно, подобную проверку можно использовать в скриптах перед тем, как выполнять какие-то действия. Это актуально для каких-нибудь бэкапов или синхронизаций на сетевых или внешних дисках. Делаем простую проверку, типа такой:

if findfs "UUID=$1" >/dev/null; then 
echo "$1 connected."
else
echo "$1 not connected."
fi


Вместо echo можно сразу выполнять какое-то действие. Оно будет выполнено, если указанный скрипту UUID подключен. То есть сам скрипт работает так:

# ./check-fs.sh 151ea24d-977a-412c-818f-0d374baa5013 
151ea24d-977a-412c-818f-0d374baa5013 connected.


Точно так же по аналогии можно сделать проверку точек монтирования с помощью findmnt:

if findmnt -rno TARGET "$1" >/dev/null; then 
echo "$1 mounted."
else
echo "$1 not mounted."
fi


Проверяем:

# ./check-mnt.sh /mnt/extbackup 
/mnt/extbackup not mounted.


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

Если информация оказалась полезной, то поставьте лайк этой заметке 😧

👉 DevOps Portal

DevOps Portal | Linux

27 Nov, 09:17


Как в терминале Linux отобразить ход выполнения операции копирования или удаления? 🗑📄

Бывает что вы вводите команду cp или rm для копирования или удаления чего-либо и после нажатия Enter курсор просто повисает в терминале. Согласитесь, что было бы приятнее видеть какой-то прогресс в выполнении этой команды. Чтобы сделать это используется ключ --verbose или -v. В контексте Linux и других UNIX-подобных систем, указанные опции обычно относятся к режиму вывода подробной информации о выполняемых командах.

Например, вот так можно работать с копированием:
cp -v <исходные_файлы_или_каталог> <целевой_каталог>


Или удалением:
rm -rf -v <каталог>


Выхлоп будет содержать подробности совершаемых операций. И станет наглядно видно, что происходит и когда это закончится. Согласитесь, что в определенных моментах это удобно? Естественно, ключ --verbose или -v будет работать не только с копированием или удалением.

👉 DevOps Portal

DevOps Portal | Linux

27 Nov, 06:08


Работаем с кодировкой файлов в терминале Linux 😎

Бывало такое, что откроете текстовый документ, а там все в кракозябрах? Это, товарищи, проблемы с кодировкой текста. О кодировке можно долго и много рассказывать, но я вам лучше поведаю про iconv - это утилита командной строки, которая используется для конвертации текстовых данных из одной кодировки в другую. Утилитка эта есть в любом популярном дистрибутиве Linux что называется, из коробки, поэтому совершать дополнительные действия для установки не нужно. Посмотрим на четыре примера того, как можно эту утилиту использовать.

Пример 1: Преобразование из UTF-8 в ASCII
iconv -f UTF-8 -t ASCII input.txt > output.txt


Этот пример преобразует содержимое файла input.txt из кодировки UTF-8 в ASCII и записывает результат в output.txt.

Пример 2: Изменение кодировки файла
iconv -f ISO-8859-1 -t UTF-8 input.txt > output.txt


Эта команда изменяет кодировку файла input.txt с ISO-8859-1 (Latin-1) на UTF-8 и записывает результат в output.txt.

Пример 3: Указание файла для стандартного ввода и вывода
iconv -f WINDOWS-1251 -t UTF-8 < input.txt > output.txt


Этот пример использует стандартный ввод (input.txt) с кодировкой WINDOWS-1251 и выводит результат в output.txt с кодировкой UTF-8.

Пример 4: Рекурсивное преобразование файлов в директории
find /path/to/directory -type f -name '*.txt' -exec iconv -f UTF-8 -t ISO-8859-1 {} -o {} \;


Этот пример находит все файлы с расширением .txt в указанной директории и конвертирует их содержимое из UTF-8 в ISO-8859-1.


К слову, утилита iconv также портирована под Windows, поэтому братцы-форточники тоже могут порадовать себя тем, что в консоли всяческую магию творят 😁 Обычные же линуксоиды, привыкшие к этим вашим окошечкам и кнопочкам, могут спросить: на кой мне это все знать?

Ну, во-первых, лучше знать и не пригодится, тем не знать и оказаться в ситуации, когда понадобится. И, во-вторых, тем пользователям, которые много времени проводят в терминале своего ПК (ноутбука) или сервера удаленного, утилита может ой как сильно пригодится.

Если же желаете побольше узнать про кодировки разные, то милости прошу в Google, Yandex и иные любимые вами поисковики: информации три вагона, две телеги.

👉 DevOps Portal

DevOps Portal | Linux

26 Nov, 17:58


Открываем файлы и папки в приложении по-умолчанию через терминал

При необходимости вы можете напрямую из терминала открывать нужные вам файлы или папки в приложении по-умолчанию. Чтобы сделать это, введите следующую команду:

ls -1 --hyperlink=always


Дальше следуете тому, что показано на прикрепленной анимации и будет вам счастье 👍

👉 DevOps Portal

DevOps Portal | Linux

26 Nov, 14:07


Совет на 2025 год - учите Data Science и Machine learning

Все нейросети, базы данных компаний, выявление болезней и многое другое - не обходятся без DS и ML.

А чтобы освоиться за несколько месяцев, а не лет, читайте канал Data Science. В нём на пальцах рассказывается, что и как учить, чтобы стать специалистом.

Начните 2025 год с освоения новой профессии - devsp

DevOps Portal | Linux

26 Nov, 06:07


🐧 Сегодня я хочу поделиться с вами пятью полезными командами в терминале Linux, которые помогут вам создать папку (директорию) в системе

1️⃣ mkdir folder_name - Эта простая команда создает новую папку с указанным именем. Просто замените "folder_name" на имя, которое вы хотите присвоить новой папке.

2️⃣ mkdir -p path/to/directory - Эта команда позволяет создать вложенные папки. Если путь содержит несуществующие директории, команда автоматически создаст их.

3️⃣ mkdir folder1 folder2 folder3 - Вы можете использовать одну команду для создания нескольких папок сразу, просто перечислите их имена через пробел.

4️⃣ mkdir -m 777 folder_name - С помощью этой команды вы можете установить права доступа для созданной папки. В примере выше установлены полные права на чтение, запись и выполнение для всех пользователей.

5️⃣ mkdir --version - Если вы хотите проверить версию команды mkdir, это можно сделать с помощью этой команды.

Пользуйтесь этими командами, чтобы с легкостью создавать и организовывать свои папки в терминале Linux

👉 DevOps Portal

DevOps Portal | Linux

25 Nov, 16:07


Python для DevOps: Полное руководство от новичка до продвинутого уровня

Python получил широкое распространение в экосистеме DevOps благодаря своей простоте, обширным библиотекам и адаптивности для различных платформ и задач. Независимо от того, автоматизируете ли вы рутинные задачи, управляете инфраструктурой или разрабатываете CI/CD конвейеры, Python предлагает мощный и надежный набор инструментов.

🔜 Читать статью

👉 DevOps Portal | #cтатья

DevOps Portal | Linux

25 Nov, 11:59


⚡️ Присоединяйся к идеатону Форума Инновационных Центров 2024!

🔭 Если ты специалист по data science, веб-разработке, аналитике данных, кибербезопасности, DevOps или архитектуре ПО, принимай участие в Кейсе №2: Архитектура высоконагруженного распределенного веб-приложения.

В нём тебе предстоит:
⚙️ Разработать концептуальную архитектуру веб-приложения, способного обслуживать не менее 100 000 одновременных пользователей, с учетом требований к безопасности, защитой от кибератак, масштабируемости и высокой доступности на всей территории России.

Ожидаемые результаты:
📌 Аналитический отчет по архитектурному решению
📌 Визуализированные схемы архитектуры и диаграммы.
📌 Документация по выбору технологий, существующих платформ и баз данных по каждому из финальных решений.
📌 Рекомендации по обеспечению безопасности и защиты от кибератак.

Идеатон проходит в 2 этапа: отборочный этап — онлайн, финал — оффлайн.


❗️Важно: участие можно принять ТОЛЬКО командой, от 2 до 6 человек.

🏆Призовой фонд: 6 000 000 руб.
🔥Дедлайн регистрации: 26 ноября, 23:59
📅Даты отборочного этапа: 29 ноября - 2 декабря
🦾Даты финала: 3 - 4 декабря

🔗 Регистрируйся по ссылке: https://фиц2024.рф/hackathon/#idcase2

DevOps Portal | Linux

25 Nov, 06:36


Команда updatedb: быстрый поиск файлов на Linux!

Хочу рассказать вам о полезной команде updatedb для операционной системы Linux.

Updatedb используется для обновления индекса файловой системы, который пригодится вам, когда нужно быстро найти файлы

Как это работает?

Когда вы запускаете команду updatedb, она просматривает все файлы на вашем компьютере и создает специальный файл индекса по пути /var/lib/mlocate/mlocate.db. Этот файл содержит информацию о каждом файле в системе.

Что это дает вам? Теперь вы можете мгновенно искать файлы по всей системе, не тратя время на перебор всех каталогов! Удобно, правда?

Как запустить updatedb? Просто откройте терминал и введите команду:

sudo updatedb

После того, как индекс будет обновлен, используйте команду locate, чтобы быстро найти нужные файлы. Например, чтобы найти файл с именем myfile.txt, введите:

locate myfile.txt

И волшебство произойдет) Вам будут показаны все файлы с таким именем на вашей системе.

Так что не тратьте время на долгий поиск файлов вручную. Используйте команду updatedb и находите все, что вам нужно мгновенно 😎

👉 DevOps Portal

DevOps Portal | Linux

22 Nov, 06:07


Самая красивая и лаконичная шпаргалка bash

В твиттерской опубликовали ладно скроенную инфографику от sysexplore.com, которая поможет не только ознакомиться с базовой терминологией скриптинга, но и с вычиткой параметров из файла, хэндлинг сигналов (SIGTERM) и проч.

👉 DevOps Portal

DevOps Portal | Linux

21 Nov, 14:08


Python для сетевых инженеров. Автоматизация сети, программирование и DevOps

Автор:
Чоу Э.
Год:
2023

📂 Скачать книгу

👉 DevOps Portal | #книги

DevOps Portal | Linux

21 Nov, 11:07


⚡️Всероссийский Хакатон ФИЦ 2024

🚀Попробуйте себя в одном из предложенных кейсов:
1. Семантический делитель текстов: Разработать алгоритм, который сможет обеспечить точное разделение текста на блоки в рамках произвольно заданных ограничений размера блока.

2. Контекстный перевод названий научных работ: Разработать и реализовать переводчик, который будет переводить названия научных работ с русского на английский.

3. Прогнозирование бизнес драйверов: Разработать решение для задачи прогнозирования временных рядов бизнес-драйверов и произвести прогноз на следующий календарный месяц.

4. Система контроля и управления доступом: Разработка системы контроля и управления доступом в реальном времени. Система будет включать API для управления сотрудниками, точками доступа и интеграцию с системой видеонаблюдения.

И другие 16 кейсов смотрите на сайте: https://фиц2024.рф/hackathon

Хакатон пройдет в 2 этапа: Отборочный этап в Онлайн, Финал в Офлайн.

🏆Призовой фонд: 6 000 000 руб.
🔥Дедлайн регистрации: 26 ноября, 23:59
📅Даты отборочного этапа: 29 ноября - 2 декабря
🦾Даты финала: 3 - 4 декабря

Зарегистрируйтесь для участия в хакатоне: https://фиц2024.рф/hackathon

Реклама. ООО «Акселератор Возможностей», ИНН: 9704005146, erid: 2VtzquqsWwY

DevOps Portal | Linux

21 Nov, 08:30


Сегодня хочу поделиться полезной информацией о том, как запускать процессы в фоновом режиме через терминал Linux. Это удобный способ выполнить задачу и продолжить работу, не прерывая своего текущего сеанса. 🐧

Для запуска процесса в фоне используется специальный символ "&". Давайте посмотрим на примере команды "command":

1️⃣ Простая команда:
$ command &


Таким образом, "command" будет запущен в фоне, и вы сможете продолжать работать в терминале.

2️⃣ Запуск команды в фоновом режиме с выводом в файл:
$ command > output.txt &


В данном случае вывод команды "command" будет перенаправлен в файл "output.txt", а сам процесс будет запущен в фоне.

3️⃣ Запуск команды в фоновом режиме без вывода:
$ command > /dev/null &


В этом примере команда "command" будет выполнена в фоне, а вывод будет направлен в специальное устройство "/dev/null", которое игнорирует вывод.

4️⃣ Запуск процесса в фоне с возможностью отключиться от терминала:
$ nohup command &


Команда "nohup" позволяет запустить процесс в фоне и отключиться от терминала, не прерывая его выполнение. Вывод будет сохранен в файле "nohup.out".

Теперь вы знаете, как запускать процессы в фоне через терминал Linux! Этот метод очень удобен для выполнения долгих задач и автоматических скриптов.

👉 DevOps Portal

DevOps Portal | Linux

19 Nov, 08:09


How To Secure A Linux Server

В репозитории содержится развивающееся руководство по обеспечению безопасности сервера GNU/Linux.

Руководство освещает такие темы, как:
SSH Server
The Network
The Auditing
The Danger Zone
The Miscellaneous

https://github.com/imthenachoman/How-To-Secure-A-Linux-Server

👉 DevOps Portal | #ресурсы

DevOps Portal | Linux

18 Nov, 10:03


🔒 Защити свои файлы и сообщения с легкостью!

Cегодня расскажу вам о простом способе шифровки файлов и сообщений при помощи терминала Linux. Это отличный способ обеспечить конфиденциальность ваших данных

Команда для шифровки файлов:

Для шифрования файлов мы будем использовать утилиту GPG (GNU Privacy Guard). Она позволит нам создать зашифрованный файл из обычного. Процедура проста и состоит из нескольких шагов:

1️⃣ Установка GPG:

Если вы еще не установили GPG, выполните в терминале команду:
sudo apt-get install gnupg


2️⃣ Шифрование файла:

Теперь, когда GPG установлен, вы можете зашифровать файл с помощью команды:
gpg -c имя_файла


После выполнения этой команды, вы будете попрошены ввести пароль для шифрования файла.

3️⃣ Расшифровка файла:

Для расшифровки файла выполните команду:
gpg имя_файла.gpg


GPG запросит вас ввести пароль, который вы использовали при шифровании файла.

4️⃣ Команда для шифрования сообщений:

Вы также можете зашифровать текстовые сообщения при помощи GPG. Для этого выполните следующую команду:
echo "Ваше сообщение" | gpg -e -r имя_получателя > зашифрованное_сообщение.gpg


Здесь "имя_получателя" - это публичный ключ получателя сообщения. Он должен иметь публичный ключ GPG, чтобы расшифровать сообщение.

💡 Обратите внимание, что без публичного ключа получателя расшифровка сообщения будет невозможной!

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

👉 DevOps Portal

DevOps Portal | Linux

18 Nov, 06:07


🔍 Как узнать, какой процесс открыл определенный ресурс?

Если вас интересует, какой процесс открыл определенный ресурс, будь то файл или сетевой порт, у вас есть полезная команда - fuser. Вот как это работает:

1. Чтобы узнать, какой процесс открыл сетевой порт 23 (например, TCP), выполните следующую команду:
fuser -va 23/tcp


Вы получите идентификатор процесса, который открыл этот порт.

2. Если вам нужно узнать, какой процесс открыл определенный файл, используйте команду:
fuser -va /путь/к/файлу


Например, для файла /chroot/etc/resolv.conf команда будет выглядеть так:
fuser -va /chroot/etc/resolv.conf


Вы узнаете идентификатор процесса, который открыл этот файл.

После того как вы узнали идентификатор процесса, дальние шаги зависят от вас. Например, вы можете завершить этот процесс с помощью команды kill.

Помните, что работа с процессами и ресурсами требует осторожности, так как неправильные действия могут повлиять на стабильность и безопасность системы. Всегда будьте внимательны при использовании подобных команд.

👉 DevOps Portal

DevOps Portal | Linux

16 Nov, 16:07


Администрирование системы защиты SELinux

Авторы: Вермейлен Свен
Год: 2020

📂 Скачать книгу

👉 DevOps Portal | #книги

DevOps Portal | Linux

16 Nov, 10:06


👩‍💻🔍 Сегодня хочу поделиться пятью полезными способами, с помощью которых вы можете получить информацию о расходуемой памяти в вашей системе:

1️⃣ Команда free: Используйте команду free в терминале, чтобы увидеть общее использование и доступную память, а также использование подкачки.

2️⃣ Процессор top: Запустите команду top для мониторинга активных процессов и их потребления памяти в реальном времени.

3️⃣ Команда ps: Используйте ps aux для просмотра списка активных процессов и их потребления ресурсов, включая память.

4️⃣ Профилирование процессов: Используйте инструменты профилирования, такие как htop или atop, чтобы получить более подробную информацию о загрузке ЦП и памяти.

5️⃣ /proc файловая система: В директории /proc есть файлы и директории, которые предоставляют информацию о текущем состоянии процессов и ресурсах, включая память.

Выберите удобный для вас метод и отслеживайте использование памяти в вашей Linux-системе. Это поможет вам оптимизировать ресурсы и улучшить производительность

👉 DevOps Portal

DevOps Portal | Linux

14 Nov, 10:02


👩‍💻 Обзор файловой системы Linux

Эта схема показывает структуру файловой системы Linux и объясняет предназначение различных директорий, находящихся в корневом каталоге /

/bin - Бинарные файлы основных команд
/boot - Файлы загрузчика системы
/dev - Файлы устройств
/etc - Системные конфигурационные файлы, специфичные для хоста
/home - Домашний каталог пользователя
/lib - Модули общих библиотек
/media - Файлы мультимедиа, такие как CD-ROM
/mnt - Временно смонтированные файловые системы
/opt - Дополнительные пакеты программного обеспечения
/proc - Интерфейс к структурам данных ядра
/root - Домашний каталог пользователя root
/run - Данные времени выполнения
/sbin - Системные бинарные файлы
/srv - Служебные данные, обслуживаемые этой системой
/sys - Виртуальный каталог для информации о системе
/tmp - Временные файлы
/usr - Ресурсы Unix-системы
/var - Файлы, которые постоянно изменяются

👉 DevOps Portal

DevOps Portal | Linux

12 Nov, 09:41


Быстрый совет для Linux 👩‍💻

Вы можете включить временные метки в истории команд bash, чтобы видеть, когда вы выполняли предыдущие команды. Это может быть полезно для отслеживания того, над чем вы работали и когда

Чтобы добавить временные метки в историю, просто установите переменную окружения HISTTIMEFORMAT следующим образом:
$ export HISTTIMEFORMAT="%F %T "


Теперь, когда вы просматриваете свою историю или ищете в ней с помощью grep, вы будете видеть временную метку рядом с каждой командой, указывающую, когда она была выполнена:
$ history | tail -n 5


Или, чтобы сэкономить несколько нажатий клавиш:
$ history 5


Формат "%F %T" отображает дату и время, но вы можете настроить его под свои предпочтения.

Примечание: Это не добавляет временные метки к командам, которые вы выполняли до установки HISTTIMEFORMAT, и работает только в bash.

👉 DevOps Portal

DevOps Portal | Linux

08 Nov, 06:21


Сегодня расскажу вам, как отправить электронное письмо прямо из терминала Linux! ✉️

1️⃣ Вам понадобится установленный пакет "mailutils", чтобы воспользоваться утилитой "mail". Если его у вас нет, установите с помощью команды:

sudo apt-get install mailutils


2️⃣ Теперь, для отправки письма, воспользуйтесь следующей командой:

echo "Текст вашего письма" | mail -s "Тема письма" адрес_получателя@example.com


Замените "Текст вашего письма" на текст сообщения, "Тема письма" на тему письма и "адрес_получателя@example.com" на адрес электронной почты получателя.

3️⃣ Если нужно отправить письмо с вложением, воспользуйтесь командой "mutt":

mutt -s "Тема письма" -a /путь/к/вашему_файлу.txt адрес_получателя@example.com < /путь/к/текстовому_файлу.txt


Замените "/путь/к/вашему_файлу.txt" на путь к вашему вложению и "/путь/к/текстовому_файлу.txt" на путь к текстовому файлу с телом письма.

Теперь вы можете отправлять письма из терминала Linux! Хорошего дня 🤝

👉 DevOps Portal

DevOps Portal | Linux

07 Nov, 10:30


🐧🔍 Сегодня хочу поделиться пятью полезными способами, с помощью которых вы можете получить информацию о расходуемой памяти в вашей системе:

Команда free: Используйте команду free в терминале, чтобы увидеть общее использование и доступную память, а также использование подкачки.

Процессор top: Запустите команду top для мониторинга активных процессов и их потребления памяти в реальном времени.

Команда ps: Используйте ps aux для просмотра списка активных процессов и их потребления ресурсов, включая память.

Профилирование процессов: Используйте инструменты профилирования, такие как htop или atop, чтобы получить более подробную информацию о загрузке ЦП и памяти.

/proc файловая система: В директории /proc есть файлы и директории, которые предоставляют информацию о текущем состоянии процессов и ресурсах, включая память.

Выберите удобный для вас метод и отслеживайте использование памяти в вашей Linux-системе. Это поможет вам оптимизировать ресурсы и улучшить производительность

👉 DevOps Portal

DevOps Portal | Linux

07 Nov, 08:30


Это — база по Machine Learning и Data Science, которая заменит вам сотни тг-каналов и сайтов. Фишка в том, что здесь опытные ML-специалисты первыми освещают новости сферы, пишут емкие разборы статей и делятся прикладными материалами.

И канал – только часть клада: ребята сделали целый сайт с научными лонгридами, ML-соревнованиями и свежими вакансиями индустрии.

Подписывайтесь: @data_secrets – это жемчужина, которую можно уверенно рекомендовать.

DevOps Portal | Linux

07 Nov, 06:25


CLI инструменты, которые облегчат времяпровождение в терминале и сделают его приятнее

Многие из вас каждый день работают в терминале. Этот процесс можно улучшить. Существует множество полезных инструментов CLI, которые могут сделать вашу жизнь в командной строке проще, быстрее и в целом веселее.

🔜 Читать подробнее

👉 DevOps Portal | #cтатья

DevOps Portal | Linux

06 Nov, 16:51


Bash и кибербезопасность: атака, защита и анализ из командной строки Linux

Авторы: Пол Тронкон, Карл Олбинг
Год: 2020

📂 Скачать книгу

👉 DevOps Portal | #книги

DevOps Portal | Linux

06 Nov, 07:57


🎹 Как вычислить человека по IP, используя терминал и Linux?

Раньше в интернете была популярна фраза "я тебя по IP вычислю", но сегодня давайте разберемся, насколько это возможно на самом деле, используя терминал Linux. 👩‍💻

Определение местоположения человека по IP-адресу – это интересная тема, и оно основано на технологии геолокации. Отмечу сразу, что точность определения зависит от множества факторов, и это не так просто, как кажется.

Самый простой способ:

Linux предоставляет утилиту geoiplookup, которая может выдать информацию о стране, городе и провайдере по IP-адресу. Вы можете воспользоваться этой командой в терминале следующим образом:

geoiplookup <IP-адрес>

Замените <IP-адрес> на конкретный IP, который хотите проверить. Но помните, что эта информация может быть неточной, особенно если пользователь использует VPN или прокси.

Более продвинутые методы:

Существуют веб-сервисы и API, которые предоставляют более точную информацию о местоположении по IP-адресу. Вы можете использовать такие сервисы, отправляя запросы через терминал с помощью утилиты curl. Например, сервис "ipinfo.io" предоставляет информацию о городе, регионе, стране, координатах и другие данные:

curl ipinfo.io/<IP-адрес>

Однако, даже с использованием более точных методов, стоит помнить, что IP-адрес не является надежным способом идентификации местоположения пользователя. В современном интернете многие используют VPN, прокси или другие методы для скрытия своего настоящего местоположения.

Так что давайте воспользуемся этими способами в терминале Linux и посмотрим, что они скажут. Но помните, что это просто увлекательная возможность и не стоит полагаться на неё как на надежный метод определения местоположения.

Спасибо за вашу активность! Ваше участие делает наше сообщество интереснее и полезнее 🥳

👉 DevOps Portal

DevOps Portal | Linux

05 Nov, 16:07


🐧 Двойные тире в командах Linux

Порой опытные админы используют команды в консоли следующим образом:
ssh [email protected] --


Что означает это двойное тире? Зачем оно? Давайте разбираться.

Двойное тире означает «флаги командной строки». Оно указывает ssh или другой команде не пытаться анализировать то, что следует после параметров. На словах выглядит не очень, давайте посмотрим на практике!

У меня есть такая команда:
ssh [email protected] -- command1 --arg1 --arg2


Приведенный выше синтаксис указывает ssh не пытаться анализировать параметры arg1 и arg2 после символа «--». Это гарантирует, что команда command1 примет arg1 и arg2 в качестве аргументов командной строки и выполнится на удаленном сервере.

Короче говоря мы сообщаем ssh - все то, что идет после двойного тире, это не твои параметры и аргументы, анализировать это НЕ НАДО! СТОП! Дальше дело за command1 и его параметрами и аргументами.

Двойное тире обрабатывается не обрабатывается оболочками bash/zsh/csh/sh/fish и т.п. Оно обрабатывается средствами самих программ, но НЕ всех. Например ssh это умеет делать, как и множество других команд и утилит. Рассмотрим другие примеры.

Например, вы не сможете просмотреть файл с именем --file или -f используя команду cat. Проверяем:
cat --file
cat -f


Опа. Ошибка! cat: unrecognized option --file/f. Давайте теперь передадим двойное тире:
cat -- --file
cat -- -f


Ошибка пропала и файл успешно вывелся на экран, ну либо выскочило сообщение cat: --file/f: No such file or directory. Это нормально.

Закрепим:
rm --file       = получим ошибку
rm -- '--file' = а вот это сработает


Ну а что бы передать параметры в rm, делаем так:
rm -v -i -- '--file'
rm -f -v -i -- '-f'


Просто, логично, мелодично. Но как я и сказал выше, не все команды умеют работать с двойным тире. Например, команда echo, на все попытки подружить её с двойным тире, просто-напросто провалятся:
/usr/bin/echo -- -n
echo -- --test


выведется это:
-- -n
-- --test


Если материал оказался полезным и интересным, то поставьте лайк ❤️

👉 DevOps Portal

DevOps Portal | Linux

05 Nov, 14:07


⚡️ Экс-сотрудник лаборатории Касперского создал два канала по IT и кибербезопасности

▪️ Пакет безопасности
▪️ Культ безопасности

Здесь вы узнаете ТОП-10 IT-гигантов в России с самой слабой защитой от взломов, какие компании «барыжат» вашими персональными данными и как этому противостоять.

Для людей из индустрии: полезный софт, ИИшки для работы, новости из сферы и куча полезностей, которые не найдёте в других каналах.

Подписывайтесь: раз и два.

DevOps Portal | Linux

05 Nov, 06:29


Отладка дедлока FUSE в ядре Linux

Автор подробно объясняет инструменты и методы диагностики таких проблем, сложности, которые могут возникнуть с FUSE, и пошагово показывает, как анализировать и решать подобные ситуации в рабочих средах

🔜 Читать статью

👉 DevOps Portal | #cтатья

DevOps Portal | Linux

04 Nov, 09:35


Что такое контейнеризация? Чем она отличается от виртуализации?

При виртуализации машины создаются с помощью гипервизора и все аппаратные составляющие создаются через него. Затем на него накатываются операционные системы. Соответственно, ресурсы машины будут уходить на поддержание работы запущенной операционной системы.

При контейнеризации аппаратные ресурсы выделяются с помощью ядра операционной системы, и изолируются пространством имен. Следовательно, они потребляют меньше ресурсов, и быстрее пересоздаются.

👉 DevOps Portal | #собес

DevOps Portal | Linux

04 Nov, 07:35


🔒 7539 ГБ платного контента для программистов выложили в Telegram

Выбирай направление и обучайся:

👩‍💻 Java — 644 ГБ

🖥 Python — 724 ГБ

🖥 Frontend — 981 ГБ

🖥 Backend — 817 ГБ

👩‍💻 Все языки — 4373 ГБ

Пост удалится через 48 часов 🕔

DevOps Portal | Linux

04 Nov, 06:25


⚡️ Шпаргалка по CMD командам в Windows

Управление файлами и папками

COPY - Копирование файлов в другое место
DIR - Отображение файлов и папок в текущем каталоге
DEL или ERASE - Удаление файлов
EDIT - Запуск редактора файлов
CD - Изменить каталог
EXPAND - Распаковать сжатые файлы
FC - Сравнивает файлы и показывает различия между ними
FIND - Найти текстовую строку в файле
MD или MAKEDIR - Создать папку
MOVE - Переместить файлы из одной папки в другую
PRINT – отобразить содержимое текстового файла
RD или RMDIR - удалить папку
REN или RENAME - переименовать файл или папку
REPLACE - Замена файлов в одном каталоге на файлы с тем же именем в другом каталоге
ROBOCOPY - Использует программу робокопи для копирования файлов и каталогов
TREE - Показывает структуру каталогов диска или папки
TYPE - Отображает содержимое текстовых файлов
OPENFILES - Управление открытыми локальными или сетевыми файлами
XCOPY - Копирование файлов и деревьев каталогов

Приложения и процессы

SCHTASKS – Запланированный запуск приложения приложения (планировщик задач)
SHUTDOWN - Выключение или перезагрузка компьютера
TASKLIST - Список выполняемых задач
TASKKILL - Остановить или прекратить выполнение задачи (для остановки задачи используется PID, который можно узнать из TASKLIST).
REG - Запустить редактор реестра
RUNAS - Запуск задачи от имени другого пользователя

Управление дисками

CHKDISK - Проверяет диск и показывает статистику
DEFRAG - Запуск дефрагментации диска
CHKNTFS - Отображает или изменяет выполнение проверки диска при загрузке
COMPACT - Отображает и изменяет сжатие файлов в разделах NTFS
CONVERT - преобразование дискового тома FAT в NTFS
DISKPART - Отображение и настройка свойств разделов диска
FORMAT - Форматирование диска
FSUTIL - Отображение и настройка свойств файловой системы
LABEL - Создание, изменение или удаление метки тома диска
RECOVER - Восстановление данных с поврежденного или испорченного диска
VOL - Отображение метки тома и серийного номера диска

Системная информация

DATE - Выводит или устанавливает текущую дату
TIME - Выводит или устанавливает системное время
DRIVERQUERY - Отображает текущее состояние и свойства драйвера устройства
HOSTNAME - Отображает имя компьютера
SYSTEMINFO - Отображает информацию о конфигурации компьютера
VER - Позволяет просмотреть версию Windows
GPRESULT - Отображает текущие примененные групповые политики (RSoP)
GPUPDATE - Обновление групповых политик

Сеть

IPCONFIG - Отображает информацию о сетевых интерфейсах
PING - Отправляет ICMP-запросы на целевой хост, проверяет его доступность
TRACERT – Отображение пути пакетов в сети
NSLOOKUP - Поиск IP-адреса по имени ресурса
ROUTE - Отображает таблицы сетевых маршрутов
ARP - Показывает таблицу с IP-адресами, преобразованными в физические адреса
NETSH - Запускает программу управления сетевыми настройками
GETMAC - Показывает MAC-адрес сетевого адаптера
TFTP - Запускает TFTP-клиент в консоли

Настройка командной строки

CLS - Очистить экран
CMD - Отображает другую командную строку
COLOR - Устанавливает цвет текста и фона в консоли
PROMPT – Изменение начального текста командной строки
TITLE - Присвоение заголовка для текущего сеанса
HELP - Запуск справки CMD
EXIT - Выход из командной строки

👉 DevOps Portal

DevOps Portal | Linux

03 Nov, 08:09


Компьютерные сети. 6-е изд.

Авторы: Таненбаум Эндрю, Фимстер Ник, Уэзеролл Дэвид
Год: 2023

📂 Скачать книгу

👉 DevOps Portal | #книги

DevOps Portal | Linux

31 Oct, 16:24


👩‍💻 Команда which в Linux: как найти местоположение исполняемых файлов

Команда which - полезный инструмент, который помогает быстро определить, где находится исполняемый файл программы. Это может быть очень удобно, особенно если вы работаете с командной строкой и хотите убедиться, что используется нужная вам версия программы. Ну или вы когда-то закинули в систему самописанную программу и напрочь забыли как она называется и где находится. В общем, команда нужная, поэтому давайте посмотрим, как ей пользоваться.

Чтобы воспользоваться командой which, просто введите ее, а затем укажите имя команды, местоположение которой вы хотите найти. Например:

$ which ls
/bin/ls

Этот пример покажет вам, что команда ls находится в каталоге /bin. Это полезно, если у вас есть несколько версий программы или вы хотите убедиться, что используется нужная версия.

Вы также можете использовать опцию -a, чтобы найти все местоположения команды, если она присутствует в нескольких местах. Например:

$ which -a python
/usr/bin/python
/usr/local/bin/python

👉 DevOps Portal

DevOps Portal | Linux

31 Oct, 14:07


K2 Cloud + DevOops Conf = бесплатный день конференции для инженеров 💜

Ребята из K2 Cloud помогли организовать Community Day для DevOps-специалистов. 6 ноября ты сможешь бесплатно послушать часть докладов конференции DevOops: от основ работы сертификатов до организации Flux CD monorepo. Для участия нужно только зарегистрироваться.

Подробнее на сайте

DevOps Portal | Linux

31 Oct, 11:05


Linux для сетевых инженеров

Авторы: Роб Ванденбринк
Год: 2024

📂 Скачать книгу

👉 DevOps Portal | #книги

DevOps Portal | Linux

30 Oct, 10:07


Простой способ записать ваши терминальные сессии 💾

Не хотите ли сохранить информацию о вашей терминальной сессии? Команда script спасет вас! Она фиксирует всё: ваши вводы, выводы и даже временные метки.

Для начала записи, просто выполните:

script history_log.txt

Теперь можете спокойно вводить команды, например, ls, cal, w.

Когда закончите, завершите запись, введя команду exit в терминале. После этого вы увидите:

Script done, file is history_log.txt

Теперь все, что вы делали в терминале, сохранено в файле history_log.txt. Полезно, не правда ли?

👉 DevOps Portal

DevOps Portal | Linux

30 Oct, 08:07


⚡️ 1000+ ГБ IT-контента уже ждут вашего внимания!

Подпишись и получай всё самое полезное:

📱 Python: библиотеки, фишки и готовые скрипты для ускорения разработки.

📱 GitHub: 100+ ГБ свободного ПО для работы и экспериментов.

👩‍💻 Linux: всё для работы с системами — от bash до гайдов.

📱 Frontend: готовые решения и макеты для твоих проектов.

📱 Курсы IT: все платное - бесплатно. Обучение Python, Devops, Backend и др...

📱 Все IT: книги, шпаргалки, ресурсы и статьи для любого уровня.

🔥 Не пропусти, успей подписаться пока ссылки не сгорели!

DevOps Portal | Linux

30 Oct, 07:19


👩‍💻 Карта наиболее часто используемых команд Linux

На этой карте представлен краткий обзор наиболее часто используемых команд Linux, сгруппированных по их основным функциям.

Управление файлами и каталогами
Просмотр и редактирование файлов
Управление процессами
Информация о системе
Управление пользователями и группами
Конфигурация и мониторинг сети
Управление пакетами

👉 DevOps Portal

DevOps Portal | Linux

29 Oct, 12:05


Не можете вспомнить команду в Linux? Я вам помогу!

Вот бывает такое, что команда вылетела из головы. Причем прихватила не только свое название, но и какие-то команды с ключами. Что делать? Воспользуемся утилитой man с нужными ключами:
man -k <ключевое слово>

Например, вы забыли название команды, но помните, что она как-то связана с диском. Поэтому вводим следующую строку в терминал:
man -k disk

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

👉 DevOps Portal

DevOps Portal | Linux

29 Oct, 07:00


Для отладки bash-скриптов существует инструмент set -xve. Это мастхев фича именно на момент, создания чего-либо т. к. не всегда логика может работать правильно, а с set -xve, можно вовремя увидеть все значения переменных и т.п. не используя мусорные конструкции, например, echo «Error in function xxx».

Применяется так:
#!/bin/bash -xve
set -xve


Основные флаги set:

x — вывести команды и их аргументы по мере их выполнения.
v — вывести строки ввода командной строки по мере их считывания.
e — выход, если команда завершается с ненулевым статусом.

Пример:

Изменяем PS4 и добавляем вывод номера строки во включенный дебаг режим:
#!/bin/bash -xve

PS4='+(${BASH_SOURCE}:${LINENO}): ${FUNCNAME[0]:+${FUNCNAME[0]}(): }'

bar=10
echo ${bar}
echo $((6 + 6))


После выполнения мы видим:
bar=10
+(./script.sh:6): foo=10
echo ${bar}
+(./script.sh:7): echo 10
10
echo $((6 + 6))
+(./script.sh:8): echo 12
4


Теперь если скрипт где-то вылетает с плохим статусом, всегда можно узнать в какой строке это приключилось

Немного украшательств, экспортируем PS4:
PS4='\033[0;33m+(${BASH_SOURCE}:${LINENO}):\033[0m ${FUNCNAME[0]:+${FUNCNAME[0]}(): }'


Происходит подкрашивание запускаемых строчек.

С помощью PS4 можно отладить shell-скрипт, задав при его выполнении set -x, что позволяет выводить каждую команду, а затем ее результаты. Перед каждой командой ставится знак +, эту строку подсказки «+» можно изменить, определив переменную PS4.

👉 DevOps Portal

DevOps Portal | Linux

28 Oct, 08:10


Идиомы bash

Авторы: Олбинг Карл, Фоссен Джей Пи
Год: 2023

📂 Скачать книгу

👉 DevOps Portal | #книги

DevOps Portal | Linux

28 Oct, 05:33


Задача: провести техническое обслуживание на сервере и всех выгнать с него

Создаем пустой файл /etc/nologin. Теперь только root сможет авторизоваться по ssh. Предварительно нужно разрешить вообще заходить под root’ом.

Теперь нужно всех уведомить, кто в данный момент что-то делает в терминале.

Для этого воспользуемся утилитой wall.

Wall — утилита командной строки, которая отображает сообщение на терминалах всех вошедших в систему пользователей.

Запускаем команду:

wall "... текст сообщения ..."


Все кто был подключен к серверу, получают сообщение:

Broadcast message from root@dev (pts/0) (текущая дата/время):
... текст сообщения ...


И неважно что делает человек и где находится, сообщение появится у него на экране. Через wall можно спамить определенным группам пользователей.

В указанное время запускаем ассасина:

pkill -9 -u `who | awk '{print $1}'| grep -v root|head -1


Выгнали всех с сервера, кроме root’а и проводим технические работы, удаляем /etc/nologin.

Wall можно заменить например на такое:

echo "какой-то текст" | write user


Но тут сообщение уйдет конкретному пользователю user. Конечно, если по какой-то причине, в системе отсутствует wall, можно и через цикл выгрести всех юзеров и через echo отправить им уведомление.

write - утилита, позволяющая отправить сообщение другому пользователю, который имеет сессию в этой же системе.

Или так:

echo "какой-то текст" > /dev/pts/1


👉 DevOps Portal

DevOps Portal | Linux

25 Oct, 16:07


Ngrok — это сервис, который позволяет сделать локальный порт доступным из интернета без настройки NAT, роутера, DDNS и других протоколов. Программа создает туннель между вашим компьютером и удалённым сервером и предоставляет доступ к нему с уникального домена.

Такой способ не подойдёт если вам нужно чтобы ваш сервис был доступен постоянно, но показать как работает ваш локальный сайт или потестировать работу Callback API довольно удобно.

🔜 Как пользоваться Ngrok — Читаем здесь

👉 DevOps Portal | #ресурсы

DevOps Portal | Linux

25 Oct, 14:07


🌡 10ТБ Отбороного контента по программированию и дизайну примо в Telegram

👩‍💻 Дизайн

👩‍💻 Программирование

👩‍💻 Системное администрирование

➡️ Подпишись, время ограничено!!

DevOps Portal | Linux

25 Oct, 09:31


Стратегии развертывания Kubernetes

🔜 Сине-зеленое развертывание (Blue/Green)

Эта стратегия базируется на двух продуктивных средах: «синяя» — там, где живут старые версии приложения, и «зеленая» — зона, где мы запускаем новую версию приложения.

🔜 Shadow

Теневое развертывание заключается в выпуске версии 1.1 наряду с версией 1.0, перехвате входящих запросов с первой версии и отправке на вторую без влияния на трафик. Это особенно полезно для тестирования production нагрузки на новую функцию.

🔜 Постепенное развертывание (Rolling)

Все инстансы приложения будут последовательно обновляться до новой версии.

🔜 A/B testing

Обычно это стратегия принятия бизнес-решений на основе статистики. Она может быть реализована путем добавления к Canary дополнительной функциональности при определенных условиях. Например, куки браузера, язык или параметры запроса. Вместо того, чтобы открыть доступ к новой функции всем пользователям, ее предлагают лишь ограниченной их части.

🔜 Повторное создание (Recreate)

Сперва удаление текущей версии приложения, затем развертывание новой версии.

🔜 Канареечное развертывание (Canary)

«Канареечный» деплой схож с зелено-синей стратегией. Часть текущих инстансов приложения заменяется новой версией, на которую переключается часть трафика.

Каждая стратегия предлагает свой подход к управлению обновлениями

👉 DevOps Portal

DevOps Portal | Linux

24 Oct, 17:57


Что такое docker и какие инструменты linux лежат в основе? Для чего он используется?

Docker базируется на технологиях:

namespaces — обеспечивает изоляцию (например, можно айдишники процессов разместить в разных контейнерах)
cgroups — позволяет управлять группой процессов, и управлять их ресурсами
capabilities — позволяет дать некоторые рут привелегии процессам или исполняемым файлам. Например, изменить UID процесса на 0, или дать возможность монтировать файловые системы.
overlay namespaces — (overlayFS, overlay2-драйвер) - файловая система, которая умеет работать "слоями". Не сохранять каждый раз новые файлы, а наслаивать один слой на другой, тем самым экономя место на диске и время создания контейнера.

А вот докер — это уже штука, которая всеми этими технологиями рулит, удобным для нас образом.

Компоненты докера:

Docker Daemon — тот самый Container Engine; запускает контейнеры.
Docker CLI — утилита по управлению Docker.
Dockerfile — инструкция по тому, как собирать образ.
Image — образ, из которого раскатывается контейнер.
Container
Docker registry — хранилище образов.

На Docker_host работает Docker daemon и запускает контейнеры.
Client — передаёт команды: собери образ, скачай образ, запусти контейнер. Docker daemon ходит в registry и выполняет их. Docker-клиент может обращаться и локально (к юникс-сокету), и по TCP с удалённого хоста.

Docker daemon (демон) — это серверная часть, работающая на хост-машине: скачивает образы и запускает из них контейнеры, создаёт сеть между контейнерами, собирает логи. Когда мы говорим «создай образ», этим тоже занимается демон.

Docker CLI — клиентская часть Docker, консольная утилита для работы с демоном. Может работать не только локально, но и по сети.

👉 DevOps Portal | #собес

DevOps Portal | Linux

24 Oct, 14:07


👩‍💻 Программирование теперь в Telegram!

Вот 10 обучающих каналов по самым востребованным направлениям в IT.

Выбирай своё направление:

👩‍💻 Python: @python_ready
🖥 Базы Данных & SQL: @sql_ready
👩‍💻 Frontend: @code_ready
👩‍💻 C#: @csharp_ready
👩‍💻 C/C++: @cpp_ready
👩‍💻 Java: @java_ready
👩‍💻 Backend: @backend_ready
👩‍💻 Все языки: @roadmap_ready
📖 IT Архив: @archive_ready
🖥 Design: @time_design

📌 Ресурсы, гайды, шпаргалки, книги и задачи для каждого языка программирования.

DevOps Portal | Linux

23 Oct, 11:07


Unix и Linux. Руководство системного администратора, 5-е издание

Автор:
Дэн Макин
Год:
2021

📂 Скачать книгу

👉 DevOps Portal | #книги

DevOps Portal | Linux

23 Oct, 08:36


👩‍💻 10 практик безопасности Docker

Предпочитайте минимальные базовые образы

Выбирайте наименее привилегированного пользователя. Просто так root не нужен.

Подписывайте и проверяйте образы для предотвращения MITM-атак

Поиск, исправление и мониторинг уязвимостей с открытым исходным кодом

Не допускайте утечки конфиденциальной информации. Иногда при создании приложения внутри образа Docker вам нужны секреты, такие как закрытый ключ SSH, чтобы извлекать код из частного репозитория, или вам нужны токены для установки частных пакетов. Если вы копируете их в промежуточный контейнер Docker, они кэшируются на том уровне, на который они были добавлены, даже если вы удалите их позже. Эти токены и ключи должны храниться за пределами Dockerfile.

Используйте фиксированные теги для неизменности

Используйте COPY вместо ADD (рекурсивно копирует локальные файлы, неявно создает каталог назначения)

Используйте метки метаданных

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

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

🔜 Вот тут подробно описаны все нюансы

👉 DevOps Portal

DevOps Portal | Linux

22 Oct, 09:44


PowerShell для сисадминов

Автор:
Адам Бертрам
Год:
2021

📂 Скачать книгу

👉 DevOps Portal | #книги

DevOps Portal | Linux

22 Oct, 06:04


🕒 Увеличение времени сессии SSH

Бывает, что выполнение удаленно запущенной команды может затянуться, а необходимо дождаться ее выполнения (кстати, в этом случае весьма полезным может стать использование screen), или пришлось отвлечься, а сессия SSH в это время отвалилась.

На сервере в конфигурационном файле /etc/ssh/sshd_config прописываем:

TCPKeepAlive yes
ClientAliveInterval 300
ClientAliveCountMax 60

TCPKeepAlive — установлен в «yes», значит сервер будет периодически пинговать клиента, проверяя жив ли он.
ClientAliveInterval — задает интервал пинга для проверки состояния клиента (в секундах). Параметр работает только для протокола версии 2 (Protocol 2).
ClientAliveCountMax — количество пингов клиента.
Таким образом в примере таймаут сессии будет равен 60*300/60 = 300 минут = 5 часов.
После изменения настроек не забудьте перезапустить сервис ssh.

👉 DevOps Portal

DevOps Portal | Linux

21 Oct, 09:07


Самоучитель системного администратора, 7-е издание

Автор:
Кенин А.М.
Год:
2024

📂 Скачать книгу

👉 DevOps Portal | #книги

DevOps Portal | Linux

20 Oct, 14:14


⚡️ Шпаргалка по ZFS

modinfo zfs | head -n 9 — узнать версию ZFS и другие подробности

Информация о пулах / файловых системах (ФС) на пулах
zpool list — статус пулов
zpool status -v — статус пулов подробный
zfs list — список ФС, так называются монтируемые разделы в пулах
zfs get all — вся информация по пулам

Управление пулами / дисками
ls -lha /dev/disk/by-id/ — выяснить id дисков чтобы потом на них создать пул (не юзайте имя диска типа sda — они динамически меняются)
zpool create zfspool disk-id-1 disk-id-2 — может быть сколько угодно дисков
zpool create -m /mnt/backups zfspool disk-id-1 — создать пул с указанием папки 
zpool destroy zfspool — уничтожить пул
mkfile 100m disk1 disk2 — создать файлы дисков
zpool create backups /disk1 /disk2- создать пул backups на созданных файлах
zpool create zfspool mirror /disk1 /disk2 — создать пул zfspool с зеркалированием на 2 диска
zpool add zfspool /disk3 — добавить диск в пул
zpool attach zfspool /disk3 — добавить устройство в пул, если он в зеркале — добавится в зеркало, если простой — пул расширится
zpool detach zfspool /disk3 — исключить устройство из пула
zpool remove zfspool /disk3 — удаление устройства из пула
zpool add zfspool spare /disk3 — добавление диска горячей замены в пул
zpool remove zfspool spare /disk3 — удаление диска горячей замены из пула
zpool offline zfspool /disk1 — отключить устройство, на него не будет чтения/записи, если добавить ключ -t, то после ребута станет онлайн
zpool online zfspool /disk1 — включить disk1
zpool replace zfspool /disk1 /disk3 — заменить disk 1, на disk3
zpool upgrade -v — увидеть версию, и фичи текущего ZFS, -a обновит все пулы до новейшей версии

Создание и свойства ФС
zfs create zfspool/data — создать ФС data
zfs create zfspool/backups создать ФС backups, обе ФС будут бесконтрольно расти, пока не выставлены квоты
zfs destroy -fr zfspool/backups/old — уничтожит ФС old, ключ -r — рекурсивно, если внутри ещё несколько ФС, -f — форсить
zfs set reservation=1G zfspool/data — зарезервировать 1 Гигабайт, который ФС гарантированно получит, а другие не займут
zfs list -o quota zfspool/backups — выяснить квоту в пуле на ФС backups
zfs set quota=1G zfspool/backups — установить квоту в 1 Гигабайт на ФС backups
zfs list -o compression — проверить включена компрессия или нет
zfs set compression=on zfspool/backups — включить компрессию на ФС backups в пуле zfspool
zfs set sharesmb=on zfspool/backups
 — расшарить по SMB ФС backups средствами ZFS
zfs set sharenfs=on zfspool/backups — расшарить по NFS ФС backups средствами ZFS

Монтирование
zfs mount — показать все примонтированные ФС
zfs mount zfspool/backups — примонтировать backups
zfs umount zfspool/backups — размонтировать ФС backups
zfs mount -a — смонтировать все ФС
zfs umount -a Umount — размонтировать все ФС

Снапшоты
zfs list -t snapshot — отобразить все снапшоты
zfs list -o space — сколько занимают места снапшоты
zfs snapshot zfspool/backups@test — создать снапшот ФС backups с названием test
zfs rollback zfspool/backups@test — вернуться к снапшоту backups с названием test, с ключом -r рекурсивно уничтожит промежуточные снапшоты, с ключом -f форсит анмаунт и ремаунт
zfs destroy zfspool/backups@test — уничтожить снапшот backups с названием test
zfs send zfspool/backups@march2021 > /home/backups/march2021.bak — сделать локальный бекап снапшота march2021
zfs receive zfspool2/backups2 < /home/backups/march2021.bak — восстановить из локального снапшота ФС на другом пуле
zfs send zfspool/backups@march2021 | ssh COMP02 «zfs receive testpool/testfs» — отправить снапшот по SSH на хост COMP02
zfs clone zfspool/backups@march2021 /clones/backups — клонировать существующий снапшот
zfs destroy zfspool/backups@march2021 — уничтожить клон

👉 DevOps Portal

DevOps Portal | Linux

17 Oct, 15:36


Справочник сисадмина. Все, что нужно, под рукой

Автор:
Левицкий Н.Д., Матвеев М.Д.
Год:
2024

📂 Скачать книгу

👉 DevOps Portal | #книги

DevOps Portal | Linux

17 Oct, 13:44


⚡️ Интересная коллекция приёмов по bash-у

Цель этого материала — задокументировать методы выполнения различных задач с использованием только встроенных функций bash.

Использование фрагментов из этой библии может помочь удалить ненужные зависимости из скриптов и в большинстве случаев ускорить их выполнение

👉 DevOps Portal | #ресурсы

DevOps Portal | Linux

15 Oct, 09:25


GoReplay

Это опенсорсный инструмент мониторинга сети, который может записывать ваш трафик в реальном времени и использовать его для отслеживания, нагрузочного тестирования, мониторинга и детального анализа.

Установка

Загрузите последнюю версию бинарника и соберите

Как оно работает

Самый простейший вариант: sudo ./gor --input-raw :8000 --output-stdout который действует как tcpdump. Если у вас уже есть тестовая среда, вы можете сделать так: sudo ./gor --input-raw :8000 --output-http http://staging.env

Дополнительная информация: FAQ, Troubleshooting, Issues

👉 DevOps Portal | #ресурсы

DevOps Portal | Linux

15 Oct, 06:38


💡 Права доступа к файлам: пользователям Linux на заметку

👉 DevOps Portal

DevOps Portal | Linux

14 Oct, 13:21


Рассмотрим ситуацию, когда случайно/специально 😱 удалился исполняющийся bash скрипт.

Чтобы не попадать в такие ситуации, всегда храните исходники в git — это избыточно, но бекапы никто не отменял.

Скрипт удалён с диска, но продолжает работать в фоне, значит его можно как-нибудь восстановить.

Создадим подопытный скрипт: touch /tmp/script.sh:

#!/bin/bash
sleep 1000
exit

Делаем исполняемым chmod +x /tmp/script.sh и запускаем в фоне /tmp/script.sh &

Символ & может служить разделителем между командами command & command, две команды выполнятся параллельно.

Скрипт запустили, он крутится в фоне. Удалим сам файл:

rm -f /tmp/script.sh ключ -f удалит без лишних вопросов.

Восстанавливаем:

lsof -c 'script.sh'

На экран выведется простыня, нам нужна строка где в конце указан путь до скрипта, который был удален:

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
script.sh 261899 root 255r REG 8,1 51 130773 /tmp/script.sh

Берем PID = 261899, берем FD = 255 и делаем так:

cat /proc/261899/fd/255

А вот и исходник скрипта:

File: /proc/261899/fd/255
#!/bin/bash
sleep 1000
exit

Вот полезная инфа, которая была использована в гайде:
man 5 proc # /proc/[pid]/fd/
man lsof

👉 DevOps Portal

DevOps Portal | Linux

13 Oct, 17:46


⚡️ Вот полезные шпаргалки, которые часто нужны, но не всегда удаётся сразу вспомнить

👉 DevOps Portal | #ресурсы