Подводные камни при работе с файлами в Linux с примерами на Python
Работа с файлами в Python кажется простой — open, read, write. Но на практике, особенно в системах с высокими требованиями к отказоустойчивости, стабильности и логированию, за банальными строками кода может скрываться целый мир проблем.
В этой статье разобрано, как знание внутренностей Linux может помочь избежать потерь данных и облегчить отладку. Все примеры будут на Python, но применимы к любым языкам, работающим через POSIX-интерфейсы.
Работа с файлами в Python кажется простой — open, read, write. Но на практике, особенно в системах с высокими требованиями к отказоустойчивости, стабильности и логированию, за банальными строками кода может скрываться целый мир проблем.
В этой статье разобрано, как знание внутренностей Linux может помочь избежать потерь данных и облегчить отладку. Все примеры будут на Python, но применимы к любым языкам, работающим через POSIX-интерфейсы.
👍4
Docker на каждый день: Ключевые команды в одной статье-шпаргалке
Забудьте о том, что Docker — это некий таинственный инструмент исключительно для DevOps-инженеров. В современном мире разработки Docker стал таким же незаменимым швейцарским ножом, как Git или ваш любимый редактор кода. Он позволяет любому разработчику писать код, который будет одинаково работать на машине коллеги, на тестовом стенде и в продакшене, забыв о кошмаре "а у меня на машине все работает". Если вы еще не погрузились в мир контейнеризации или вам нужен удобный источник команд, эта статья — ваш экспресс-билет.
Забудьте о том, что Docker — это некий таинственный инструмент исключительно для DevOps-инженеров. В современном мире разработки Docker стал таким же незаменимым швейцарским ножом, как Git или ваш любимый редактор кода. Он позволяет любому разработчику писать код, который будет одинаково работать на машине коллеги, на тестовом стенде и в продакшене, забыв о кошмаре "а у меня на машине все работает". Если вы еще не погрузились в мир контейнеризации или вам нужен удобный источник команд, эта статья — ваш экспресс-билет.
👍5🔥4🤡2
Paranoia Mode: подборка инструментов для приватной и безопасной работы в Linux
В этой статье рассказывают о нескольких проверенных методов и технологий для минимизации цифрового следа — без лишней паранойи, но с пониманием, как все устроено.
В этой статье рассказывают о нескольких проверенных методов и технологий для минимизации цифрового следа — без лишней паранойи, но с пониманием, как все устроено.
👍4🔥3
Рассказ о том, как rclone в 4 раза быстрее rsync синхронизирует файлы по сети
Перевод статьи о преимуществах rclone в части возможностей параллельной передачи файлов.
Перевод статьи о преимуществах rclone в части возможностей параллельной передачи файлов.
👍5🔥3
Kubernetes Best Practices I Wish I Had Known Before
В этой статье автор рассказывает о некоторых важных рекомендациях по Kubernetes. Они основаны на его многолетнем опыте работы с Kubernetes в проде. Это как шпаргалка по Kubernetes, которую желательно иметь с первого дня эксплуатации k8s.
В этой статье автор рассказывает о некоторых важных рекомендациях по Kubernetes. Они основаны на его многолетнем опыте работы с Kubernetes в проде. Это как шпаргалка по Kubernetes, которую желательно иметь с первого дня эксплуатации k8s.
👍3🔥3🤡1
Как работает DNS в Linux. Часть 1: от getaddrinfo до resolv.conf
Когда мы вводим в браузере имя сервера или доменное имя сайта, выполняем ping или запускаем любое удаленное приложение, операционная система должна преобразовать указанные имена в IP-адреса. Этот процесс называется разрешением доменного имени. На первый взгляд он может показаться весьма прозрачным, однако за ним скрывается многослойный механизм.
Данная статья — начало серии, посвященной низкоуровневой архитектуре разрешения имен. Поговорим о том, как устроен этот процесс в Linux на уровне ядра, различных библиотек C и системных вызовов.
Когда мы вводим в браузере имя сервера или доменное имя сайта, выполняем ping или запускаем любое удаленное приложение, операционная система должна преобразовать указанные имена в IP-адреса. Этот процесс называется разрешением доменного имени. На первый взгляд он может показаться весьма прозрачным, однако за ним скрывается многослойный механизм.
Данная статья — начало серии, посвященной низкоуровневой архитектуре разрешения имен. Поговорим о том, как устроен этот процесс в Linux на уровне ядра, различных библиотек C и системных вызовов.
👍10🔥5
Организация собственной библиотеки на сервере с веб-интерфейсом
Несколько лет назад к автору статьи обратился коллега с просьбой помочь собрать домашний NAS. Он хотел не просто хранилище, а универсальное решение, в том числе — для организации библиотеки. Они настроили DLNA, RAID и другое, но подходящего решения именно для книг тогда не нашли. Calibre был на слуху, но его интерфейс показался неудобным, и коллега ограничился SMB-шарой.
В этой статье рассказано как развернуть на сервере Linux библиотеку на базе Calibre-Web и Kavita.
Несколько лет назад к автору статьи обратился коллега с просьбой помочь собрать домашний NAS. Он хотел не просто хранилище, а универсальное решение, в том числе — для организации библиотеки. Они настроили DLNA, RAID и другое, но подходящего решения именно для книг тогда не нашли. Calibre был на слуху, но его интерфейс показался неудобным, и коллега ограничился SMB-шарой.
В этой статье рассказано как развернуть на сервере Linux библиотеку на базе Calibre-Web и Kavita.
👍4🔥1🤡1
Windows Subsystem for Linux теперь open source. Как WSL объединяет Windows и Linux
В мае 2025 года Microsoft сделала важный шаг: исходный код Windows Subsystem for Linux (WSL) выложили на GitHub под лицензией MIT. Авторы проекта подчеркнули, что это решение открывает новые возможности для разработчиков. В статье обсуждается, что такое WSL, почему переход к open source так важен и как эта подсистема сближает Windows и Linux.
В мае 2025 года Microsoft сделала важный шаг: исходный код Windows Subsystem for Linux (WSL) выложили на GitHub под лицензией MIT. Авторы проекта подчеркнули, что это решение открывает новые возможности для разработчиков. В статье обсуждается, что такое WSL, почему переход к open source так важен и как эта подсистема сближает Windows и Linux.
🔥10👍4
Конец Windows 10 — лучший подарок для десктопного Linux
14 октября 2025 года Microsoft перестанет выпускать новые фичи и обновления безопасности для Windows 10. Окончание поддержки самой популярной операционной системы в мире затронет 240 млн компьютеров. В этой статье об инициативной группе «Конец десятки», которая продвигает Linux в массы (без привязки к дистрибутиву) и предлагает простые способы его установки.
14 октября 2025 года Microsoft перестанет выпускать новые фичи и обновления безопасности для Windows 10. Окончание поддержки самой популярной операционной системы в мире затронет 240 млн компьютеров. В этой статье об инициативной группе «Конец десятки», которая продвигает Linux в массы (без привязки к дистрибутиву) и предлагает простые способы его установки.
😁8😢6👎4❤2💩2
Как мигрировать большую 10+ Тб базу 1С из MS SQL в PostgreSQL и уложиться в трехчасовое окно
В этом посте про миграцию большой базы данных 1С Предприятие с MS SQL Server на PostgreSQL. Тема перехода на PostgreSQL весьма популярна, и почти на каждой конференции по PG обязательно есть парочка докладов на эту тему. Читать на Хабре.
В этом посте про миграцию большой базы данных 1С Предприятие с MS SQL Server на PostgreSQL. Тема перехода на PostgreSQL весьма популярна, и почти на каждой конференции по PG обязательно есть парочка докладов на эту тему. Читать на Хабре.
👍7🔥6
Ansible, bash и я: три мушкетёра в мире автоматизации управления компьютерами на Linux
Задача: в кратчайшие сроки перевести более 1000 рабочих мест сотрудников и студентов на отечественное ПО и без ручного труда. В статье описано решени этой задачи.
Задача: в кратчайшие сроки перевести более 1000 рабочих мест сотрудников и студентов на отечественное ПО и без ручного труда. В статье описано решени этой задачи.
👍7🤮1
Embedded Linux для начинающих (Часть первая)
Автор описывает свой опыт решения задачи по сборке и запуску Linux на одноплатном ПК. Читать дальше на Хабре.
Автор описывает свой опыт решения задачи по сборке и запуску Linux на одноплатном ПК. Читать дальше на Хабре.
👍4🤮1👌1💊1
5 малоизвестных команд для Linux
tldr
Если набрать, например,
Например:
timeout
Команда timeout позволяет выполнять команду в течение определенного времени. Если время истечет, тайм-аут убьет процесс, так что скрипт не будет выполняться вечно. Пара примеров:
ncdu
Инструмент ncdu похож на du, но с текстовым интерактивным интерфейсом, который позволяет проверять использование диска и удалять мусор на месте.
fd
Это удобная альтернатива find с простым синтаксисом (больше никаких длинных флагов или странных шаблонов). Несколько примеров:
trash
Если вы быстро набирали rm и удаляли не тот файл (или, что еще хуже, целую папку), вы знаете, как жесток Linux в отношении удаления файлов. Кнопки «отменить» нет. Если что-то исчезло, значит, оно действительно исчезло.
Вот тут-то и пригодится команда trash. Она работает так же, как rm, но вместо того, чтобы навсегда удалять файлы, она отправляет их в корзину, откуда их можно легко восстановить позже. Несколько примеров:
@usr_bin_linux
tldr
Если набрать, например,
man tar
, вы получите труднопонятную простыню текста. В отличие, от man
, результат вывода команды ниже более понятен.tldr [command]
Например:
tldr tar
# Create a .tar archive
tar cf archive.tar file1 file2
# Extract a .tar.gz archive
tar xzf archive.tar.gz
# List contents of a tar file
tar tf archive.tar
timeout
Команда timeout позволяет выполнять команду в течение определенного времени. Если время истечет, тайм-аут убьет процесс, так что скрипт не будет выполняться вечно. Пара примеров:
timeout 5s ping google.com
timeout 30s ./myscript.sh
ncdu
Инструмент ncdu похож на du, но с текстовым интерактивным интерфейсом, который позволяет проверять использование диска и удалять мусор на месте.
ncdu
--- /home/user ------------------------
. 3.1 GiB [##########] Downloads
1.2 GiB [###.......] Videos
800.0 MiB [##........] Projects
450.0 MiB [#.........] Documents
fd
Это удобная альтернатива find с простым синтаксисом (больше никаких длинных флагов или странных шаблонов). Несколько примеров:
fd notes.txt
fd -e py
fd config /etc
trash
Если вы быстро набирали rm и удаляли не тот файл (или, что еще хуже, целую папку), вы знаете, как жесток Linux в отношении удаления файлов. Кнопки «отменить» нет. Если что-то исчезло, значит, оно действительно исчезло.
Вот тут-то и пригодится команда trash. Она работает так же, как rm, но вместо того, чтобы навсегда удалять файлы, она отправляет их в корзину, откуда их можно легко восстановить позже. Несколько примеров:
trash filename.txt
trash file1.txt file2.txt folder/
trash-restore
@usr_bin_linux
👍25🔥12❤2🤣1🙈1
Не пора ли Docker свалить в закат? (заметка на подумать перед началом рабочей недели)
Основная проблема Docker — это наличие демона. Последнее означает единую точку отказа и необходимость запуска от рута. А вот, например, containerd ничего из этого не требуется. Есть ещё podman, которому не требуется демон и права рута для запуска. А еще его команды полностью совместимы с Docker.
На что я бы поменял Docker:
🚀 для локальной разработки можно использовать Podman, Colima или NerdCTL. Они легкие, быстрые и не требуют Docker Desktop.
🚀 для конвейеров CI/CD containerd. Он более эффективен, лучше интегрируется с Kubernetes и не зависит от демона.
🚀 для Kubernetes runtime можно юзать CRI-O или containerd. Оба Kubernetes-native и не требуют дополнительных прокладок.
🚀 для пользователей рабочих станций отличными альтернативами станут Rancher Desktop (если нужен графический интерфейс) или Podman (для управления через CLI).
❗️ Дорогие читатели канала, расскажите в комментариях, что вы думаете о перспективах Docker. Ещё не начинали искать замену?
Основная проблема Docker — это наличие демона. Последнее означает единую точку отказа и необходимость запуска от рута. А вот, например, containerd ничего из этого не требуется. Есть ещё podman, которому не требуется демон и права рута для запуска. А еще его команды полностью совместимы с Docker.
На что я бы поменял Docker:
🚀 для локальной разработки можно использовать Podman, Colima или NerdCTL. Они легкие, быстрые и не требуют Docker Desktop.
🚀 для конвейеров CI/CD containerd. Он более эффективен, лучше интегрируется с Kubernetes и не зависит от демона.
🚀 для Kubernetes runtime можно юзать CRI-O или containerd. Оба Kubernetes-native и не требуют дополнительных прокладок.
🚀 для пользователей рабочих станций отличными альтернативами станут Rancher Desktop (если нужен графический интерфейс) или Podman (для управления через CLI).
❗️ Дорогие читатели канала, расскажите в комментариях, что вы думаете о перспективах Docker. Ещё не начинали искать замену?
🔥15👍11☃3🤡3❤2
Несколько интересных утилит Linux, которые могут заменить те, что вы используете каждый день
🚀 Забытые планировщики
или
🚀 Запуск служб «на лету» с
🚀 Автоматическая оптимизация производительности с
🚀 Защита от удаления с
🚀 Забытые планировщики
at
и batch
, с которыми не нужно редактировать файлы как с cron
.echo "shutdown -h now" | at 11:00 PM
или
echo "updatedb" | batch
🚀 Запуск служб «на лету» с
systemd-run
. Подходит для тестирования служб или планирования задач по обслуживанию с полной поддержкой systemd. Запуск без создания файла службы:systemd-run --unit=backup-job tar -czf /backup/home.tar.gz /home
🚀 Автоматическая оптимизация производительности с
tuned
. Динамически регулирует параметры системы в зависимости от типа рабочей нагрузки (виртуализация, пропускная способность, задержка и т. д.). Предварительно изучите принцип работы утилиты.dnf install tuned
tuned-adm profile throughput-performance
🚀 Защита от удаления с
chattr
. Даже root не сможет удалить или изменить файл пока не удалить неизменяемый бит.chattr +i /etc/passwd
👍17❤1🔥1🤔1
kpatch
kpatch — это утилита для исправления ядра Linux, которая позволяет патчить работающее ядро без перезагрузки или перезапуска каких-либо процессов. Она позволяет системным администраторам немедленно применять критические исправления безопасности к ядру, не дожидаясь завершения длительных задач, выхода пользователей из системы или запланированных окон перезагрузки.
Репыч на Гитхабе
kpatch — это утилита для исправления ядра Linux, которая позволяет патчить работающее ядро без перезагрузки или перезапуска каких-либо процессов. Она позволяет системным администраторам немедленно применять критические исправления безопасности к ядру, не дожидаясь завершения длительных задач, выхода пользователей из системы или запланированных окон перезагрузки.
Репыч на Гитхабе
🔥9👍5❤3🤝1
Сбор событий Linux: есть цель – ищем путь
В этой статье рассматриваются подходы к тонкой настройке журналирования в Linux, а также события и их назначение, которые записываются в определенные системные журналы. Особенно полезно, если вы занимаетесь инфобезом.
В этой статье рассматриваются подходы к тонкой настройке журналирования в Linux, а также события и их назначение, которые записываются в определенные системные журналы. Особенно полезно, если вы занимаетесь инфобезом.
🔥3👍2🤣2
О ненависти к российским дистрибутивам Linux
Автор статьи рассуждает на тему ненависти к российским дистрам Linux. Предлагает посмотреть на иностранные Rocky Linux, RHEV и прочие форки. Типа а почему это не хейтят их забугорных собратьев? Мое мнение таково: весь хейт связан с тем, что во многих организациях использование российских ОС является принудительным в госструктурах. Коли б не этот факт, рынок бы сам порешал.
А вы считаете отечественные ОС достойной заменой того же коммерческого RedHat или даже заменой иностранных ОС при условии бесплатного использования?
Автор статьи рассуждает на тему ненависти к российским дистрам Linux. Предлагает посмотреть на иностранные Rocky Linux, RHEV и прочие форки. Типа а почему это не хейтят их забугорных собратьев? Мое мнение таково: весь хейт связан с тем, что во многих организациях использование российских ОС является принудительным в госструктурах. Коли б не этот факт, рынок бы сам порешал.
А вы считаете отечественные ОС достойной заменой того же коммерческого RedHat или даже заменой иностранных ОС при условии бесплатного использования?
🤡28👍9🖕5🤨3❤1
Как работает DNS в Linux. Часть 2: все уровни DNS-кэширования
В первой части было разобрано, как в Linux работает процесс разрешения имен — от вызова getaddrinfo() до получения IP-адреса. Однако если бы каждый вызов требовал нового DNS-запроса, это было бы неэффективно и сильно нагружало как систему, так и сеть. Поэтому используется кэширование.
Кэширование DNS может быть везде — в glibc, в systemd-resolved, в браузерах и даже в приложениях на Go. Кэш помогает увеличить скорость работы, но создает дополнительные сложности при отладке. Например: вы меняете DNS-запись, но сервер продолжает ходить по старому IP-адресу. Или, Dig показывает правильный адрес, а curl всё равно подключается к устаревшему.
В этой статье разобраны различные уровни кэшей самой системы, приложений и языков программирования, контейнеров, прокси. А также их мониторинг и сброс.
В первой части было разобрано, как в Linux работает процесс разрешения имен — от вызова getaddrinfo() до получения IP-адреса. Однако если бы каждый вызов требовал нового DNS-запроса, это было бы неэффективно и сильно нагружало как систему, так и сеть. Поэтому используется кэширование.
Кэширование DNS может быть везде — в glibc, в systemd-resolved, в браузерах и даже в приложениях на Go. Кэш помогает увеличить скорость работы, но создает дополнительные сложности при отладке. Например: вы меняете DNS-запись, но сервер продолжает ходить по старому IP-адресу. Или, Dig показывает правильный адрес, а curl всё равно подключается к устаревшему.
В этой статье разобраны различные уровни кэшей самой системы, приложений и языков программирования, контейнеров, прокси. А также их мониторинг и сброс.
👍9🔥3🤮1
Получаем root через iptables
Iptables — это утилита пользовательского пространства в Linux, используемая для настройки правил фильтрации пакетов в брандмауэре ядра Linux, называемом netfilter. По сути, это инструмент командной строки, позволяющий администраторам управлять обработкой сетевого трафика системой.
У iptables есть параметр ‑modprobe, предназначенный для загрузки всех необходимых модулей при добавлении правил в цепочку. А вот дальше уже дело техники.
Iptables — это утилита пользовательского пространства в Linux, используемая для настройки правил фильтрации пакетов в брандмауэре ядра Linux, называемом netfilter. По сути, это инструмент командной строки, позволяющий администраторам управлять обработкой сетевого трафика системой.
У iptables есть параметр ‑modprobe, предназначенный для загрузки всех необходимых модулей при добавлении правил в цепочку. А вот дальше уже дело техники.
👍7🔥6🤡4❤1
Bash vs Python: битва, где нет проигравших
В мире автоматизации часто возникает вопрос: писать скрипт на Bash или на Python? Оба инструмента подходят отлично, но принципиально разные. Bash — больше про "скоропись", для системных задач, где важна скорость и краткость. Python же — универсальный язык, который намного лучше справляется со сложной логикой и структурами данных. Но когда лучше выбрать один, а когда - другой?
Некоторые задачи в Bash решаются одной строкой, когда же на Python потребуется десяток строк кода. При усложнении сценария - Bash превращается в головоломку из awk, sed и прочих, что значительно усложняет поддержку. В этой статье сравниваются подходы и определяется, когда и какой язык лучше использовать.
В мире автоматизации часто возникает вопрос: писать скрипт на Bash или на Python? Оба инструмента подходят отлично, но принципиально разные. Bash — больше про "скоропись", для системных задач, где важна скорость и краткость. Python же — универсальный язык, который намного лучше справляется со сложной логикой и структурами данных. Но когда лучше выбрать один, а когда - другой?
Некоторые задачи в Bash решаются одной строкой, когда же на Python потребуется десяток строк кода. При усложнении сценария - Bash превращается в головоломку из awk, sed и прочих, что значительно усложняет поддержку. В этой статье сравниваются подходы и определяется, когда и какой язык лучше использовать.
👍6🔥5🥴2