cookie

We use cookies to improve your browsing experience. By clicking «Accept all», you agree to the use of cookies.

avatar

ServerAdmin.ru

Авторская информация о системном администрировании. Информация о рекламе: @srv_admin_reklama_bot Автор: @zeroxzed Второй канал: @srv_admin_live Сайт: serveradmin.ru

Show more
Advertising posts
25 821
Subscribers
+1224 hours
+597 days
+37030 days

Data loading in progress...

Subscriber growth rate

Data loading in progress...

​​Прошлая заметка про комбинацию в терминале Alt+Shift+3 получила какой-то невероятный отклик в виде лайков, хотя не делает чего-то особенного. Не ожидал такой реакции. Раз это так востребовано, расскажу ещё про одну комбинацию клавиш в bash, про которую наверняка многие не знают, но она куда более полезная на практике по сравнению с упомянутой выше. Для тех, кто часто работает в bash, наверняка будет знакома история, когда вы что-то запустили в терминале и постоянно появляются новые строки. Вы хотите прочитать что-то, что уже ушло вверх с экрана, но из-за того, что постоянно появляются новые строки, терминал неизменно проматывается в самый низ. Бесячая ситуация, когда несколько раз пытаешься промотать вверх и не получается. Такое возникает, например, когда ты смотришь логи в режиме реального времени: # tail -f /var/log/nginx/access.log C tail ситуация вымышленная, просто для демонстрации того, о чём идёт речь. Нет никакой проблемы прервать tail, прекратить появление новых строк, чтобы можно было спокойно промотать терминал. Более реальная ситуация, когда ты запустил Docker контейнер не в режиме демона, он сыпет своими логами в терминал, где-то проскочила ошибка, ты хочешь к ней вернуться, скролишь, но ничего не получается, потому что появляются новые строки. А прервать выполнение ты не можешь, контейнер прекратит свою работу, если его остановить. И тут тебе поможет комбинация Ctrl + s. Она поставит вывод в терминал на паузу. Новые строки не будут появляться, а ты спокойно сможешь проскролить экран до ошибки и прочитать её. Когда закончишь, нажмёшь Ctrl + q, и терминал продолжит работу в обычном режиме. То же самое происходит, когда в терминале собирает Dockerfile, запускается большой docker-compose и т.д. Невозможно проскролить терминал наверх, пока процесс не завершится. Но если сделать Ctrl + s, то всё получится. Это прям реальная тема. Я, когда узнал, очень обрадовался знанию. Сразу как-то проникся, потому что закрыл реальную проблему, которая раздражала время от времени. #bash
Show all...

👍 112👎 2
5 июня в Москве пройдет БеКон - вторая конференция по безопасности контейнеров и контейнерных сред В преддверии этого самое время посмотреть записи первой конференции: ▪️Kubernetes, ответь мне - кто я для тебя? ▪️Не такой очевидный RBAC Kubernetes ▪️Как приручить Linux capabilities в Kubernetes ▪️Контейнерная ОС Flatcar: как обмазаться докерами и забыть про пакеты ▪️Как правильно готовить Kyverno и работать с его алертами ▪️ОС Talos Linux — путь к «тому самому» харденингу инфраструктуры для k8s ▪️AppArmor и Kubernetes: проактивная защита для безопасности приложений БеКон 2024 - крутая возможность перенять опыт и лучшие практики лидеров рынка. Ознакомиться с программой и приобрести билеты на "БеКон 2024" можно по ссылке Реклама, ООО КлаудРан, ИНН 7804685734.
Show all...
👎 8👍 7
Ранее я делал шпаргалку по mtime, ctime, atime и crtime. Кто иногда путается в этих характеристиках, как я, рекомендую почитать и сохранить. Я там постарался кратко рассказать о них, чтобы не ошибаться на практике. Хотя путаться всё равно не перестал. Расскажу недавнюю историю. Надо было периодически чистить корзину от Samba. Сама шара регулярно бэкапится, так что большого смысла в корзине нет. Сделал её больше для себя, чтобы если что, можно было быстро локально восстановить случайно удалённые файлы, а не тянуть с бэкапа. Засунул в крон простую команду по очистке: /usr/bin/find /mnt/shara/.trash/ -type d -mtime +7 -exec rm -rf {} \; Тип - каталог, указал, потому что если удалять только файлы, остаются пустые каталоги. Решил удалять сразу их. Плюс, там есть ещё такой момент с файлами, что они прилетают в корзину с исходным mtime, с которым они лежали на шаре. То есть файл может быть удалён сегодня, но mtime у него будет годовалой давности. Так тоже не подходит. С каталогами более подходящий вариант. Там скорее лишнее будет оставаться слишком долго, нежели свежее будет удаляться. В какой-то момент был удалён сам каталог .trash/. Я, не вникая в суть проблемы, на автомате решил, что достаточно в корне этого каталога раз в сутки обновлять какой-нибудь файл, чтобы mtime каталога обновлялся, и скрипт его не удалял. Добавил перед удалением обновление одного и того же файла через touch: /usr/bin/touch /mnt/shara/.trash/timestamp Через некоторое время каталог .trash/ опять был удалён. Тут уже решил разобраться. Оказалось, обновление mtime файла внутри каталога недостаточно, чтобы обновился mtime самого каталога. Нужно, чтобы был удалён или добавлен какой-то файл. То есть надо файл timestamp удалить и добавить снова. Тогда mtime каталога обновится. В итоге сделал так: /usr/bin/rm /mnt/shara/.trash/timestamp /usr/bin/touch /mnt/shara/.trash/timestamp /usr/bin/find /mnt/shara/.trash/ -type d -mtime +7 -exec rm -rf {} \; Надеюсь теперь всё будет работать так, как задумано. Такой вот небольшой нюанс, о котором я ранее не знал. Изменения mtime файла внутри каталога недостаточно для изменения mtime каталога, в котором находится этот файл. Необходимо добавить, удалить или переименовать файл или каталог внутри родительского каталога. Если я правильно понимаю, то так происходит, потому что каталог это по сути набор информации о всех директориях и файлах внутри. Информация эта состоит из имени и номера inode. Когда я через touch дёргаю файл, его номер inode не меняется. Поэтому и родительский каталог остаётся неизменным. А если файл удалить и создать снова, даже точно такой же, то его номер inode поменяется, поэтому и mtime каталога изменяется. Век живи - век учись. С такими вещами пока не столкнёшься, не познакомишься. Просто так со всем этим разбираться вряд ли захочется. Я вроде всю теорию по файлам, директориям и айнодам когда-то изучал, но уже всё забыл. Теория без практики мертва. #linux
Show all...
👍 65👎 3
​​Предлагаю попробовать и забрать в закладки сервис по проверке DNS записей: ⇨ https://zonemaster.net Я даже и не знал, что существует столько параметров, по которым можно проверить домен. Сервис полностью бесплатен, исходный код открыт. Можно развернуть у себя и делать проверки через JSON-RPC API. Для полноценной работы нужно будет поднять Zonemaster-CLI (есть собранный Docker контейнер), Zonemaster-Backend (отвечает за API), Zonemaster-GUI (веб интерфейс). Инструкции все здесь. Домен проверяется по 50-ти проверкам. Для теста прогнал свой домен serveradmin.ru. Набралось приличное количество ошибок и замечаний. Все они прокомментированы, так что в целом понятно, о чём там речь. Особо критичного ничего нет, а некоторые замечания относятся к DNS хостингу, на который я повлиять не могу. В качестве DNS серверов для домена у меня указаны сервера Selectel и Yandex. Пример замечаний: ◽NS сервера Selectel не имеют PTR записей. Дублирующие их сервера Яндекса имеют. Странно, что в Selectel на это забили. ◽Разные номера SOA записей у DNS серверов. Так как я использую двух разных провайдеров, это нормально. Они должны совпадать в рамках одного провайдера. 🔥Здесь реальная ошибка нашлась. В какой-то момент NS сервера Selectel изменили свои доменные имена. И я забыл их обновить в записях Yandex. В итоге зона в Yandex имела NS сервера ns1.selectel.org и ns2.selectel.org вместо актуальных ns1.selectel.ru и ns2.selectel.ru. ◽Ещё одна небольшая ошибка была. Различались TTL у MX записей у разных провайдеров. Поправил. Параметры должны везде быть идентичными для одних и тех же записей. В общем, сервис полезный. Рекомендую взять на вооружение и проверять свои домены. Особенно если зоны держат разные серверы и провайдеры, а записей много. ⇨ Сайт / Исходники #dns #сервис
Show all...

👍 82👎 1
Представления архитектуры — что это и как с ними работать? Навыки работы с архитектурой увеличивают ценность любого IT-специалиста. Самое время погрузиться в тему подробнее — приходите на открытый практический урок от OTUS, где опытный эксперт разберет: - метод ADR/ADL; - артефакты архитектуры; - варианты представления архитектуры; - несколько интересных кейсов.  🗓 Встречаемся 30 мая в 20:00 мск в преддверии старта курса «Microservice Architecture». Все участники вебинара получат специальную цену на обучение и консультацию от менеджеров OTUS!  👉 Ссылка для регистрации: https://clck.ru/3AcKSZ Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Show all...
👍 8👎 5
Бесплатный вебинар «Представления архитектуры»
​​Для управления Linux сервером через браузер существуют два наиболее популярных решения: ▪️ webmin ▪️ cockpit Webmin очень старый продукт, написанный на Perl. Он же наиболее функциональный. Развивается до сих пор. Удивительный долгожитель. Сколько работаю с Linux, столько его знаю. Под него существует большое количество плагинов. Вся базовая функциональность сервера им покрывается: файрвол, samba, postfix и dovecot, dns и dhcp, логи, обновления и т.д. Я знал админов, которые успешно управлялись с сервером только через вебмин, не умея и не работая в консоли вообще. Удивился, когда не нашёл на своём канале отдельной заметки про эту панель. Неплохо её знаю, доводилось работать, хотя на свои сервера не устанавливал. Cockpit более молодой проект, который принадлежит Red Hat. Ими же и развивается. Он более компактный и целостный, возможностей поменьше, чем у Webmin, но лично я бы для базовых задач отдал ему предпочтение. Но только если вам хватает его возможностей. В cockpit удобный просмотр логов, установка обновлений, выполнение базовых настроек системы — переименовать, настроить сеть, посмотреть автозагрузку, остановить или запустить какую-то службу, посмотреть таймеры systemd, отредактировать пользователя и т.д. Можно поставить и отдать сервер в управление кому-то далёкому от консоли человеку. Он сможет решать какие-то простые задачи, типа установки обновлений и настройки пользователей. Сегодня хочу немного расширить эту тему и познакомить вас с ещё одной панелью управления сервером - Ajenti. Сразу скажу, что это проект намного меньше и проще описанных выше, но у него есть некоторые свои полезные особенности. Базовые возможности там примерно такие же, как у Cockpit без модулей. Функциональность расширяется плагинами, которые устанавливаются через веб интерфейс. Я развернул на тестовом сервере Ajenti и внимательно посмотрел на неё. Отметил следующие полезные возможности: ◽двухфакторная аутентификация через TOTP; ◽аутентификация по сертификатам; 🔥настраиваемые дашборды с табами и виджетами, куда можно добавить запуск служб или выполнение каких-то скриптов; ◽удобный файловый менеджер; ◽есть русский язык; ◽адаптивный интерфейс, работает и на смартфонах. Устанавливается панель просто. Есть инструкция, где описан автоматический и ручной способ установки. Панель написана на Python, так что установка через pip. Есть простой скрипт, который автоматизирует её в зависимости от используемого дистрибутива: # curl https://raw.githubusercontent.com/ajenti/ajenti/master/scripts/install-venv.sh | bash -s - Скрипт определяет дистрибутив, устанавливает необходимые пакеты и панель через pip, создаёт systemd службу. Далее можно идти по IP адресу сервера на порт 8000 и логиниться под root в панель. Сразу имеет смысл сгенерировать самоподписанный TLS сертификат, включить принудительную работу по HTTPS. Всё это в админке делается. #linux
Show all...

👍 89👎 4
​​Я практически с самого появления проекта WSL (Windows Subsystem for Linux) на Windows стал им пользоваться. Настроек у него особо никаких нет. Просто ставишь из магазина и всё сразу работает. Используется виртуальный сетевой интерфейс, виртуальный роутер и dhcp сервер. Настроек у всего этого хозяйства нет. IP адреса системы в WSL получают постоянно динамические. У меня это особо не вызывало проблем, потому что как сервер WSL не использую, и с основной системы обращаться туда нет необходимости. Но в какой-то момент всё равно надоело это и захотелось получить статический IP. На деле это оказалось не так просто. Каких-то инструментов или настроек для этого не существует. По крайней мере я сходу не нашёл. Правда и не сильно искал. Решил вопрос в лоб и давно уже его использую. Добавил дополнительный IP адрес к виртуальному сетевому интерфейсу в основную систему и в систему WSL. Выглядит это следующим образом для основной системы: > netsh interface ip add address "vEthernet (WSL)" 192.168.99.1 255.255.255.0 и для WSL (Ubuntu): # ip addr add 192.168.99.2/24 broadcast 192.168.99.255 dev eth0 label eth0:1 Причём вторую команду не обязательно запускать в WSL. Можно выполнить и с хоста: > wsl.exe -u root ip addr add 192.168.99.2/24 broadcast 192.168.99.255 dev eth0 label eth0:1; В итоге, достаточно сделать простенький bat файл, добавить его в стандартный планировщик Windows и запускать при старте системы или при логоне вашего пользователя. Я сделал такой батник. Добавил небольшую задержу при запуске, потому что без неё иногда команды не отрабатывали. Судя по всему ещё не успевают подняться какие-то службы, необходимые для изменения настроек. @echo on TIMEOUT /T 5 wsl.exe -u root ip addr add 192.168.99.2/24 broadcast 192.168.99.255 dev eth0 label eth0:1; netsh interface ip add address "vEthernet (WSL)" 192.168.99.1 255.255.255.0 Если кто-то знает, как эту задачу решить более красиво и грамотно, поделитесь информацией. Я сделал как обычно в лоб. Решение заработало, поэтому на нём и остался. Основная машина и система в WSL видят друг друга по соответствующим адресам: 192.168.99.1 и 192.168.99.2. #windows #wsl
Show all...

👍 77👎 1
Научитесь эффективно управлять контейнерами в Docker  Приходите на практический открытый урок для DevOps и разработчиков от OTUS. На вебинаре вы: - познакомитесь с основными концепциями Docker; - научитесь создавать, запускать и останавливать контейнеры, а также управлять ими; - получите базовые знания, которые помогут вам начать работу с Docker и использовать его для автоматизации процессов разработки и развёртывания приложений. 📅 Встречаемся 15 мая в 20:00 мск в рамках курса «DevOps практики и инструменты». Зарегистрируйтесь, чтобы посетить бесплатный урок: https://clck.ru/3Aai2d Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Show all...
👍 9👎 9
Технология контейнеризации. Введение в Docker
​​После праздников надо потихоньку вкатываться в трудовые будни. Чтобы это было проще сделать, можно подключить AI, коих сейчас развелось много на любой вкус. Самый популярный - ChatGPT от OpenAI. Чтобы им пользоваться, нужен VPN и иностранный номер телефона для регистрации и получения токена. Либо какой-то местный сервис, который перепродаёт доступ к OpenAI и другим платным нейросетям. Есть возможность развернуть открытую нейросеть Ollama с какой-то популярной моделью на своём железе. Решил попробовать эту тему, так как вообще никогда с этим не сталкивался. Было интересно посмотреть, как это работает. Моделей для нейросетей существует много. Мне было интересно попробовать помощника по консольным командам Linux. Чтобы понять, какая модель лучше для этого подойдёт, посмотрел описание проекта ShellGPT. Он изначально заточен под работу с OpenAI, но как альтернативу даёт возможность использовать локальную Ollama с моделью Mistral. По их мнению она лучше всего подходит для консольных задач. Разворачиваю Ollama c Mistral на Linux: # curl https://ollama.ai/install.sh | sh # ollama pull mistral:7b-instruct Далее вы можете работать с ollama напрямую через консоль, задавая там вопросы: # ollama run mistral либо через API: # curl -X POST http://localhost:11434/api/generate -d '{ "model": "mistral", "prompt":"Here is a story about llamas eating grass" }' А можно сразу настроить shell-gpt. Устанавливаем его: # apt install python3-pip # pip3 install shell-gpt[litellm] Задаём первый вопрос: # sgpt --model ollama/mistral:7b-instruct "Who are you?" Изначально shell-gpt заточен на работу с OpenAI, поэтому попросит ввести токен. Можно ввести любую строку, главное не оставлять её пустой. Получите ошибку. После этого открываете конфиг ~/.config/shell_gpt/.sgptrc и меняете некоторые параметры: DEFAULT_MODEL=ollama/mistral:7b-instruct OPENAI_USE_FUNCTIONS=false USE_LITELLM=true Остальное можно не трогать. Для комфортной работы с нейросетью требуется современная видеокарта. У меня такой нет, поэтому я тестировал работу на CPU. Для этого выделил отдельный старый компьютер на базе четырёхядерного Intel Core i5-2500K 3.30GHz. Сетка работает крайне медленно. На вопрос: # sgpt --model ollama/mistral:7b-instruct "Who are you?" Она отвечала минут 40-50 и выдала такой ответ: I'm ShellGPT, your Linux/Debian GNU/Linux 12 (Bookworm) programming and system administration assistant using a Bash shell. I'm here to help     answer questions, provide guidance on commands, and assist with various tasks related to managing your Debian system. Let me know how I can be of  service! В таком режиме её использовать невозможно. Решил попробовать на другом компе, где есть хоть и старая, но видюха NVIDIA GeForce GTX 560 Ti с 2G ОЗУ. Но толку от неё не было, так как слишком старая, нет нужных инструкций. Тем не менее, там было больше оперативы, дела пошли пошустрее. Сетка на вопрос: start nginx docker container Ответила подробно и осмысленно минут за 15. Ответ не привожу, он очень длинный. Решил пойти дальше и попробовать её на свободном стареньком серваке с двумя XEON E5 2643 V4. Дал виртуалке все 24 потока и 24G ОЗУ. Дело ещё бодрее пошло. Уже можно нормально пользоваться, практически в режиме реального времени стал отвечать. Время ответа напрямую зависит от длины текста запроса. Вообще, раньше не думал, что со своими нейронками можно побаловаться на обычном железе. Причём она в целом нормально отвечала. На все мои простые вопросы по консольным командам ответила адекватно. Результаты были рабочими, хоть и не всегда оптимальными. Пример вопроса: # sgpt -s "start nginx web server in docker" ```bash sudo systemctl start docker sudo docker pull nginx:latest sudo docker run -d --name mynginx -p 80:80 nginx:latest ``` Если не хочется вспоминать команды и ходить в google, вполне рабочая альтернатива. Оставил на серваке Ollama, буду тестировать дальше. #AI #chatgpt
Show all...

👍 102👎 6
Открытый практикум Linux by Rebrain: mdadm: восстановление RAID 5 Успевайте зарегистрироваться. Количество мест строго ограничено! Запись практикума “DevOps by Rebrain” в подарок за регистрацию! 👉Регистрация Время проведения: 15 Мая (Среда) в 20:00 по МСК Программа практикума: 🔹Как не стоит создавать RAID-массивы 🔹Инструменты для снятия дампа с поврежденного диска 🔹Необходимые знания для успешного восстановления RAID 5 🔹Мои ошибки при восстановлении RAID-массива Кто ведёт? Андрей Буранов – Системный администратор в департаменте VK Play. 10+ лет опыта работы с ОС Linux. 8+ лет опыта преподавания. Входит в топ 3 лучших преподавателей образовательных порталов. Бесплатные практикумы по DevOps, Linux, Networks и Golang от REBRAIN каждую неделю. Подключайтесь! Реклама. ООО "РЕБРЕИН". ИНН 7727409582 erid: 2VtzqvS4wkM
Show all...
👍 18👎 8
mdadm: восстановление RAID 5