Как работает планировщик процессов в Linux — и почему это вообще важно
Твой ноутбук запускает браузер, музыку, терминал и ещё пятьдесят фоновых процессов одновременно. Но ядро у тебя одно, ядер процессора — допустим, четыре. Кто решает, кому из тысячи процессов дать время на выполнение прямо сейчас? Планировщик.
Суть простая: процессор может делать только одно дело в конкретный момент времени. Задача планировщика — нарезать это время на крошечные куски и раздавать их процессам по очереди, так быстро, что тебе кажется, будто всё работает параллельно. Это называется вытесняющая многозадачность.
Как он выбирает, кому дать CPU?
В Linux уже давно используется CFS — Completely Fair Scheduler. Название говорящее: он пытается быть честным. Идея в том, чтобы каждый процесс получил примерно одинаковое реальное время процессора с учётом своего приоритета.
CFS не работает с очередями в классическом смысле. Он хранит все запущенные задачи в красно-чёрном дереве, где ключ — виртуальное время выполнения процесса (vruntime). Чем меньше vruntime, тем меньше процесс успел поработать, значит он стоит ближе к левому краю дерева. Планировщик всегда берёт крайний левый узел — того, кто ждал дольше всех.
Когда процесс поработал своё время (таймслот), его vruntime увеличивается, он уходит правее в дереве, и на смену приходит следующий претендент. Всё это происходит за микросекунды.
А приоритеты?
Приоритет в Linux называется nice-значение, от -20 (максимум наглости) до 19 (максимально уступчивый). Чем ниже nice, тем медленнее растёт vruntime у процесса — то есть он чаще оказывается крайним слева и получает больше CPU. Не грубой силой, а математикой.
Есть ещё отдельный класс задач реального времени — SCHED_FIFO и SCHED_RR. Они вообще живут вне CFS и имеют абсолютный приоритет. Используются для аудио, промышленного управления, всего, где задержка критична.
Что происходит при переключении контекста?
Когда планировщик решает сменить задачу, ядро сохраняет состояние текущего процесса: регистры, указатель стека, счётчик команд — всё это в структуре task_struct. Потом загружает сохранённое состояние следующего процесса и передаёт ему управление. Для тебя это невидимо, но каждое такое переключение стоит времени — десятки микросекунд. Поэтому слишком частые переключения вредны, планировщик старается давать разумный таймслот.
Кстати, с появлением многоядерных систем задача усложнилась: нужно не только распределять время, но и решать, на каком ядре запускать процесс. Лучше на том, где он работал в прошлый раз — данные ещё могут быть в кэше (cache affinity). Планировщик учитывает и это.
В ядре 6.6 появился EEVDF — новый алгоритм на замену CFS, ещё более честный и с лучшей работой с латентностью. Эволюция не останавливается.
Итог: планировщик — это сердце многозадачности. Ты никогда не думаешь о нём, пока он работает правильно. И это, наверное, лучший комплимент для системного кода 🐧
📍 Подпишись на создателей: https://t.me/linuxexex
Твой ноутбук запускает браузер, музыку, терминал и ещё пятьдесят фоновых процессов одновременно. Но ядро у тебя одно, ядер процессора — допустим, четыре. Кто решает, кому из тысячи процессов дать время на выполнение прямо сейчас? Планировщик.
Суть простая: процессор может делать только одно дело в конкретный момент времени. Задача планировщика — нарезать это время на крошечные куски и раздавать их процессам по очереди, так быстро, что тебе кажется, будто всё работает параллельно. Это называется вытесняющая многозадачность.
Как он выбирает, кому дать CPU?
В Linux уже давно используется CFS — Completely Fair Scheduler. Название говорящее: он пытается быть честным. Идея в том, чтобы каждый процесс получил примерно одинаковое реальное время процессора с учётом своего приоритета.
CFS не работает с очередями в классическом смысле. Он хранит все запущенные задачи в красно-чёрном дереве, где ключ — виртуальное время выполнения процесса (vruntime). Чем меньше vruntime, тем меньше процесс успел поработать, значит он стоит ближе к левому краю дерева. Планировщик всегда берёт крайний левый узел — того, кто ждал дольше всех.
Когда процесс поработал своё время (таймслот), его vruntime увеличивается, он уходит правее в дереве, и на смену приходит следующий претендент. Всё это происходит за микросекунды.
А приоритеты?
Приоритет в Linux называется nice-значение, от -20 (максимум наглости) до 19 (максимально уступчивый). Чем ниже nice, тем медленнее растёт vruntime у процесса — то есть он чаще оказывается крайним слева и получает больше CPU. Не грубой силой, а математикой.
Есть ещё отдельный класс задач реального времени — SCHED_FIFO и SCHED_RR. Они вообще живут вне CFS и имеют абсолютный приоритет. Используются для аудио, промышленного управления, всего, где задержка критична.
Что происходит при переключении контекста?
Когда планировщик решает сменить задачу, ядро сохраняет состояние текущего процесса: регистры, указатель стека, счётчик команд — всё это в структуре task_struct. Потом загружает сохранённое состояние следующего процесса и передаёт ему управление. Для тебя это невидимо, но каждое такое переключение стоит времени — десятки микросекунд. Поэтому слишком частые переключения вредны, планировщик старается давать разумный таймслот.
Кстати, с появлением многоядерных систем задача усложнилась: нужно не только распределять время, но и решать, на каком ядре запускать процесс. Лучше на том, где он работал в прошлый раз — данные ещё могут быть в кэше (cache affinity). Планировщик учитывает и это.
В ядре 6.6 появился EEVDF — новый алгоритм на замену CFS, ещё более честный и с лучшей работой с латентностью. Эволюция не останавливается.
Итог: планировщик — это сердце многозадачности. Ты никогда не думаешь о нём, пока он работает правильно. И это, наверное, лучший комплимент для системного кода 🐧
📍 Подпишись на создателей: https://t.me/linuxexex
🧩 Как systemd запускает сервисы простыми словами
systemd читает unit-файлы, понимает зависимости и запускает сервисы в нужном порядке.
Например, если приложению нужна сеть, unit может указать:
After=network-online.target
Главные команды:
systemctl status nginx — состояние сервиса
systemctl restart nginx — перезапуск
journalctl -u nginx -f — живые логи
systemd не просто «запускает демоны». Он ещё следит за процессами, логирует, рестартит при падении и помогает понять, почему сервис не поднялся.
📍 Подпишись на создателей: https://t.me/linuxexex
systemd читает unit-файлы, понимает зависимости и запускает сервисы в нужном порядке.
Например, если приложению нужна сеть, unit может указать:
After=network-online.target
Главные команды:
systemctl status nginx — состояние сервиса
systemctl restart nginx — перезапуск
journalctl -u nginx -f — живые логи
systemd не просто «запускает демоны». Он ещё следит за процессами, логирует, рестартит при падении и помогает понять, почему сервис не поднялся.
📍 Подпишись на создателей: https://t.me/linuxexex
🚀 Bash/Zsh: быстро заменить ошибку в прошлой команде
Опечатался в предыдущей команде? Не обязательно переписывать всё заново.
Можно сделать так:
^stauts^status
Shell повторит прошлую команду, заменив первый фрагмент на второй.
Пример:
git stauts
^stauts^status
Мелочь, но в терминале такие мелочи складываются в скорость.
📍 Подпишись на создателей: https://t.me/linuxexex
Опечатался в предыдущей команде? Не обязательно переписывать всё заново.
Можно сделать так:
^stauts^status
Shell повторит прошлую команду, заменив первый фрагмент на второй.
Пример:
git stauts
^stauts^status
Мелочь, но в терминале такие мелочи складываются в скорость.
📍 Подпишись на создателей: https://t.me/linuxexex
tee — труба с раздвоением
Все знают пайпы в Linux. Гонишь вывод одной команды в другую — красота. Но иногда хочется одновременно и в файл записать, и дальше по трубе пустить. Вот тут и приходит tee.
Название — от буквы T, форма которой буквально описывает что происходит: поток данных идёт прямо и одновременно ответвляется в сторону.
Простой пример:
ls -la | tee output.txt | grep ".sh"
Что произошло: вывод ls записался в output.txt И при этом ушёл дальше в grep. Без tee пришлось бы делать два отдельных вызова или городить костыли.
Несколько полезных флагов:
-a (append) — не перезаписывает файл, а дописывает в конец. Незаменимо для логов.
./deploy.sh | tee -a deploy.log | grep "ERROR"
Следишь за ошибками в реальном времени и лог копится — удобно.
Запись в несколько файлов сразу — просто перечисляешь их:
echo "привет" | tee file1.txt file2.txt file3.txt
Все три файла получат одинаковое содержимое.
Хитрый трюк с sudo — когда надо записать в системный файл, но редиректом это не выйдет:
echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.conf
Классическая ошибка новичков — написать sudo echo ... > /etc/sysctl.conf. sudo применяется к echo, а редирект > выполняется от текущего пользователя. Получаешь "Permission denied". С tee — работает, потому что именно tee запускается с правами root и пишет в файл.
Можно подавить вывод в терминал, если нужна только запись в файл, и дальнейшая обработка через пайп — перенаправляешь в /dev/null:
command | tee output.txt > /dev/null
Не самый частый сценарий, но бывает нужен в скриптах.
tee есть везде — Linux, macOS, BSD. Входит в GNU Coreutils, так что никаких установок не нужно. Одна из тех команд, про которую не думаешь неделями, а потом однажды вспоминаешь — и она решает задачу за три секунды.
linux.exe
📍 Подпишись на создателей: https://t.me/linuxexex
Все знают пайпы в Linux. Гонишь вывод одной команды в другую — красота. Но иногда хочется одновременно и в файл записать, и дальше по трубе пустить. Вот тут и приходит tee.
Название — от буквы T, форма которой буквально описывает что происходит: поток данных идёт прямо и одновременно ответвляется в сторону.
Простой пример:
ls -la | tee output.txt | grep ".sh"
Что произошло: вывод ls записался в output.txt И при этом ушёл дальше в grep. Без tee пришлось бы делать два отдельных вызова или городить костыли.
Несколько полезных флагов:
-a (append) — не перезаписывает файл, а дописывает в конец. Незаменимо для логов.
./deploy.sh | tee -a deploy.log | grep "ERROR"
Следишь за ошибками в реальном времени и лог копится — удобно.
Запись в несколько файлов сразу — просто перечисляешь их:
echo "привет" | tee file1.txt file2.txt file3.txt
Все три файла получат одинаковое содержимое.
Хитрый трюк с sudo — когда надо записать в системный файл, но редиректом это не выйдет:
echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.conf
Классическая ошибка новичков — написать sudo echo ... > /etc/sysctl.conf. sudo применяется к echo, а редирект > выполняется от текущего пользователя. Получаешь "Permission denied". С tee — работает, потому что именно tee запускается с правами root и пишет в файл.
Можно подавить вывод в терминал, если нужна только запись в файл, и дальнейшая обработка через пайп — перенаправляешь в /dev/null:
command | tee output.txt > /dev/null
Не самый частый сценарий, но бывает нужен в скриптах.
tee есть везде — Linux, macOS, BSD. Входит в GNU Coreutils, так что никаких установок не нужно. Одна из тех команд, про которую не думаешь неделями, а потом однажды вспоминаешь — и она решает задачу за три секунды.
linux.exe
📍 Подпишись на создателей: https://t.me/linuxexex
📰 Мой SpaceX останется «GaySex»
Всё. Больше добавить нечего.
Источник (4chan /biz/): https://boards.4chan.org/biz/thread/62525448
📍 Подпишись на создателей: https://t.me/linuxexex
Всё. Больше добавить нечего.
Источник (4chan /biz/): https://boards.4chan.org/biz/thread/62525448
📍 Подпишись на создателей: https://t.me/linuxexex
boards.4chan.org
/biz/ - My spacex stays gaysex! - Business & Finance - 4chan
My spacex stays gaysex! - "/biz/ - Business & Finance" is 4chan's imageboard for the discussion of business and finance, and cryptocurrencies such as Bitcoin and Dogecoin.
Один совет по безопасности, который реально стоит внедрить
Большинство линуксоидов настраивают систему один раз и потом годами не трогают. А между тем есть одна штука, которую легко забыть и о которой потом горько жалеют — это аудит SUID/SGID-файлов.
Что это и зачем?
SUID-бит позволяет запускать файл с правами владельца (обычно root), даже если ты обычный пользователь. Это нужно для таких команд как passwd или sudo. Но если злоумышленник подбросит или подменит хотя бы один такой файл — он получает повышение привилегий. Тихо и незаметно.
Как проверить систему прямо сейчас:
find / -perm /4000 -o -perm /2000 2>/dev/null
Эта команда выведет все файлы с SUID или SGID-битом на всей системе. Пробегись глазами по списку. Видишь что-то незнакомое или подозрительное — это повод разбираться.
Что дальше?
Зафиксируй эталонный список сразу после чистой установки или настройки системы. Сохрани его в файл:
find / -perm /4000 -o -perm /2000 2>/dev/null | sort > suid_baseline.txt
И периодически сравнивай с текущим состоянием:
find / -perm /4000 -o -perm /2000 2>/dev/null | sort | diff suid_baseline.txt -
Если в выводе появляются новые строки — кто-то или что-то добавило новый файл с повышенными привилегиями. Это уже сигнал тревоги.
Для автоматизации можно повесить такую проверку в cron и отправлять результат на почту или в бот — тогда ты узнаешь об изменениях раньше, чем они станут проблемой.
Маленький лайфхак: если хочешь убрать SUID-бит с конкретного файла, которому он не нужен — это делается так:
chmod u-s /путь/к/файлу
Только не трогай системные утилиты без понимания последствий. passwd без SUID превратится в тыкву.
Безопасность — это не разовая акция, это привычка проверять. 🔒
📍 Подпишись на создателей: https://t.me/linuxexex
Большинство линуксоидов настраивают систему один раз и потом годами не трогают. А между тем есть одна штука, которую легко забыть и о которой потом горько жалеют — это аудит SUID/SGID-файлов.
Что это и зачем?
SUID-бит позволяет запускать файл с правами владельца (обычно root), даже если ты обычный пользователь. Это нужно для таких команд как passwd или sudo. Но если злоумышленник подбросит или подменит хотя бы один такой файл — он получает повышение привилегий. Тихо и незаметно.
Как проверить систему прямо сейчас:
find / -perm /4000 -o -perm /2000 2>/dev/null
Эта команда выведет все файлы с SUID или SGID-битом на всей системе. Пробегись глазами по списку. Видишь что-то незнакомое или подозрительное — это повод разбираться.
Что дальше?
Зафиксируй эталонный список сразу после чистой установки или настройки системы. Сохрани его в файл:
find / -perm /4000 -o -perm /2000 2>/dev/null | sort > suid_baseline.txt
И периодически сравнивай с текущим состоянием:
find / -perm /4000 -o -perm /2000 2>/dev/null | sort | diff suid_baseline.txt -
Если в выводе появляются новые строки — кто-то или что-то добавило новый файл с повышенными привилегиями. Это уже сигнал тревоги.
Для автоматизации можно повесить такую проверку в cron и отправлять результат на почту или в бот — тогда ты узнаешь об изменениях раньше, чем они станут проблемой.
Маленький лайфхак: если хочешь убрать SUID-бит с конкретного файла, которому он не нужен — это делается так:
chmod u-s /путь/к/файлу
Только не трогай системные утилиты без понимания последствий. passwd без SUID превратится в тыкву.
Безопасность — это не разовая акция, это привычка проверять. 🔒
📍 Подпишись на создателей: https://t.me/linuxexex
Мало кто знает про CDPATH — и зря.
Это переменная окружения в bash и zsh, которая работает как PATH, только для команды cd. Объясняю на пальцах.
Допустим, у тебя есть куча проектов в ~/projects, и ты постоянно делаешь:
cd ~/projects/myapp
cd ~/projects/backend
cd ~/projects/frontend
Надоедает. Добавляешь в .bashrc или .zshrc одну строчку:
export CDPATH=.:~:~/projects
И теперь из любой директории пишешь просто:
cd myapp
cd backend
cd frontend
Шелл сам найдёт нужную папку, пробежавшись по путям в CDPATH слева направо. Если нашёл — переходит и печатает полный путь, чтобы ты не потерялся. Точка в начале означает "сначала смотри в текущей директории" — это важно, иначе поведение cd станет неожиданным.
Можно добавить несколько корневых папок через двоеточие. Например, если работаешь ещё и с конфигами:
export CDPATH=.:~:~/projects:~/work/configs
Zsh дружит с этим ещё приятнее — автодополнение по Tab учитывает CDPATH и подсказывает папки из всех указанных мест. Bash тоже умеет, но чуть хуже из коробки.
Маленький нюанс: если в двух папках из CDPATH есть одноимённые директории — победит та, чей родитель стоит левее в списке. Поэтому порядок важен.
Простая штука, настраивается за 30 секунд, а экономит кучу нажатий каждый день. Такие мелочи и делают работу в терминале приятной 🙂
📍 Подпишись на создателей: https://t.me/linuxexex
Это переменная окружения в bash и zsh, которая работает как PATH, только для команды cd. Объясняю на пальцах.
Допустим, у тебя есть куча проектов в ~/projects, и ты постоянно делаешь:
cd ~/projects/myapp
cd ~/projects/backend
cd ~/projects/frontend
Надоедает. Добавляешь в .bashrc или .zshrc одну строчку:
export CDPATH=.:~:~/projects
И теперь из любой директории пишешь просто:
cd myapp
cd backend
cd frontend
Шелл сам найдёт нужную папку, пробежавшись по путям в CDPATH слева направо. Если нашёл — переходит и печатает полный путь, чтобы ты не потерялся. Точка в начале означает "сначала смотри в текущей директории" — это важно, иначе поведение cd станет неожиданным.
Можно добавить несколько корневых папок через двоеточие. Например, если работаешь ещё и с конфигами:
export CDPATH=.:~:~/projects:~/work/configs
Zsh дружит с этим ещё приятнее — автодополнение по Tab учитывает CDPATH и подсказывает папки из всех указанных мест. Bash тоже умеет, но чуть хуже из коробки.
Маленький нюанс: если в двух папках из CDPATH есть одноимённые директории — победит та, чей родитель стоит левее в списке. Поэтому порядок важен.
Простая штука, настраивается за 30 секунд, а экономит кучу нажатий каждый день. Такие мелочи и делают работу в терминале приятной 🙂
📍 Подпишись на создателей: https://t.me/linuxexex
Один лайфхак для терминала, который реально экономит время
Если ты часто работаешь в командной строке, то наверняка знаешь боль: набрал длинную команду, нажал Enter — и только потом заметил опечатку. Или хочешь повторить команду из прошлой недели, но уже не помнишь её целиком.
Вот что реально помогает — интерактивный поиск по истории через fzf.
Стандартный Ctrl+R в bash работает, но неудобно: ищет по одному результату, нужно жать снова и снова. fzf меняет это полностью.
Ставишь fzf:
На Ubuntu/Debian — sudo apt install fzf
На Arch — sudo pacman -S fzf
На macOS — brew install fzf
Добавляешь в ~/.bashrc или ~/.zshrc одну строку:
source /usr/share/doc/fzf/examples/key-bindings.bash
(для zsh путь может отличаться, смотри документацию пакета)
Перезапускаешь шелл — и теперь Ctrl+R открывает интерактивное окно поиска прямо в терминале. Начинаешь печатать любое слово из команды — список фильтруется в реальном времени. Нашёл нужное — Enter, и команда вставляется в строку ввода. Можно ещё отредактировать перед запуском.
Это не всё. fzf цепляется и к Ctrl+T — интерактивный поиск файлов в текущей директории. И к Alt+C — быстрый переход в любую поддиректорию без cd и табов.
Казалось бы, мелочь. Но когда перестаёшь тратить время на листание истории стрелками и вспоминание точного синтаксиса — замечаешь, насколько быстрее идёт работа.
Особенно ценно, если работаешь на нескольких серверах по SSH и история у каждого своя. fzf одинаково хорошо работает везде, где его поставил.
Попробуй один день с ним — обратно уже не захочешь 🙂
📍 Подпишись на создателей: https://t.me/linuxexex
Если ты часто работаешь в командной строке, то наверняка знаешь боль: набрал длинную команду, нажал Enter — и только потом заметил опечатку. Или хочешь повторить команду из прошлой недели, но уже не помнишь её целиком.
Вот что реально помогает — интерактивный поиск по истории через fzf.
Стандартный Ctrl+R в bash работает, но неудобно: ищет по одному результату, нужно жать снова и снова. fzf меняет это полностью.
Ставишь fzf:
На Ubuntu/Debian — sudo apt install fzf
На Arch — sudo pacman -S fzf
На macOS — brew install fzf
Добавляешь в ~/.bashrc или ~/.zshrc одну строку:
source /usr/share/doc/fzf/examples/key-bindings.bash
(для zsh путь может отличаться, смотри документацию пакета)
Перезапускаешь шелл — и теперь Ctrl+R открывает интерактивное окно поиска прямо в терминале. Начинаешь печатать любое слово из команды — список фильтруется в реальном времени. Нашёл нужное — Enter, и команда вставляется в строку ввода. Можно ещё отредактировать перед запуском.
Это не всё. fzf цепляется и к Ctrl+T — интерактивный поиск файлов в текущей директории. И к Alt+C — быстрый переход в любую поддиректорию без cd и табов.
Казалось бы, мелочь. Но когда перестаёшь тратить время на листание истории стрелками и вспоминание точного синтаксиса — замечаешь, насколько быстрее идёт работа.
Особенно ценно, если работаешь на нескольких серверах по SSH и история у каждого своя. fzf одинаково хорошо работает везде, где его поставил.
Попробуй один день с ним — обратно уже не захочешь 🙂
📍 Подпишись на создателей: https://t.me/linuxexex
📰 /cyb/+/psg/: Кибerpunk, безопасность и приватность
«Чем дальше общество отдаляется от правды, тем сильнее оно будет ненавидеть тех, кто её говорит.»
— Джордж Оруэлл
> Кибerpunk
FAQ: https://archive.is/mkDpa
Что такое /cyb/erpunk?: https://pastebin.com/pmn9vzWZ
Как войти в /cyb/erpunk?: https://pastebin.com/5tpNFQds
Огромный список киберпанк-медиа: https://archive.is/6pQt6
Cyberdeck: https://pastebin.com/7fE4BVBg
Cyberlife: https://jinteki.industries/files/cyberlife.7z
Библиотека (Bibliothek): https://www.mediafire.com/folder/4m5hd2065hde8/Bibliothek
> Сети
Tor: https://www.torproject.org/download/
I2P: https://i2p.net/en/
Freenet: https://www.hyphanet.org/
> Приватность
Инструменты: https://www.privacyguides.org/en/tools/
Железо с открытым ПО: https://ryf.fsf.org/products
Приватные фронтенды: https://igwiki.lyci.de/wiki/Privacy_friendly_frontends
Гайд по OSINT: https://inteltechniques.com/index.html
Прошивки: https://libreboot.org/
РМС о Facebook: https://stallman.org/facebook.html
Проверь, утекли ли твои данные: https://haveibeenpwned.com/
> Безопасность
«Всё стало серьёзно»: https://pastebin.com/rqrLK6X0
Основы кибербезопасности: https://igwiki.lyci.de/wiki/Cybersecurity_-_/sec/_guide
Базовый арсенал: https://igwiki.lyci.de/wiki/Cybersecurity_-_basics_and_armory
Обучение / новости / CTF: https://igwiki.lyci.de/wiki/Cybersecurity_-_Learning/News/CTFs
PDF-подборка /sec/: https://mega.nz/#F!zGJT1QQQ!O-8yiH845GN26ajAvkoLkA
EFF — самозащита от слежки: https://ssd.eff.org/
Дополнительная библиотека: https://mega.nz/file/UCgEGAjb#rwNcnMAQCUUbSp8supsFvn9QEHCWUW86eLcZa16ZG4Y
Актуальные ссылки для удаления себя из баз данных брокеров:
https://pastebin.com/cDbDXQvh
https://pastebin.com/raw/cDbDXQvh
Источник (4chan /g/): https://boards.4chan.org/g/thread/109387207
📍 Подпишись на создателей: https://t.me/linuxexex
«Чем дальше общество отдаляется от правды, тем сильнее оно будет ненавидеть тех, кто её говорит.»
— Джордж Оруэлл
> Кибerpunk
FAQ: https://archive.is/mkDpa
Что такое /cyb/erpunk?: https://pastebin.com/pmn9vzWZ
Как войти в /cyb/erpunk?: https://pastebin.com/5tpNFQds
Огромный список киберпанк-медиа: https://archive.is/6pQt6
Cyberdeck: https://pastebin.com/7fE4BVBg
Cyberlife: https://jinteki.industries/files/cyberlife.7z
Библиотека (Bibliothek): https://www.mediafire.com/folder/4m5hd2065hde8/Bibliothek
> Сети
Tor: https://www.torproject.org/download/
I2P: https://i2p.net/en/
Freenet: https://www.hyphanet.org/
> Приватность
Инструменты: https://www.privacyguides.org/en/tools/
Железо с открытым ПО: https://ryf.fsf.org/products
Приватные фронтенды: https://igwiki.lyci.de/wiki/Privacy_friendly_frontends
Гайд по OSINT: https://inteltechniques.com/index.html
Прошивки: https://libreboot.org/
РМС о Facebook: https://stallman.org/facebook.html
Проверь, утекли ли твои данные: https://haveibeenpwned.com/
> Безопасность
«Всё стало серьёзно»: https://pastebin.com/rqrLK6X0
Основы кибербезопасности: https://igwiki.lyci.de/wiki/Cybersecurity_-_/sec/_guide
Базовый арсенал: https://igwiki.lyci.de/wiki/Cybersecurity_-_basics_and_armory
Обучение / новости / CTF: https://igwiki.lyci.de/wiki/Cybersecurity_-_Learning/News/CTFs
PDF-подборка /sec/: https://mega.nz/#F!zGJT1QQQ!O-8yiH845GN26ajAvkoLkA
EFF — самозащита от слежки: https://ssd.eff.org/
Дополнительная библиотека: https://mega.nz/file/UCgEGAjb#rwNcnMAQCUUbSp8supsFvn9QEHCWUW86eLcZa16ZG4Y
Актуальные ссылки для удаления себя из баз данных брокеров:
https://pastebin.com/cDbDXQvh
https://pastebin.com/raw/cDbDXQvh
Источник (4chan /g/): https://boards.4chan.org/g/thread/109387207
📍 Подпишись на создателей: https://t.me/linuxexex
archive.is
The alt.cyberpunk FAQ - sizeof(cat)
archived 26 Jun 2025 19:48:57 UTC
Один лайфхак для терминала, который я использую каждый день
Если ты часто работаешь в терминале, то наверняка знаешь эту боль — набираешь длинную команду, понимаешь что ошибся в начале строки, и начинаешь долбить стрелку влево или зажимаешь Backspace.
Стоп. Есть способ лучше.
Ctrl+A — переходит в начало строки
Ctrl+E — переходит в конец строки
Ctrl+W — удаляет слово слева от курсора
Alt+B — прыгает на слово назад
Alt+F — прыгает на слово вперёд
Это базовые шорткаты bash/readline, которые работают везде — в zsh, fish (частично), в psql, python REPL, даже в gdb.
Но вот лайфхак, который реально меняет жизнь 👇
Набери в терминале:
set -o vi
Теперь твой bash работает в vi-режиме. Нажимаешь Esc — и ты в командном режиме. Жмёшь b, w, 0, $, x, dd — всё как в vim, прямо в строке ввода. Хочешь отредактировать длинную команду по-человечески — нажимаешь v, и она открывается в полноценном редакторе.
Назад к обычному режиму:
set -o emacs
Чтобы vi-режим сохранился навсегда, добавь в ~/.bashrc:
set -o vi
Если ты уже на vi-режиме — есть ещё один трюк. Нажми Esc, потом k — и ты листаешь историю команд в стиле vim. Нажми / — и можешь искать по истории как в vim-поиске.
Бонус для тех, кто не хочет vi-режим, но хочет удобный поиск по истории:
Ctrl+R — интерактивный поиск назад по истории. Начинаешь вводить фрагмент команды — терминал сам находит последнее совпадение. Ctrl+R ещё раз — следующее совпадение.
Это, пожалуй, самый недооценённый шорткат вообще. Люди по 5 лет работают в Linux и не знают про Ctrl+R 🙈
Попробуй прямо сейчас — Ctrl+R и начни вводить docker или git. Увидишь магию.
📍 Подпишись на создателей: https://t.me/linuxexex
Если ты часто работаешь в терминале, то наверняка знаешь эту боль — набираешь длинную команду, понимаешь что ошибся в начале строки, и начинаешь долбить стрелку влево или зажимаешь Backspace.
Стоп. Есть способ лучше.
Ctrl+A — переходит в начало строки
Ctrl+E — переходит в конец строки
Ctrl+W — удаляет слово слева от курсора
Alt+B — прыгает на слово назад
Alt+F — прыгает на слово вперёд
Это базовые шорткаты bash/readline, которые работают везде — в zsh, fish (частично), в psql, python REPL, даже в gdb.
Но вот лайфхак, который реально меняет жизнь 👇
Набери в терминале:
set -o vi
Теперь твой bash работает в vi-режиме. Нажимаешь Esc — и ты в командном режиме. Жмёшь b, w, 0, $, x, dd — всё как в vim, прямо в строке ввода. Хочешь отредактировать длинную команду по-человечески — нажимаешь v, и она открывается в полноценном редакторе.
Назад к обычному режиму:
set -o emacs
Чтобы vi-режим сохранился навсегда, добавь в ~/.bashrc:
set -o vi
Если ты уже на vi-режиме — есть ещё один трюк. Нажми Esc, потом k — и ты листаешь историю команд в стиле vim. Нажми / — и можешь искать по истории как в vim-поиске.
Бонус для тех, кто не хочет vi-режим, но хочет удобный поиск по истории:
Ctrl+R — интерактивный поиск назад по истории. Начинаешь вводить фрагмент команды — терминал сам находит последнее совпадение. Ctrl+R ещё раз — следующее совпадение.
Это, пожалуй, самый недооценённый шорткат вообще. Люди по 5 лет работают в Linux и не знают про Ctrl+R 🙈
Попробуй прямо сейчас — Ctrl+R и начни вводить docker или git. Увидишь магию.
📍 Подпишись на создателей: https://t.me/linuxexex
Расскажу про одну штуку в bash и zsh, которую большинство людей просто не замечают, хотя пользуются терминалом каждый день.
Это модификаторы истории. Знак восклицательного знака — не только для эмоций 😄
Допустим, ты только что запустил длинную команду:
rsync -avz --progress /home/user/projects/ backup@192.168.1.100:/mnt/backup/
И теперь хочешь повторить её, но с другим путём. Можно стрелку вверх, потом долго ёлозить курсором. А можно вот так:
!! — повторяет последнюю команду целиком. Классика, многие знают.
Но вот что знают единицы:
!$ — последний аргумент предыдущей команды.
Пример. Создал директорию и хочешь сразу в неё зайти:
mkdir /tmp/very/long/path/here
cd !$
Всё, не надо ничего перепечатывать. !$ подставит /tmp/very/long/path/here автоматически.
!^ — первый аргумент. Если аргументов несколько и нужен самый первый — вот он.
!:2, !:3 и так далее — конкретный аргумент по номеру. Нумерация с нуля, где 0 — сама команда, 1 — первый аргумент и так далее.
Например:
cp file1.txt file2.txt file3.txt /destination/
!:1 вернёт file1.txt, !:2 — file2.txt, и так далее.
!:1-3 — диапазон аргументов. В примере выше вернёт file1.txt file2.txt file3.txt без пути назначения.
!:* — все аргументы без самой команды. Удобно когда хочешь выполнить другую команду с теми же файлами.
Ещё одна вещь — модификатор замены ^старое^новое^
Опечатался в команде:
git comit -m "fix"
Жмёшь Enter, получаешь ошибку. Вместо того чтобы лезть в историю, просто:
^comit^commit^
bash/zsh возьмёт последнюю команду и заменит первое вхождение. Готово.
И последнее — !строка
!git найдёт последнюю команду, которая начиналась на git, и выполнит её. Без лишних поисков по истории.
!?строка? — то же самое, но ищет вхождение строки в любом месте команды, не только в начале.
Всё это работает в bash и zsh одинаково. В zsh ещё есть глобальные псевдонимы и расширения, но это уже отдельная история.
Попробуй !$ прямо сейчас — это одна из тех вещей, после которых уже не понимаешь, как жил без неё раньше 🐚
📍 Подпишись на создателей: https://t.me/linuxexex
Это модификаторы истории. Знак восклицательного знака — не только для эмоций 😄
Допустим, ты только что запустил длинную команду:
rsync -avz --progress /home/user/projects/ backup@192.168.1.100:/mnt/backup/
И теперь хочешь повторить её, но с другим путём. Можно стрелку вверх, потом долго ёлозить курсором. А можно вот так:
!! — повторяет последнюю команду целиком. Классика, многие знают.
Но вот что знают единицы:
!$ — последний аргумент предыдущей команды.
Пример. Создал директорию и хочешь сразу в неё зайти:
mkdir /tmp/very/long/path/here
cd !$
Всё, не надо ничего перепечатывать. !$ подставит /tmp/very/long/path/here автоматически.
!^ — первый аргумент. Если аргументов несколько и нужен самый первый — вот он.
!:2, !:3 и так далее — конкретный аргумент по номеру. Нумерация с нуля, где 0 — сама команда, 1 — первый аргумент и так далее.
Например:
cp file1.txt file2.txt file3.txt /destination/
!:1 вернёт file1.txt, !:2 — file2.txt, и так далее.
!:1-3 — диапазон аргументов. В примере выше вернёт file1.txt file2.txt file3.txt без пути назначения.
!:* — все аргументы без самой команды. Удобно когда хочешь выполнить другую команду с теми же файлами.
Ещё одна вещь — модификатор замены ^старое^новое^
Опечатался в команде:
git comit -m "fix"
Жмёшь Enter, получаешь ошибку. Вместо того чтобы лезть в историю, просто:
^comit^commit^
bash/zsh возьмёт последнюю команду и заменит первое вхождение. Готово.
И последнее — !строка
!git найдёт последнюю команду, которая начиналась на git, и выполнит её. Без лишних поисков по истории.
!?строка? — то же самое, но ищет вхождение строки в любом месте команды, не только в начале.
Всё это работает в bash и zsh одинаково. В zsh ещё есть глобальные псевдонимы и расширения, но это уже отдельная история.
Попробуй !$ прямо сейчас — это одна из тех вещей, после которых уже не понимаешь, как жил без неё раньше 🐚
📍 Подпишись на создателей: https://t.me/linuxexex
⚡ Терминальный лайфхак: Ctrl+R
Вместо того чтобы листать историю стрелкой вверх, нажми Ctrl+R и начни вводить кусок старой команды.
Например, вводишь ssh или docker, и shell сразу ищет совпадение в истории. Ещё одно Ctrl+R — следующее совпадение.
Это особенно удобно для длинных команд с флагами, путями и портами.
Бонус: в zsh можно усилить поиск через fzf, но даже встроенный Ctrl+R уже заметно ускоряет работу.
📍 Подпишись на создателей: https://t.me/linuxexex
Вместо того чтобы листать историю стрелкой вверх, нажми Ctrl+R и начни вводить кусок старой команды.
Например, вводишь ssh или docker, и shell сразу ищет совпадение в истории. Ещё одно Ctrl+R — следующее совпадение.
Это особенно удобно для длинных команд с флагами, путями и портами.
Бонус: в zsh можно усилить поиск через fzf, но даже встроенный Ctrl+R уже заметно ускоряет работу.
📍 Подпишись на создателей: https://t.me/linuxexex
📰 JPEG XL [JXL] Thread
JPEG XL - Новый свободный формат изображений, который мы заслуживаем.
Из распространённых форматов на сегодняшний день мы имеем старый добрый JPEG, который немного омолодила Mozilla, когда выпустила кодировщик MOZ JPEG; PNG (для изображений без потерь) и GIF, который давно пора отправить на свалку истории.
Также есть несколько относительно свежих форматов изображений, которые являются побочным продуктом, полученным при разработки видеокодеков. К примеру HEIС (HEIF) который так любит Apple происходит из видеокодека HEVC. Та же история с форматами WebP и AVIF, которые произошли из VP9 (VP8) и AV1 соответственно.
Но так как эти кодировщики делались изначально для видео, они концептуально не настолько эффективны для хранения изображений.
Джва года назад собрались компании Google и JPEG и решили, что так дальше дела не могут идти и создали новый свободный формат, который должен стать новым мировым стандартом, как когда-то стал JPEG. И у него есть все шансы. Он одновременно может заменить JPEG, в случаях сжатия с потерями (например фотки), PNG, в случаях сжатия без потерь (скриншоты), GIF (коротенькие анимации), ведь он может это всё гораздо лучше их самих.
Основные фичи формата:
- Сжимает на 60% лучше, чем JPEG.
- Сжимает без потерь на 35% лучше, чем PNG.
- Он может транскодировать jpeg изображение без потерь туда и обратно. Транскодированное JPEG XL изображение весит на ~20% меньше оригинала. Это значит, что можно спокойно пережать все свои фотки, не потеряв ни бита информации. Таким больше никто не может похвастаться.
- Поддержка прогрессивного декодирования (актуально для веба. Наполовину загруженная пикча уже выглядит хорошо)
- Анимации (замена гифок).
- Почти полнота по Тьюрингу (если бы не ограничения на максимальный размер обрабатываемых пикселей). Это позволит почти бесконечно оптимизировать формат. Пикрил в формате JPEG XL весит всего 117 байтов! И по факту является программой по его генерации, написанной вручную. Больше подобных пикч можно найти в комьюнити Discord сервере.
- Свободный формат, а это значит, что его может использовать кто и как угодно. Его уже можно активировать в Chrome, если включить флаг enable-jxl, и в ночных сборках Firefox. Также его поддержка уже добавлена в Gnome. Для винды тоже есть вьюеры. Про Plasma вообще без понятия (скорее всего тоже есть).
Сайт сообщества: https://jpegxl.info/ https://jpegxl.info/
Там все нужные ссылки, картинки и более подробное объяснение всего.
Источник (2ch /s/): https://2ch.org/s/res/3213710.html
📍 Подпишись на создателей: https://t.me/linuxexex
JPEG XL - Новый свободный формат изображений, который мы заслуживаем.
Из распространённых форматов на сегодняшний день мы имеем старый добрый JPEG, который немного омолодила Mozilla, когда выпустила кодировщик MOZ JPEG; PNG (для изображений без потерь) и GIF, который давно пора отправить на свалку истории.
Также есть несколько относительно свежих форматов изображений, которые являются побочным продуктом, полученным при разработки видеокодеков. К примеру HEIС (HEIF) который так любит Apple происходит из видеокодека HEVC. Та же история с форматами WebP и AVIF, которые произошли из VP9 (VP8) и AV1 соответственно.
Но так как эти кодировщики делались изначально для видео, они концептуально не настолько эффективны для хранения изображений.
Джва года назад собрались компании Google и JPEG и решили, что так дальше дела не могут идти и создали новый свободный формат, который должен стать новым мировым стандартом, как когда-то стал JPEG. И у него есть все шансы. Он одновременно может заменить JPEG, в случаях сжатия с потерями (например фотки), PNG, в случаях сжатия без потерь (скриншоты), GIF (коротенькие анимации), ведь он может это всё гораздо лучше их самих.
Основные фичи формата:
- Сжимает на 60% лучше, чем JPEG.
- Сжимает без потерь на 35% лучше, чем PNG.
- Он может транскодировать jpeg изображение без потерь туда и обратно. Транскодированное JPEG XL изображение весит на ~20% меньше оригинала. Это значит, что можно спокойно пережать все свои фотки, не потеряв ни бита информации. Таким больше никто не может похвастаться.
- Поддержка прогрессивного декодирования (актуально для веба. Наполовину загруженная пикча уже выглядит хорошо)
- Анимации (замена гифок).
- Почти полнота по Тьюрингу (если бы не ограничения на максимальный размер обрабатываемых пикселей). Это позволит почти бесконечно оптимизировать формат. Пикрил в формате JPEG XL весит всего 117 байтов! И по факту является программой по его генерации, написанной вручную. Больше подобных пикч можно найти в комьюнити Discord сервере.
- Свободный формат, а это значит, что его может использовать кто и как угодно. Его уже можно активировать в Chrome, если включить флаг enable-jxl, и в ночных сборках Firefox. Также его поддержка уже добавлена в Gnome. Для винды тоже есть вьюеры. Про Plasma вообще без понятия (скорее всего тоже есть).
Сайт сообщества: https://jpegxl.info/ https://jpegxl.info/
Там все нужные ссылки, картинки и более подробное объяснение всего.
Источник (2ch /s/): https://2ch.org/s/res/3213710.html
📍 Подпишись на создателей: https://t.me/linuxexex
jpegxl.info
JPEG XL: Superior Image Compression
Explore JPEG XL, the next-generation image format delivering superior compression, fast encoding/decoding, and seamless JPEG transcoding. The future of image compression is here.
📜 Open source факт: Linux начинался не как «большой проект»
В 1991 году Линус Торвальдс выложил ядро как личный эксперимент для своего компьютера. Никакого плана захватить серверы, облака, Android и embedded-мир тогда не было.
Сила Linux оказалась не только в коде, а в модели разработки: тысячи людей могли читать, чинить, портировать и улучшать систему под свои задачи.
Итог: сегодня Linux работает в серверах, роутерах, телефонах, суперкомпьютерах и куче устройств, о которых пользователь даже не думает.
📍 Подпишись на создателей: https://t.me/linuxexex
В 1991 году Линус Торвальдс выложил ядро как личный эксперимент для своего компьютера. Никакого плана захватить серверы, облака, Android и embedded-мир тогда не было.
Сила Linux оказалась не только в коде, а в модели разработки: тысячи людей могли читать, чинить, портировать и улучшать систему под свои задачи.
Итог: сегодня Linux работает в серверах, роутерах, телефонах, суперкомпьютерах и куче устройств, о которых пользователь даже не думает.
📍 Подпишись на создателей: https://t.me/linuxexex
Совет по безопасности, который многие игнорируют 🔐
Вы когда-нибудь запускали скрипт из интернета вот так:
curl https://example.com/install.sh | bash
Да, это удобно. Да, так делают почти все туториалы. И да, это один из самых рискованных способов что-либо установить.
Проблема в том, что вы не видите, что именно выполняется. Скрипт может вести себя по-разному в зависимости от того, качаете вы его или пайпите напрямую в bash — некоторые авторы вредоносов это учитывают. Скачанный файл будет выглядеть безобидно, а в реальном выполнении сделает что-то совсем другое.
Как надо делать:
Сначала скачать, потом читать, потом запускать.
curl -O https://example.com/install.sh
less install.sh
bash install.sh
Да, это три команды вместо одной. Зато вы знаете, что именно запускаете.
Ещё несколько вещей, которые стоит держать в голове 👇
sudo без понимания — зло. Перед тем как дать скрипту рут-права, убедитесь, что он реально их требует и вы понимаете зачем.
umask по умолчанию часто слишком мягкий. Проверьте командой umask — если видите 0022, новые файлы создаются с правами 644, а директории с 755. Для домашних каталогов лучше поставить 0077, тогда файлы будут доступны только вам.
SSH без пароля — это норм, но только если ключи хранятся правильно. Права на ~/.ssh должны быть 700, на authorized_keys — 600. Иначе SSH просто проигнорирует файл.
Проверяйте, кто слушает порты. Команда ss -tlnp покажет, какие процессы висят на каких портах. Иногда после установки какого-нибудь пакета неожиданно обнаруживается сервис, смотрящий наружу.
И последнее — AppArmor или SELinux. Многие отключают их сразу после установки системы, потому что они мешают. Но именно они ограничивают ущерб, если что-то пойдёт не так. Лучше потратить время на настройку профилей, чем потом разбираться с последствиями.
Безопасность — это не паранойя, это привычка 🛡️
📍 Подпишись на создателей: https://t.me/linuxexex
Вы когда-нибудь запускали скрипт из интернета вот так:
curl https://example.com/install.sh | bash
Да, это удобно. Да, так делают почти все туториалы. И да, это один из самых рискованных способов что-либо установить.
Проблема в том, что вы не видите, что именно выполняется. Скрипт может вести себя по-разному в зависимости от того, качаете вы его или пайпите напрямую в bash — некоторые авторы вредоносов это учитывают. Скачанный файл будет выглядеть безобидно, а в реальном выполнении сделает что-то совсем другое.
Как надо делать:
Сначала скачать, потом читать, потом запускать.
curl -O https://example.com/install.sh
less install.sh
bash install.sh
Да, это три команды вместо одной. Зато вы знаете, что именно запускаете.
Ещё несколько вещей, которые стоит держать в голове 👇
sudo без понимания — зло. Перед тем как дать скрипту рут-права, убедитесь, что он реально их требует и вы понимаете зачем.
umask по умолчанию часто слишком мягкий. Проверьте командой umask — если видите 0022, новые файлы создаются с правами 644, а директории с 755. Для домашних каталогов лучше поставить 0077, тогда файлы будут доступны только вам.
SSH без пароля — это норм, но только если ключи хранятся правильно. Права на ~/.ssh должны быть 700, на authorized_keys — 600. Иначе SSH просто проигнорирует файл.
Проверяйте, кто слушает порты. Команда ss -tlnp покажет, какие процессы висят на каких портах. Иногда после установки какого-нибудь пакета неожиданно обнаруживается сервис, смотрящий наружу.
И последнее — AppArmor или SELinux. Многие отключают их сразу после установки системы, потому что они мешают. Но именно они ограничивают ущерб, если что-то пойдёт не так. Лучше потратить время на настройку профилей, чем потом разбираться с последствиями.
Безопасность — это не паранойя, это привычка 🛡️
📍 Подпишись на создателей: https://t.me/linuxexex
📰 Расследование о бандах грумеров опубликовано — всё хуже, чем вы думали
Британский депутат Руперт Лоу опубликовал масштабный независимый доклад о бандах грумеров в Великобритании. Доклад получил название «Расследование банд насильников» (The Rape Gang Inquiry), вышел 16 июня, насчитывает около 218 страниц и основан на показаниях выживших, судебных материалах и предыдущих расследованиях.
Лоу, возглавляющий движение Restore Britain (ранее — Reform UK), руководил расследованием. Финансирование шло за счёт публичного краудфандинга.
Согласно докладу, организованные банды насильников действовали как минимум в 149 районах местного самоуправления. При этом полиция, социальные службы, школы, медицинские учреждения и политики намеренно не защищали уязвимых девочек, что позволило подвергнуть около 250 000 из них многократным изнасилованиям, групповому насилию, торговле людьми, пыткам, принудительному обращению в другую веру — с пожизненными психологическими последствиями.
В докладе описывается чудовищное насилие на протяжении многих лет в таких городах, как Ротерем, Рочдейл, Телфорд и десятках других мест. Выжившие дали шокирующие показания о насилии, торговле людьми, наркотиках и пытках. Большинство насильников — мужчины пакистанского мусульманского происхождения. Банды намеренно выбирали уязвимых девочек из неблагополучных семей.
Источник (4chan /news/): https://boards.4chan.org/news/thread/1520026
📍 Подпишись на создателей: https://t.me/linuxexex
Британский депутат Руперт Лоу опубликовал масштабный независимый доклад о бандах грумеров в Великобритании. Доклад получил название «Расследование банд насильников» (The Rape Gang Inquiry), вышел 16 июня, насчитывает около 218 страниц и основан на показаниях выживших, судебных материалах и предыдущих расследованиях.
Лоу, возглавляющий движение Restore Britain (ранее — Reform UK), руководил расследованием. Финансирование шло за счёт публичного краудфандинга.
Согласно докладу, организованные банды насильников действовали как минимум в 149 районах местного самоуправления. При этом полиция, социальные службы, школы, медицинские учреждения и политики намеренно не защищали уязвимых девочек, что позволило подвергнуть около 250 000 из них многократным изнасилованиям, групповому насилию, торговле людьми, пыткам, принудительному обращению в другую веру — с пожизненными психологическими последствиями.
В докладе описывается чудовищное насилие на протяжении многих лет в таких городах, как Ротерем, Рочдейл, Телфорд и десятках других мест. Выжившие дали шокирующие показания о насилии, торговле людьми, наркотиках и пытках. Большинство насильников — мужчины пакистанского мусульманского происхождения. Банды намеренно выбирали уязвимых девочек из неблагополучных семей.
Источник (4chan /news/): https://boards.4chan.org/news/thread/1520026
📍 Подпишись на создателей: https://t.me/linuxexex
boards.4chan.org
/news/ - Grooming Gang Inquiry Released: It's Worse Than you Think - Current News - 4chan
Grooming Gang Inquiry Released: It's Worse Than you Think - "/news/ - Current News; is 4chan's board for current news.
Знаешь, откуда взялось название «Linux»?
Линус Торвальдс изначально хотел назвать своё ядро Freax — от слов free, freak и unix. Серьёзно. Именно под таким именем он и хранил файлы у себя на диске в 1991 году.
Но когда его друг Ари Лемке предоставил Линусу место на FTP-сервере Хельсинкского университета, чтобы опубликовать исходники, он без ведома Торвальдса назвал директорию linux. Ари счёл Freax слишком странным названием и самовольно использовал рабочее прозвище проекта — то, как Линус называл ядро в личной переписке.
Торвальдс поначалу был против. Он думал, что название Linux звучит слишком самонадеянно и эгоистично — типа называть проект своим именем. Но потом смирился. А дальше имя просто прижилось само собой — люди начали его использовать, и переименовывать что-либо уже не имело смысла.
Так что если бы не решение одного человека на FTP-сервере в Финляндии, мы сегодня могли бы запускать Freax, писать скрипты для Freax и спорить, произносить ли букву «x» на конце 😄
Маленькие случайные решения иногда меняют историю целой индустрии.
📍 Подпишись на создателей: https://t.me/linuxexex
Линус Торвальдс изначально хотел назвать своё ядро Freax — от слов free, freak и unix. Серьёзно. Именно под таким именем он и хранил файлы у себя на диске в 1991 году.
Но когда его друг Ари Лемке предоставил Линусу место на FTP-сервере Хельсинкского университета, чтобы опубликовать исходники, он без ведома Торвальдса назвал директорию linux. Ари счёл Freax слишком странным названием и самовольно использовал рабочее прозвище проекта — то, как Линус называл ядро в личной переписке.
Торвальдс поначалу был против. Он думал, что название Linux звучит слишком самонадеянно и эгоистично — типа называть проект своим именем. Но потом смирился. А дальше имя просто прижилось само собой — люди начали его использовать, и переименовывать что-либо уже не имело смысла.
Так что если бы не решение одного человека на FTP-сервере в Финляндии, мы сегодня могли бы запускать Freax, писать скрипты для Freax и спорить, произносить ли букву «x» на конце 😄
Маленькие случайные решения иногда меняют историю целой индустрии.
📍 Подпишись на создателей: https://t.me/linuxexex
Вот фишка, которую большинство узнаёт случайно спустя годы работы в терминале.
В bash и zsh есть встроенная замена подстрок прямо внутри переменных. Никаких sed, никаких awk — просто фигурные скобки и немного магии.
Допустим, у тебя есть переменная:
file="hello_world_2024.log"
Хочешь заменить первое вхождение подстроки:
echo ${file/world/linux}
→ hello_linux_2024.log
Хочешь заменить все вхождения сразу — ставишь двойной слеш:
str="aaa_bbb_aaa"
echo ${str//aaa/xxx}
→ xxx_bbb_xxx
Это работает прямо в присваивании, в цикле, в условии — везде, где живёт переменная.
Но это ещё не всё. Там целый маленький язык:
${var#prefix} — срезать короткий префикс
${var##prefix} — срезать длинный (жадный) префикс
${var%suffix} — срезать короткий суффикс
${var%%suffix} — срезать длинный суффикс
Пример из реальной жизни. Нужно сменить расширение у файла:
f="report.txt"
echo "${f%.txt}.pdf"
→ report.pdf
Или вытащить имя файла без пути (аналог basename, но без fork):
path="/home/user/docs/notes.md"
echo "${path##*/}"
→ notes.md
Или наоборот — только директорию (аналог dirname):
echo "${path%/*}"
→ /home/user/docs
Всё это работает без запуска отдельных процессов. В скриптах, где обрабатываются тысячи файлов в цикле, это реально ускоряет работу — каждый вызов basename или sed это fork, а встроенная замена это просто операция в памяти текущего шелла.
Ещё один приятный трюк — приведение регистра (zsh и bash 4+):
name="Hello World"
echo ${name,,} → hello world
echo ${name^^} → HELLO WORLD
echo ${name^} → Hello world (только первый символ)
На маках с дефолтным bash 3 это не работает, но если поставить нормальный bash через homebrew или пользоваться zsh — всё ок.
Почему об этом мало говорят? Потому что все сразу тянутся к sed и awk — они мощнее, документация лучше, примеры везде. А эта встроенщина выглядит как синтаксический шум и пугает новичков. Но как только привыкаешь — обратно не хочется.
Сохрани себе, пригодится в следующем скрипте 🐚
📍 Подпишись на создателей: https://t.me/linuxexex
В bash и zsh есть встроенная замена подстрок прямо внутри переменных. Никаких sed, никаких awk — просто фигурные скобки и немного магии.
Допустим, у тебя есть переменная:
file="hello_world_2024.log"
Хочешь заменить первое вхождение подстроки:
echo ${file/world/linux}
→ hello_linux_2024.log
Хочешь заменить все вхождения сразу — ставишь двойной слеш:
str="aaa_bbb_aaa"
echo ${str//aaa/xxx}
→ xxx_bbb_xxx
Это работает прямо в присваивании, в цикле, в условии — везде, где живёт переменная.
Но это ещё не всё. Там целый маленький язык:
${var#prefix} — срезать короткий префикс
${var##prefix} — срезать длинный (жадный) префикс
${var%suffix} — срезать короткий суффикс
${var%%suffix} — срезать длинный суффикс
Пример из реальной жизни. Нужно сменить расширение у файла:
f="report.txt"
echo "${f%.txt}.pdf"
→ report.pdf
Или вытащить имя файла без пути (аналог basename, но без fork):
path="/home/user/docs/notes.md"
echo "${path##*/}"
→ notes.md
Или наоборот — только директорию (аналог dirname):
echo "${path%/*}"
→ /home/user/docs
Всё это работает без запуска отдельных процессов. В скриптах, где обрабатываются тысячи файлов в цикле, это реально ускоряет работу — каждый вызов basename или sed это fork, а встроенная замена это просто операция в памяти текущего шелла.
Ещё один приятный трюк — приведение регистра (zsh и bash 4+):
name="Hello World"
echo ${name,,} → hello world
echo ${name^^} → HELLO WORLD
echo ${name^} → Hello world (только первый символ)
На маках с дефолтным bash 3 это не работает, но если поставить нормальный bash через homebrew или пользоваться zsh — всё ок.
Почему об этом мало говорят? Потому что все сразу тянутся к sed и awk — они мощнее, документация лучше, примеры везде. А эта встроенщина выглядит как синтаксический шум и пугает новичков. Но как только привыкаешь — обратно не хочется.
Сохрани себе, пригодится в следующем скрипте 🐚
📍 Подпишись на создателей: https://t.me/linuxexex
watch — команда, которую знают не все, но потом не могут без неё жить
Суть простая: watch запускает любую команду повторно с заданным интервалом и выводит результат прямо в терминале. Никаких скриптов с while true, никаких sleep — одна строчка и готово.
Базовый пример:
watch df -h
Теперь использование дискового пространства обновляется каждые 2 секунды. Видишь изменения в реальном времени.
Полезные флаги:
-n — задать интервал в секундах
watch -n 5 free -m
обновление памяти каждые 5 секунд
-d — подсвечивает изменения между обновлениями. Очень удобно когда следишь за логами или счётчиками — сразу видно что именно поменялось
-t — убирает заголовок с названием команды и временем. Полезно если хочется чистый вывод
--no-title — то же самое в длинной форме
Реальные сценарии где это спасает:
Следишь за очередью задач:
watch -d -n 2 'ls -lh /var/spool/somequeue'
Мониторинг сетевых соединений:
watch -n 1 'ss -tulnp'
Наблюдаешь за процессами без htop:
watch -n 2 'ps aux --sort=-%cpu | head -15'
Ждёшь когда файл появится в директории:
watch -d ls /tmp/results/
Проверяешь температуру CPU:
watch -n 3 'cat /sys/class/thermal/thermal_zone0/temp'
Фишка которую мало кто знает — флаг -g. Он завершает watch автоматически когда вывод команды меняется. Запустил, дождался события, вышел. Удобно в скриптах.
watch -g -n 1 'cat /proc/loadavg'
Как только нагрузка изменится — watch завершится и можно делать что-то дальше.
Ограничение одно: watch не понимает алиасы из твоего .bashrc. Если нужен алиас — оборачивай в bash -c:
watch -n 2 bash -c 'твоя_команда_с_алиасом'
Инструмент простой, без магии, но экономит кучу времени когда надо за чем-то понаблюдать не городя полноценный мониторинг. Ставишь, смотришь, идёшь дальше. 👀
📍 Подпишись на создателей: https://t.me/linuxexex
Суть простая: watch запускает любую команду повторно с заданным интервалом и выводит результат прямо в терминале. Никаких скриптов с while true, никаких sleep — одна строчка и готово.
Базовый пример:
watch df -h
Теперь использование дискового пространства обновляется каждые 2 секунды. Видишь изменения в реальном времени.
Полезные флаги:
-n — задать интервал в секундах
watch -n 5 free -m
обновление памяти каждые 5 секунд
-d — подсвечивает изменения между обновлениями. Очень удобно когда следишь за логами или счётчиками — сразу видно что именно поменялось
-t — убирает заголовок с названием команды и временем. Полезно если хочется чистый вывод
--no-title — то же самое в длинной форме
Реальные сценарии где это спасает:
Следишь за очередью задач:
watch -d -n 2 'ls -lh /var/spool/somequeue'
Мониторинг сетевых соединений:
watch -n 1 'ss -tulnp'
Наблюдаешь за процессами без htop:
watch -n 2 'ps aux --sort=-%cpu | head -15'
Ждёшь когда файл появится в директории:
watch -d ls /tmp/results/
Проверяешь температуру CPU:
watch -n 3 'cat /sys/class/thermal/thermal_zone0/temp'
Фишка которую мало кто знает — флаг -g. Он завершает watch автоматически когда вывод команды меняется. Запустил, дождался события, вышел. Удобно в скриптах.
watch -g -n 1 'cat /proc/loadavg'
Как только нагрузка изменится — watch завершится и можно делать что-то дальше.
Ограничение одно: watch не понимает алиасы из твоего .bashrc. Если нужен алиас — оборачивай в bash -c:
watch -n 2 bash -c 'твоя_команда_с_алиасом'
Инструмент простой, без магии, но экономит кучу времени когда надо за чем-то понаблюдать не городя полноценный мониторинг. Ставишь, смотришь, идёшь дальше. 👀
📍 Подпишись на создателей: https://t.me/linuxexex
📰 can humans give orcas hands via genetic engineering?
Можно ли дать косаткам руки с помощью генной инженерии?
Создали бы косатки космическую цивилизацию, если бы у них были руки?
Источник (4chan /sci/): https://boards.4chan.org/sci/thread/17024830
📍 Подпишись на создателей: https://t.me/linuxexex
Можно ли дать косаткам руки с помощью генной инженерии?
Создали бы косатки космическую цивилизацию, если бы у них были руки?
Источник (4chan /sci/): https://boards.4chan.org/sci/thread/17024830
📍 Подпишись на создателей: https://t.me/linuxexex
boards.4chan.org
/sci/ - can humans give orcas hands via genetic engineerin - Science & Math - 4chan
can humans give orcas hands via genetic engineering? - "/sci/ - Science & Math" is 4chan's board for the discussion of science and math.
Один и тот же ноутбук, четыре дистрибутива. Смотрим, кто как себя ведёт 🖥️
Взял старый ThinkPad X220: Core i5-2520M, 8 ГБ RAM, SSD 120 ГБ. Задача — поставить систему, настроить окружение разработчика (git, Python, Docker, VSCode), и замерить что получилось. Без лирики, только факты.
Ubuntu 22.04 LTS
Установка — 12 минут, всё нашлось само. Docker из коробки ставится через apt без танцев. Python 3.10 есть сразу. Но система жрёт около 900 МБ RAM в простое — это Gnome с кучей фоновых служб. Snap раздражает: VSCode через snap стартует на 3-4 секунды дольше, чем через deb. В целом — приходишь и работаешь, не думаешь о системе.
Fedora 38
Установка — 14 минут. SELinux включён по умолчанию, и первые полчаса ты с ним знакомишься вплотную, когда Docker отказывается монтировать volumes. Решается через `setsebool -P container_manage_cgroup 1` и ещё пара команд. RAM в простое — ~750 МБ. Dnf работает медленнее apt субъективно, но зато пакеты свежее. Fedora — это Ubuntu для тех, кто хочет чуть поближе к ядру, но не готов страдать по-настоящему.
Arch Linux
Установка — 40 минут если знаешь что делаешь, и это с archinstall. RAM в простое — 380 МБ (поставил i3, минималистично). Всё свежее, AUR закрывает любые пробелы. Docker, git, Python, VSCode — всё ставится ровно в той версии, которая нужна. Но: обновление через полгода сломало nvidia-драйвер, пришлось разбираться. Arch — это когда ты хочешь контролировать каждый байт и готов платить временем.
Debian 12 Bookworm
Установка — 10 минут, самая быстрая. RAM в простое — ~600 МБ. Стабильность железобетонная. Но Python тут 3.11, Docker из официального репо подключается вручную, и некоторые пакеты ощутимо старее. На продакшн-сервере — идеал. На рабочей машине разработчика — немного скучно и иногда приходится тянуть что-то из backports или собирать руками.
Итого по RAM в простое:
Arch (i3) — 380 МБ
Debian (Xfce) — 600 МБ
Fedora (Gnome) — 750 МБ
Ubuntu (Gnome) — 900 МБ
Время до рабочего окружения (установка + настройка dev-инструментов):
Ubuntu — ~25 минут
Debian — ~35 минут
Fedora — ~40 минут с SELinux
Arch — ~70 минут
Вывод простой: если нужно просто работать — Ubuntu или Debian. Если нравится держать руку на пульсе — Fedora. Если хочешь систему под себя и не жалко времени — Arch.
Какой у вас основной дистр на рабочей машине? 👇
📍 Подпишись на создателей: https://t.me/linuxexex
Взял старый ThinkPad X220: Core i5-2520M, 8 ГБ RAM, SSD 120 ГБ. Задача — поставить систему, настроить окружение разработчика (git, Python, Docker, VSCode), и замерить что получилось. Без лирики, только факты.
Ubuntu 22.04 LTS
Установка — 12 минут, всё нашлось само. Docker из коробки ставится через apt без танцев. Python 3.10 есть сразу. Но система жрёт около 900 МБ RAM в простое — это Gnome с кучей фоновых служб. Snap раздражает: VSCode через snap стартует на 3-4 секунды дольше, чем через deb. В целом — приходишь и работаешь, не думаешь о системе.
Fedora 38
Установка — 14 минут. SELinux включён по умолчанию, и первые полчаса ты с ним знакомишься вплотную, когда Docker отказывается монтировать volumes. Решается через `setsebool -P container_manage_cgroup 1` и ещё пара команд. RAM в простое — ~750 МБ. Dnf работает медленнее apt субъективно, но зато пакеты свежее. Fedora — это Ubuntu для тех, кто хочет чуть поближе к ядру, но не готов страдать по-настоящему.
Arch Linux
Установка — 40 минут если знаешь что делаешь, и это с archinstall. RAM в простое — 380 МБ (поставил i3, минималистично). Всё свежее, AUR закрывает любые пробелы. Docker, git, Python, VSCode — всё ставится ровно в той версии, которая нужна. Но: обновление через полгода сломало nvidia-драйвер, пришлось разбираться. Arch — это когда ты хочешь контролировать каждый байт и готов платить временем.
Debian 12 Bookworm
Установка — 10 минут, самая быстрая. RAM в простое — ~600 МБ. Стабильность железобетонная. Но Python тут 3.11, Docker из официального репо подключается вручную, и некоторые пакеты ощутимо старее. На продакшн-сервере — идеал. На рабочей машине разработчика — немного скучно и иногда приходится тянуть что-то из backports или собирать руками.
Итого по RAM в простое:
Arch (i3) — 380 МБ
Debian (Xfce) — 600 МБ
Fedora (Gnome) — 750 МБ
Ubuntu (Gnome) — 900 МБ
Время до рабочего окружения (установка + настройка dev-инструментов):
Ubuntu — ~25 минут
Debian — ~35 минут
Fedora — ~40 минут с SELinux
Arch — ~70 минут
Вывод простой: если нужно просто работать — Ubuntu или Debian. Если нравится держать руку на пульсе — Fedora. Если хочешь систему под себя и не жалко времени — Arch.
Какой у вас основной дистр на рабочей машине? 👇
📍 Подпишись на создателей: https://t.me/linuxexex