📜 Open source факт: Linux начинался не как «большой проект»
В 1991 году Линус Торвальдс выложил ядро как личный эксперимент для своего компьютера. Никакого плана захватить серверы, облака, Android и embedded-мир тогда не было.
Сила Linux оказалась не только в коде, а в модели разработки: тысячи людей могли читать, чинить, портировать и улучшать систему под свои задачи.
Итог: сегодня Linux работает в серверах, роутерах, телефонах, суперкомпьютерах и куче устройств, о которых пользователь даже не думает.
📍 Подпишись на создателей: https://t.me/linuxexe
В 1991 году Линус Торвальдс выложил ядро как личный эксперимент для своего компьютера. Никакого плана захватить серверы, облака, Android и embedded-мир тогда не было.
Сила Linux оказалась не только в коде, а в модели разработки: тысячи людей могли читать, чинить, портировать и улучшать систему под свои задачи.
Итог: сегодня Linux работает в серверах, роутерах, телефонах, суперкомпьютерах и куче устройств, о которых пользователь даже не думает.
📍 Подпишись на создателей: https://t.me/linuxexe
⚖️ Ubuntu vs Debian на сервере
Если нужен сервер «поставил и забыл», Debian часто выигрывает стабильностью и предсказуемостью. Пакеты обновляются спокойнее, сюрпризов меньше.
Ubuntu удобнее, когда нужны более свежие версии, много готовых гайдов и поддержка популярных облачных образов.
Коротко:
Debian — консервативно, стабильно, чисто.
Ubuntu — практично, популярно, много документации.
Для продакшена важнее не логотип дистрибутива, а понятные обновления, бэкапы и мониторинг.
📍 Подпишись на создателей: https://t.me/linuxexe
Если нужен сервер «поставил и забыл», Debian часто выигрывает стабильностью и предсказуемостью. Пакеты обновляются спокойнее, сюрпризов меньше.
Ubuntu удобнее, когда нужны более свежие версии, много готовых гайдов и поддержка популярных облачных образов.
Коротко:
Debian — консервативно, стабильно, чисто.
Ubuntu — практично, популярно, много документации.
Для продакшена важнее не логотип дистрибутива, а понятные обновления, бэкапы и мониторинг.
📍 Подпишись на создателей: https://t.me/linuxexe
💡 Bash/Zsh: !! и !$
Две короткие подстановки, которые реально ускоряют работу:
!! — повторить предыдущую команду
!$ — взять последний аргумент предыдущей команды
Пример:
mkdir /tmp/test-project
cd !$
Вторая команда превратится в:
cd /tmp/test-project
А если забыл sudo:
sudo !!
Терминал любит тех, кто знает его маленькие трюки.
📍 Подпишись на создателей: https://t.me/linuxexe
Две короткие подстановки, которые реально ускоряют работу:
!! — повторить предыдущую команду
!$ — взять последний аргумент предыдущей команды
Пример:
mkdir /tmp/test-project
cd !$
Вторая команда превратится в:
cd /tmp/test-project
А если забыл sudo:
sudo !!
Терминал любит тех, кто знает его маленькие трюки.
📍 Подпишись на создателей: https://t.me/linuxexe
майонезная пидрила, маринованная креветка, морепродукт слизнявый, быдло парашное, туалетный бачок с Old Spice, торт Прага
Представь, что ты пишешь программу и тебе нужно прочитать данные. Неважно, откуда: с SSD-диска, флешки, сетевой папки, из оперативной памяти или вообще из датчика температуры процессора. В Linux для всего этого ты будешь использовать одну и ту же системную функцию read().
Как ядро понимает, что в одном случае нужно дернуть контроллер диска, а в другом — считать данные из оперативы? За эту магию отвечает VFS — Виртуальная файловая система. Это одна из самых красивых подсистем Linux, которая реализует знаменитый принцип «все есть файл».
Если говорить простыми словами, VFS — это гигантский слой абстракции, очень похожий на интерфейсы в объектно-ориентированном программировании. VFS не умеет сама записывать байты на магнитные диски. Вместо этого она предоставляет единый интерфейс для пространства пользователя, а внутри общается с драйверами конкретных файловых систем (ext4, btrfs, NTFS) или псевдофайловых систем (procfs, sysfs).
Когда ты вызываешь функцию open(), запрос идет не напрямую к диску, а в VFS. Она смотрит на путь к файлу и понимает, к какой именно файловой системе этот путь относится.
Вся магия VFS держится на четырех главных структурах данных в памяти ядра:
1. Суперблок (superblock). Содержит общую информацию о конкретной примонтированной файловой системе: ее тип, размер, статус и права доступа.
2. Инод (inode). Описывает конкретный объект: файл, папку или устройство. В иноде хранятся метаданные: размер, права доступа, владельцы, время изменения и физические адреса блоков на диске. Но важный нюанс: в иноде нет имени файла.
3. Дентри (dentry) или элемент каталога. Это клей, который связывает человеческие имена файлов с их инодами. Благодаря dentry ядро быстро строит дерево каталогов. Они активно кэшируются в памяти, чтобы Linux не шуршал диском каждый раз, когда ты просто переходишь по папкам.
4. Объект файла (file). Создается в памяти только тогда, когда процесс открывает файл. Он хранит текущую позицию чтения/записи и режим доступа (только чтение, запись и т.д.).
Благодаря такой структуре Linux абсолютно все равно, с чем работать.
Хочешь узнать температуру процессора? Читаешь файл /sys/class/thermal/thermal_zone0/temp. VFS видит, что этот путь относится к виртуальной файловой системе sysfs, и вместо чтения физического сектора диска дергает функцию драйвера материнской платы. Драйвер опрашивает датчик и возвращает тебе текстовую строку с температурой.
Хочешь отправить данные в сеть? Пишешь в сокет, который для VFS выглядит как обычный файловый дескриптор, просто за ним скрывается сетевой стек ядра.
Именно VFS делает Linux невероятно гибким. Разработчикам прикладного софта не нужно думать о железе, секторах и разметке дисков, а создателям драйверов не нужно изобретать свои способы передачи данных в программы. Все просто работают с файлами.
📍 Подпишись на создателей: https://t.me/linuxexe
Как ядро понимает, что в одном случае нужно дернуть контроллер диска, а в другом — считать данные из оперативы? За эту магию отвечает VFS — Виртуальная файловая система. Это одна из самых красивых подсистем Linux, которая реализует знаменитый принцип «все есть файл».
Если говорить простыми словами, VFS — это гигантский слой абстракции, очень похожий на интерфейсы в объектно-ориентированном программировании. VFS не умеет сама записывать байты на магнитные диски. Вместо этого она предоставляет единый интерфейс для пространства пользователя, а внутри общается с драйверами конкретных файловых систем (ext4, btrfs, NTFS) или псевдофайловых систем (procfs, sysfs).
Когда ты вызываешь функцию open(), запрос идет не напрямую к диску, а в VFS. Она смотрит на путь к файлу и понимает, к какой именно файловой системе этот путь относится.
Вся магия VFS держится на четырех главных структурах данных в памяти ядра:
1. Суперблок (superblock). Содержит общую информацию о конкретной примонтированной файловой системе: ее тип, размер, статус и права доступа.
2. Инод (inode). Описывает конкретный объект: файл, папку или устройство. В иноде хранятся метаданные: размер, права доступа, владельцы, время изменения и физические адреса блоков на диске. Но важный нюанс: в иноде нет имени файла.
3. Дентри (dentry) или элемент каталога. Это клей, который связывает человеческие имена файлов с их инодами. Благодаря dentry ядро быстро строит дерево каталогов. Они активно кэшируются в памяти, чтобы Linux не шуршал диском каждый раз, когда ты просто переходишь по папкам.
4. Объект файла (file). Создается в памяти только тогда, когда процесс открывает файл. Он хранит текущую позицию чтения/записи и режим доступа (только чтение, запись и т.д.).
Благодаря такой структуре Linux абсолютно все равно, с чем работать.
Хочешь узнать температуру процессора? Читаешь файл /sys/class/thermal/thermal_zone0/temp. VFS видит, что этот путь относится к виртуальной файловой системе sysfs, и вместо чтения физического сектора диска дергает функцию драйвера материнской платы. Драйвер опрашивает датчик и возвращает тебе текстовую строку с температурой.
Хочешь отправить данные в сеть? Пишешь в сокет, который для VFS выглядит как обычный файловый дескриптор, просто за ним скрывается сетевой стек ядра.
Именно VFS делает Linux невероятно гибким. Разработчикам прикладного софта не нужно думать о железе, секторах и разметке дисков, а создателям драйверов не нужно изобретать свои способы передачи данных в программы. Все просто работают с файлами.
📍 Подпишись на создателей: https://t.me/linuxexe
🔐 Linux security: проверь SSH-доступ
Минимальный чек-лист для сервера:
1. Отключить вход root по SSH:
PermitRootLogin no
2. Отключить парольный вход, если используешь ключи:
PasswordAuthentication no
3. Проверить, кто вообще может логиниться:
AllowUsers your_user
После изменения конфига не закрывай текущую SSH-сессию сразу. Сначала открой вторую и проверь вход.
Так ты не заблокируешь сам себя из-за опечатки.
📍 Подпишись на создателей: https://t.me/linuxexe
Минимальный чек-лист для сервера:
1. Отключить вход root по SSH:
PermitRootLogin no
2. Отключить парольный вход, если используешь ключи:
PasswordAuthentication no
3. Проверить, кто вообще может логиниться:
AllowUsers your_user
После изменения конфига не закрывай текущую SSH-сессию сразу. Сначала открой вторую и проверь вход.
Так ты не заблокируешь сам себя из-за опечатки.
📍 Подпишись на создателей: https://t.me/linuxexe