Обновить
415.14

Linux *

Пишем под *nix

Сначала показывать
Порог рейтинга
Уровень сложности

Готовим скрипт на Bash и упаковываем в AUR

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели13K

В статье я рассказываю, как из набора команд (free, df, ip, ps, uptime) собрать CLI‑утилиту на Bash, добавить аргументы, цветовую индикацию и упаковать всё в AUR как пакет system-monitor

Заглянуть под капот

Настройка Linux после установки: терминал, GNOME и расширения на примере Ubuntu

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели13K

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

Настроить свой Linux

Основы виртуальной памяти

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели8.9K

Задумывались ли вы о том, зачем компьютерам нужна оперативная память (ОП, RAM), когда у них уже есть дисковое хранилище (диск)? Ответ кроется в скорости доступа. Хотя диск является постоянным, он намного медленнее, чем ОП. ОП жертвует изменчивостью ради скорости - данные исчезают при выключении питания, но время доступа гораздо меньше. Как следствие, центральный процессор (ЦП, CPU) имеет доступ только к ОП, а не к диску.

ЦП имеют встроенные регистры, которые еще быстрее, чем ОП. Тогда зачем нам вообще ОП? Затем, что количество и размер регистров ограничены. Представьте функцию, которой нужно работать с тысячью переменных - все они не поместятся в регистры. Что если нам нужно хранить большие структуры данных, такие как массивы или объекты? У регистров нет емкости (capacity). Вот где в игру вступает ОП - она предоставляет пространство, необходимое для обработки больших и сложных данных.

Читать далее

Итоги года развития NoDPI — открытого инструмента для свободного интернета

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели116K

Салют, Хабр! Прошел ровно год с момента публикации моей первой статьи про загрузку видео с YouTube. Бонусом к статье шла небольшая утилита для... кхм... модификации сетевых пакетов. Это был небольшой скриптик на Python, форкнутый от theo0x0/nodpi. Я не делал на него совершенно никаких ставок, но в комментариях посыпались восторженные (нет) отзывы, обсуждения и просьбы выложить на GitHub. Через полгода, в мае, я опубликовал статью с презентацией NoDPI и подробными объяснениями, что, как и почему. Публикация зашла, попала в топы Хабра, аудитория на GitHub стала расти. Еще через месяц вышел NoDPI for Android - немного сыроватый и неудобный, но вполне работающий и справляющийся со своей задачей.

И вот на дворе конец 2025 года. За окном мороз, падает снег, а значит самое время подвести небольшие итоги...

Читать далее

Как настроить свой сервер Mumble для стабильных звонков без блокировок

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели14K

Как развернуть свой Mumble-сервер за 10 минут на VPS за 300 ₽/мес и забыть про блокировки Zoom/Meet. SSH-доступ, Docker с автогенерацией SuperUser-пароля, настройка Opus-кодека, каналов и бэкапов — до 50 пользователей без лагов и подписок. Идеально для семьи, команды или геймеров.

Читать далее

Внутри ядра Docker: что на самом деле происходит при запуске контейнера

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели18K

Когда вы вводите в командную строку docker run nginx — кажется, что произошло какое-то волшебство: за считанные секунды появляется полностью изолированная среда. Но здесь нет никакой магии, а просто инженерия ядра Linux. Давайте подробнее разберём эту тему подробнее и изучим, что именно происходит внутри ядра, когда Docker создаёт контейнер.

Читать далее

Как перенести Ghost CMS на vps с панелью FASTPANEL

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели7.2K

Появилась необходимость перенести уже установленный ghost cms на другой vps, на котором уже установлена FASTPANEL. Вдохновившись статьей "Установка Ghost на сервер под управлением ispmanager", я подумал, что это будет просто. На деле же оказалось несколько сложнее.

Конечно можно установить в docker контейнер и не париться с панелью. Но я решил остановиться на варианте без контейнеризации. В этой статье у меня был 1 чистый сервер на котором был установлен ghost cms без докера. Второй сервер уже в работе с установленной FASTPANEL.

Начнем пожалуй с бэкапов.

Читать далее

Запуск программ, требующих getrandom() и getentropy(), на ядрах Linux старше 3.17

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели14K

Всем привет! Потребовалось на старом ядре linux запустить несколько docker-контейнеров, требующих getrandom и/или getentropy. В ядрах Linux старше 3.17 нет этих системных вызовов. Решение применимо не только к docker, но и к запуску программ на старых ядрах вообще.

Читать далее

Перенос кластера kubernetes на другие ip адреса

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели9.7K

Предположим, вам необходимо мигрировать ваш кластер k8s в другой vlan или просто сменить ip адреса. Насколько это необходимо каждый решает сам. Будем считать, что перенос нагрузки ямлами на другой кластер затруднён или у кластера специфические настройки.

В качестве начальных условий: кластер on prem с root доступом на узлы, установлен через kubeadm или kubespray, в качестве cni calico. В нашем случае под ногами ubuntu в качестве системы. Если у вас кластер установлен the hard way , то статья вам не нужна, вы сами всё умеете.

Читать далее

Компиляторы, AI-ассистенты и вызов IOCTL: доклады о С++ и Linux вместо новогоднего кино

Время на прочтение3 мин
Охват и читатели7.9K

Представьте, что вам не нужно выбирать. Ни между красной и синей таблетками, ни между макарошками и пюрешкой, ни между светлой и темной сторонами. Вы можете взять лучшее от каждого предложения. Мы посмотрели все доклады System Level Meetup, выбрали самые интересные, собрали презентации и записи в одном месте. Для удобства разделили материал на треки , C++ и С/Linux Kernel, но смотреть можно все подряд.

Читать далее

История поиска бага в ядре Linux длиной в год, или нежданные нули из XFS'а

Уровень сложностиСложный
Время на прочтение11 мин
Охват и читатели18K

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

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

В этой статье описано наше исследование длиною в год,  из которого вы узнаете, почему PostgreSQL(и любое другое приложение) может падать из-за бага в ядре Linux, причём тут XFS и почему очистка памяти может быть не так полезна, как вы о ней думали.

Читать далее

Утечка, которой не было: как Next.js раздувает RAM в Kubernetes

Время на прочтение13 мин
Охват и читатели8.1K

Привет, Хабр! Меня зовут Вадим Королёв. Я руководитель команды разработки в X5 Tech. Очень люблю Next.js и решать проблемы, которые он приносит. С ним всегда происходит что-то интересное. Расскажу о причине утечки памяти в Node.js, которая оказалась глубже, чем можно было подумать.

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

В этот момент я занимался архитектурой и оптимизацией Node.js в музыкальном стриминге. Открыл графики и увидел явный рост памяти, который уходил в пик и приводил к перезапуску подов. Так началась «классическая предновогодняя история». Next.js в Kubernetes внезапно начал есть память так, будто у него внутри чёрная дыра.

Читать далее

FTP‑сервер на Linux: настройка для домашнего проекта

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели15K

Флешки постепенно уходят в прошлое, а облачные хранилища не всегда подходят для домашних проектов и экспериментов. Иногда хочется простого и предсказуемого способа обмена файлами — без подписок, лимитов и лишней инфраструктуры.

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

В этой статье вы найдёте пошаговый гайд по развёртыванию FTP-сервера на VPS UltraVDS под управлением Debian 12 с использованием vsftpd (Very Secure FTP Daemon).

Читать далее

Ближайшие события

Минимальный планировщик с eBPF, sched_ext и C

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели9.7K

Планировщик Linux долгое время оставался зоной, куда можно было заглянуть, но почти невозможно вмешаться без пересборки ядра. С появлением sched_ext эта граница сдвинулась: теперь логику планирования можно описывать кодом на C и загружать в ядро через eBPF. В статье разберём минимальный рабочий планировщик, посмотрим, как он взаимодействует с ядром, и обсудим, какие новые возможности это открывает для экспериментов и диагностики поведения системы под нагрузкой.

Вникнуть в ядро

Как работать за компьютером 12 часов в день и не превратиться в кролика

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели11K

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

Что общего у программистов и кроликов? Красные глаза. Только кроликам это идет, а нам — не очень.

Я программист, который проводит за экраном от 6 до 12 часов каждый день, а в особо "удачные" моменты - все 18. За годы такой жизни я пришёл к выводу: либо учишься защищать глаза, либо становишься похожим на героя фильма ужасов к 30 годам.

Эта статья будет полезна не только IT-специалистам, но и всем, кто работает за компьютером.

Читать далее

Индикация раскладки клавиатуры подсветкой — решение для GNOME

Уровень сложностиСредний
Время на прочтение18 мин
Охват и читатели18K

Несмотря на весь технический прогресс IT, мне за всё время так и не удалось повстречать убедительное решение проблемы ввода «ghbdtn» вместо «привет» или «lf» вместо «да» — путаницы с раскладкой клавиатуры при наборе текста.

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

Я опишу реализацию решения для среды рабочего стола GNOME, проверенное на дистрибутивах Fedora 43 и Ubuntu 24.04.

Читать далее

Инструкция: настройка дополнительного публичного IP-адреса на облачном сервере в Linux

Время на прочтение6 мин
Охват и читатели12K

Итак, вы назначили на сервер оба IP-адреса, корректно прописали настройки сети, но работает только один канал связи. Запросы уходят через один интернет-канал, хотя активны оба. 

Дело в том, что в Linux-системах может быть только один маршрут по умолчанию (default gateway). Если у сервера несколько внешних интерфейсов с разными подсетями, то ответы на запросы, пришедшие через второй интерфейс, сервер попытается отправить через основной шлюз таблицы маршрутов. Это приведет к асимметричной маршрутизации и отбрасыванию пакетов. 

Привет, Хабр! Меня зовут Саломея Яковлева, я специалист продуктовой поддержки в Selectel. В этой статье мы разберемся, как избежать такой проблемы с помощью механизма policy-based routing (PBR) на базе iproute2: создадим отдельные таблицы маршрутов и правила, направляющие трафик через правильный шлюз. 

Читать далее

Контроль доступа в Angie

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели8.5K

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

Читать далее

Балансировка DNS-трафика и активные health-check'и апстримов — как и почему мы начали использовать DNSdist

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели7K

Коллеги, всем привет!

Долгое время в нашей внутренней сети для обработки DNS-трафика мы использовали только BIND, и нам с ним было хорошо. Но в какой-то момент его возможностей перестало хватать. В статье расскажу, что именно с BIND не так и почему теперь весь DNS-трафик у нас проходит через DNSdist. И что это вообще такое...

Читать далее

Создание легкого shell на си

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели6.2K

Многие начинающие разработчики которые начинаю писать на языке C сталкиваются с проблемой : Какой 1 пет-проект написать на C ? И вопрос то логичный ведь проекты на C никогда не славились легкостью по сравнению с проектами на python или JavaScript . И как по мне отличная идей написать shell ведь там не надо знать ассемблер или иметь глубокие знание в работе OC , и он относительно легок в понимании .

В этой статье мы с вами подробно разберем написание shell на языке C , как он устроен ,в чем отличия bash shell и cmd. И напишем свой shell на 450 строк кода

Начнем пожалуй с самыx базовых вопросах .

Читать далее