DevOps Portal | Linux
13.4K subscribers
867 photos
112 videos
10 files
881 links
Присоединяйтесь к нашему каналу и погрузитесь в мир DevOps

Связь: @devmangx

РКН: https://clck.ru/3P8kFH
Download Telegram
Правительство России обязало устанавливать RuStore на все смартфоны, даже если существует прямой запрет от правообладателей мобильной операционной системы.

Помогут ли эти меры распространению отечественных магазинов приложений?
Anonymous Poll
58%
Да
42%
Нет
🤔1
Утро! Пусть ваш код компилируется с первой попытки, а серверы отвечают мгновенно. Пусть этот день будет стабильным, как дистрибутив Linux, продуктивным, как команда терминала, и защищенным, как хорошо настроенный файрвол. И помните, в случае сомнений — RTFM! Удачного дня! 🌅🐧🚀
👍1
Уникальная возможность потыкать сайт проекта 🌐 😁

В рамках тестирования того, что наваял запустил вчера сайт уже на сервере. Пока еще сайт доступен и открывается по адресу https://linuxzone.ru/.

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

Еще раз оставляю адрес сайта, чтобы можно было перейти и попробовать его в действии: https://linuxzone.ru/

P. S. Сервер остановлю в обеденное время, во второй половине дня и может включу уже после того, как отработаю и приступлю к дальнейшей настройке.
👍5
🖥 Двойные тире в командах Linux 🐧

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

ssh root@linuxzone.ru --

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

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

У меня есть такая команда:

ssh root@linuzone.ru -- 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

Если материал оказался полезным и интересным, то поставьте лайк. Если остались вопросы, то напиши их в комментариях 💬
👍7
🔥 Спешим поделиться свежими новостями: вчера свет увидело долгожданное ядро версии 6.5! 🎉 А у нас тут дополнительно запускается новый интерактив "Покажи своё ядро". 🚀

Не теряй времени! Бросай в комментариях свой выхлоп команды uname -a. Давай вместе выясним, кто уже на вершине обновлений, а кто еще верно идет по пути стабильности. 🌊🐧🔍
👍2
🌄 Доброго утра, уважаемые любители терминала и мастера командной строки! Пусть ваш день начнется с такой же легкости, как выполнение ls в вашей любимой директории. Пусть каждая задача решается так же эффективно, как оптимизация кода. И не забудьте зарядиться кофеином, чтобы ваш мозг работал на скорости 1000 МГц! ☕️🖥 #ДоброеУтроВМиреЛинукса
👍3
📋 Три команды для работы с логами в Linux, которые я использую чаще всего 🐧

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

🗂 Места хранения логов в Linux

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

/var/log/...

Внутри нее могут располагаться как отдельные файлы-логи (имеющие расширение log), так и директории с названиями сервисов внутри которых находятся логи. Есть, естественно, исключения. Например, Docker. У него логи запущенных контейнеров находятся в другом месте:

/var/lib/docker/containers/<id_контейнера>/<id_контейнера>-json.log

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

📊 Какие виды логов бывают?

Расскажу, опять-таки, про классическую схему того, какие логи бывают.

access.log - содержат данные о доступе к серверу/ресурсу/приложению (например, успешные авторизации)

error.log - содержат данные об ошибках, возникающих при работе с серверами/ресурсами/приложениями.

🔤 <имя_сервиса>.log - содержат данные обо всех взаимодействиях с сервисом (доступ, ошибки, информация и пр.)

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

1️⃣ Команда cat для просмотра содержимого лога

При использовании этой команды в терминал будет выведено все содержимое лога:

cat /var/log/<имя_лога>.log

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

2️⃣ Команда tail -f для вывода содержимого лога в режиме реального времени

Напомню, что команда tail выводит по-умолчанию 10 последних строк содержимого файла. Но при использовании ключа -f в выхлоп будут попадать строки лога в режиме реального времени.

tail -f /var/log/<имя_лога>.log

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

3️⃣ Команда echo -n > для зануления логов

Бывает так, что логи разрастаются до неимоверных размеров. Решается это настройкой так называемой ротации (про нее расскажу отдельно в следующий раз), но если лог разросся до размеров, которые нужно занулить здесь и сейчас, то указанная команда подойдет в самый раз:

echo -n > /var/log/<имя_лога>.log

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

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

Поддержите пост лайком, если он оказался полезным. Если возникли вопросы, то задавайте их в комментариях 💬
👍6
🐧 Давайте окунемся в удивительный мир Linux и заглянем в зеркало командных строк! Встречайте пять пар команд, которые отображают друг друга:

1. cat 🐱 и tac 🐾

Перепутали кота с обратным котом? cat показывает содержимое файла слева направо, а tac делает это наоборот!

2. sort 🧮 и rev 🔄

Порядок имеет значение! sort сортирует строки в алфавитном порядке, а rev разворачивает строки задом наперёд.

3. head 🚀 и tail 🐾

Не уходите сразу! head выводит начало файла, а tail – его конец. Оба взгляда имеют право на жизнь!

4. cut ✂️ и paste 📎

Как в жизни, так и в Linux, можно что-то отрезать и вставить. cut вырезает поля из строк, а paste соединяет их обратно.

5. ls 📂 и echo 🗣

Список файлов или просто эхо ваших мыслей? ls выводит содержимое директории, а echo просто отдаёт то, что ему сказали.

Уверены, эти пары команд покажут вам, что в мире Linux всегда есть место для интересных и неожиданных взаимосвязей! 🚀🔍 #LinuxМагия
👍7
Пусть день будет таким же крутым, как самый мощный сервер. Пусть ошибки уходят в /dev/null, а идеи приходят как коммиты. Доброго утра и ковыряния в коде!" 🌄💾🚀
👍5
This media is not supported in your browser
VIEW IN TELEGRAM
Обратная связь от аудитории во время непродолжительной демонстрации дев-версии сайта позволила добавить новый и обновить старый функционал. Подписи к видео в телеграмме не могут быть длинными, поэтому подробности вы можете узнать на канале в Дзене, где я расписал что и как изменил. Здесь же прикрепляю небольшую демонстрацию.
👍2
Какой командой в Linux можно создать пустой файл?
Anonymous Quiz
72%
touch
5%
create
9%
newfile
14%
makefile
Поворачиваем календарь, включаем режим продуктивности и начинаем этот день с энтузиазма! Доброго утра, Линукс-сообщество! 🐧💻🌞 #Linux #3сентября
👍3
Микросервис или монолит: выбираем архитектуру при разработке приложения 💻

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

🧱 Монолитная архитектура 🧱

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

Примерами таких сервисов/приложений являются, например, StackOverflow, Slack, Booking, GitHub.

⚙️ Микросервисная (распределенная) архитектура ⚙️

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

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

Может ли быть что-то посередине?

Многие разработчики начинают с монолитной архитектуры, но со временем решают перейти к микросервисам. Например, разработчики национальной платежной системы "МИР" начинали с монолита, но сейчас, из-за активного роста спроса на услуги и числа клиентов, часть функционала переводят в микросервисы. Поэтому, большие и сложные сервисы/приложения используют оба подхода, тщательно балансируя между ними не в ущерб стабильности работы.

🏁 Последний и очень близкий пример 🏁

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

Естественно, у каждой архитектуры есть свои преимущества и недостатки, но описывать их в рамках этой ознакомительной заметки, думаю, не стоит. Главная ее цель - объяснить ключевую разницу между этими подходами к разработке.
👍2
🇷🇺 Перекличка регионов нашей необъятной Родины 🇷🇺

Напишите в комментариях из какого вы региона, посмотрим каково распределение на более чем сотню подписчиков 💬
👍1
Доброе утро, любители Linux и ценители IT! 🌄💻

Сегодня - день для того, чтобы взглянуть на мир IT с новой стороны. 🌐🔍

Предлагаю задуматься: что бы вы изменили в мире Linux, если бы у вас была магическая клавиатура? 🪄🔑

Давайте делиться своими идеями и фантазиями в комментариях! Возможно, кто-то из нас сможет сделать это реальностью. 😉💡 #Linux #IT #МагияКода
👍1
🚀 Статусы выхода в BASH: понимание и практическое применение 🧐

Сегодня мы поговорим о статусах выхода в BASH - мощном инструменте для обработки ошибок и контроля выполнения команд и скриптов.

Что такое статус выхода?

Каждая программа в мире Linux возвращает целое число от 0 до 255 как результат своей работы. Это число называется статусом выхода, и оно говорит о том, завершилась ли программа успешно (когда статус 0) или произошла ошибка (все остальные значения).

Примеры статусов выхода:

- 0: Успешное завершение команды/программы.
- 126: Команда/программа найдена, но не является исполняемой (например, "Permission denied").
- 127: Программа не найдена ни в одном из путей $PATH или отсутствует в системе.

Как отследить статус выхода?

В bash есть специальная переменная "$?", которая хранит статус выхода последней выполненной команды. Например:

# date
# echo $?
0

Здесь статус выхода 0, что означает успешное завершение команды "date". Теперь давайте попробуем что-то несуществующее:

# non_existent_command
# echo $?
127

Как видите, код выхода 127 говорит о том, что команда не была найдена.

Применение статусов выхода:

Статусы выхода позволяют нам строить гибкую логику в скриптах и обрабатывать ошибки. Вот пример:

#!/bin/bash

date
code=$?

if test $code -eq 0
then
echo "Успешно"
else
echo "Ошибка"
fi

Этот скрипт выводит "Успешно", если команда "date" завершилась успешно, и "Ошибка" в противном случае.

Пользовательские статусы выхода:

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

#!/bin/bash

date
exit 1
echo "Этот текст не будет выведен"

Здесь "exit 1" прерывает выполнение скрипта с кодом выхода 1.

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

Надеюсь, этот пост поможет вам лучше понять статусы выхода в bash и использовать их в своей работе! 🔍💡 #Linux #Bash #СтатусыВыхода
👍3
🖥 Необходимость в единой среде для работы 🔨

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

🤷‍♂️ Все вроде бы одинаковое, но такое разное 🤷‍♂️

Вот есть у меня работа: на ней большая часть клиентских устройств это либо Debian, либо CentOS. Вот есть у меня пет-проекты, которые запускаться будут на серверах, где либо Debian, либо CentOS, либо Ubuntu. Вот есть сайт проекта, который размещен на сервере с Debian 11. Но при этом у меня на домашней машине установлен Archlinux (либо Manjaro), который, во-первых, мало где используется как дистрибутив для серверов, во-вторых, ВООБЩЕ нигде не используется в плане работы и хобби. И вот когда тесно-тесно так соприкасаешься с той же разработкой сайта на Django, работаешь с базами данных, сервером Redis и пр., то понимаешь то, насколько неудобно иметь различные дистрибутивы на домашнем и условно "рабочем" устройстве. Поэтому...

👨‍🦳Здравствуй, дедушка 👨‍🦳

Несмотря на свою невообразимую любовь к Archlinux и дистрибутивам на его основе (в частности Manjaro), решил что переберусь на Debian 12 Bookworm, чтобы быть в одном, так сказать, русле с тем, что меня окружает в плане работы и хобби. Ну, и в принципе, пишу этот пост как-раз таки с настроенной версии этого дистрибутива. Испытываю ли я на данный момент какие-то неудобства в плане взаимодействия с Debian? Совсем нет! Настроил дистр также быстро, как это делаю всегда, накатил нужный софт, подтянул нужные конфиги.

🤔 Может быть это не навсегда? 🧐

Опять-таки говорить о том, что со вчерашнего дня Debian является основным дистрибутивом нельзя. Может быть к концу недели я снесу его и вернусь на любимый Manjaro. Ну а может полюблю Linux-дедушку всем сердцем еще больше, чем Archlinux и останусь на нем до конца дней своих. Неизменным осталась только среда рабочего окружения - KDE Plasma, благо, что на 12-ой версии Debian она 5.27, то есть привычная и самая лучшая.

Получаемый опыт использования различных дистрибутивов наводит на мысли о том, что сам дистрибутив мало влияет на ощущения пользователя, большее значение играет именно окружение рабочего стола. Но эту мысль надо обдумать и развернуть как-нибудь в другом посте 🧑‍💻
👍5
Доброе утро, Линукс-гуру! 🌄

Пусть этот день будет столь надежным, как systemd, и настолько продуктивным, как скрипт с бесконечным циклом! Отправляем вам терминальный привет и дозу Linux-вдохновения! 💻🚀 #Linux #ДоброеУтро
3👍1
📢 Генерация видео при помощи нейронной сети 🤖

Пользователи приложения Шедеврум могут создавать короткие видеоролики с помощью нейросети. Чтобы сделать это нужно просто ввести текстовый запрос, и нейронка сгенерирует 4-секундное видео с частотой 24 кадра в секунду. 🎥

Эти видеоролики могут быть использованы для музыкальных клипов, анимаций, динамических аватарок в социальных сетях и других креативных проектов. Результаты можно поделиться с друзьями или сохранить в формате MP4. Эта функция доступна только активным пользователям Шедеврума в его обновленной версии. Ваш покорный слуга к таким пользователям не относится, поэтому доступ к генерации видео мне никто не предоставил. Стоит также отметить, что Яндекс является первой отечественной компанией, которая внедрила в нейронную сеть возможность генерации видео.

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

Поднимаем бокал за инновации и технологии! 🚀 #Нейросети #ВидеоСоздание #Технологии
👍1
Media is too big
VIEW IN TELEGRAM
🎮 Хочу показать вам свою первую мобильную игру 🎮

До того, как стать пользователем Linux и перейти в системное администрирование и DevOps, я решил попробовать войти в IT со стороны разработки игр. Про десктопную версию своего проекта под названием Gedel Escape неоднократно упоминал в различных заметках на канале, а вот про то, что начинал с мобильной игры обычно не говорил.

Знакомьтесь, это Color Chips Remake. Первая (но по сути вторая) моя игра для мобильных устройств на Android. Решил выложить немного геймплея, а в последующих постах расскажу про то, как её делал и почему она имеет приставку Remake.
👍1