Чем service отличается от systemctl
Сравниваем команды service и systemctl для управления службами Linux. Через strace проверяем вызов systemctl, вспоминаем SysVinit и Upstart и перечисляем альтернативы для OpenRC, runit, s6 и Supervisor.
BashDays / инженерное медиа
Статьи об администрировании Linux, инфраструктуре, информационной безопасности, автоматизации и разработке — с реальными примерами и без пересказа документации.
Главная статья
Сравниваем команды service и systemctl для управления службами Linux. Через strace проверяем вызов systemctl, вспоминаем SysVinit и Upstart и перечисляем альтернативы для OpenRC, runit, s6 и Supervisor.
Форум Bashdays
Читают сейчас
Сравниваем команды service и systemctl для управления службами Linux. Через strace проверяем вызов systemctl, вспоминаем SysVinit и Upstart и …
Сравниваем пакетные менеджеры Snap и APT в Linux. Разбираем переносимость пакетов между дистрибутивами, песочницу, автоматические обновления, …
Добавляем и удаляем задания cron прямо из Bash-скрипта. Используем уникальные комментарии для идентификации строк crontab, функции ADD_CRON_TASK и …
Ищем одинаковые файлы в Linux с помощью fdupes и удаляем дубликаты в интерактивном или автоматическом режиме. Разбираем ключи `-r`, `-d`, `-N` и …
Разбираемся, чем заменить try/catch в Bash с помощью логического оператора `||`, группировки команд и проверки кода возврата. Показываем практический …
Разбираем сопроцессы `coproc`, появившиеся в Bash 4, и их отличие от обычных фоновых заданий. Показываем синтаксис запуска, массив дескрипторов …
Показываем, почему алиасы из `.bashrc` не работают в обычном Bash-скрипте и как включить интерактивный режим ключом `-i`. Сравниваем этот подход с …
Проверяем Linux-сервер с помощью LinPEAS и ищем ошибки конфигурации, SUID-файлы и другие пути повышения привилегий. Показываем запуск без установки …
Знакомимся с vlock для блокировки виртуальной консоли Linux без графического окружения. Разбираем блокировку одной или всех консолей, защиту от SysRq, …
Тестируем изменения systemd-юнитов через временное переопределение `systemctl edit --runtime`. Показываем выбор редактора, расположение override в …
Разбираемся, чем отличаются операторы `&&`, `;` и `||` при связывании команд в Bash. Показываем влияние кодов возврата, короткого замыкания и режима …
Разбираемся с ограничениями длины SPF-записи и количеством DNS-запросов при её проверке. Заменяем длинный перечень IP-адресов сетями CIDR, проверяем …
Используем whois и ipcalc для определения сетей владельца IP-адреса и преобразования диапазонов NetRange или inetnum в CIDR. Готовим подсети для …
Ищем причины отказа SSH-аутентификации по ключам через журнал сервера и `tail`. Разбираем права на authorized_keys, неверные ключи, типовые сообщения …
Отключаем getty на локальных TTY Linux, сохраняя удалённый SSH-доступ по ключам. Показываем команды systemctl, последствия для физической консоли и …
Практическое руководство по nethogs для мониторинга сетевого трафика Linux в реальном времени. Разбираем установку, поиск процессов, перегружающих …
Разбираем двоичное представление букв ASCII и отличие верхнего регистра от нижнего в шестом бите. Меняем регистр через XOR и сравниваем подход со …
Проверяем поведение команды `cd //` в Linux и выясняем, почему оболочка сохраняет двойной слеш. Разбираем требования POSIX, историческую совместимость …
Решаем классическую задачу о восьми ферзях средствами AWK и вложенных циклов. Разбираем проверку горизонталей и диагоналей, ограничение оператора …
Разбираем Magic SysRq — низкоуровневые команды ядра Linux для зависшей системы. Показываем сочетания для синхронизации, перемонтирования файловых …
Разбираемся, почему команда history иногда показывает звёздочку рядом с записью Bash. Пошагово воспроизводим изменение строки истории, откатываем …
Выясняем, почему команда kill -l не показывает сигналы 32 и 33 в Linux. Разбираем резервирование сигналов библиотекой glibc, потоки NPTL и диапазон …
Разбираем массив FUNCNAME и получаем имя текущей функции внутри Bash-скрипта. Показываем стек вызовов, аналог funcstack в Zsh и связанные переменные …
Пошаговый способ зарегистрировать новую учётную запись GitLab из России через постоянный ящик Putsbox и Tor Browser. Разбираем подтверждение почты, …
Разбираемся, зачем Linux хранит файловые данные в памяти и что делает команда sync перед записью на диск. Показываем варианты очистки page cache, …
Настраиваем Git-хук pre-commit для автоматической проверки Bash-скриптов через ShellCheck. В качестве бонуса адаптируем тот же подход для …
Разбираемся, можно ли применить обновление ядра Linux без обычной перезагрузки сервера. Сравниваем kexec, Live Patching и KernelCare, а также …
Добавляем в чистый Bash автоподсказки и подсветку команд с помощью BLE.sh. Затем устанавливаем oh-my-posh, подключаем темы оформления через профиль …
Показываем, как утилита basenc из GNU coreutils кодирует UTF-8-текст в двоичное представление и возвращает его обратно. Разбираем параметры base2msbf, …
Сравниваем два бесконечных цикла Bash — с командами : и true. Объясняем одинаковый код возврата, роль пустой команды и наследие Bourne Shell, а также …
Разбираемся, зачем Debian и Ubuntu требуют установить `build-essential` перед сборкой программ. Показываем, какие компиляторы, библиотеки и …
Сравниваем современную подстановку `$(command)` и устаревшие обратные кавычки в Bash. На примерах показываем проблемы вложенности, экранирования и …
Скрываем курсор на время выполнения команды и возвращаем его перед выводом Bash prompt. Разбираем `PROMPT_COMMAND`, псевдосигнал DEBUG, `trap` и …
Скачиваем файл без curl и wget через встроенное устройство `/dev/tcp` в Bash. Разбираем HTTP-запрос, файловый дескриптор и ограничения прямого …
Решаем задачу нумерации строк одним процессом sed вместо связки из двух вызовов. Используем команду `=` и управляющие ANSI-последовательности для …
Подключаем ShellCheck для статического анализа Bash-скриптов и поиска ошибок до запуска. Разбираем установку, базовую проверку, отчёты SC-кодов и …
Ограничиваем число параллельных фоновых заданий в Bash без GNU Parallel. Скрипт использует `nproc`, `jobs`, цикл ожидания и `wait`, чтобы равномерно …
Автоматизируем запись терминала с помощью VHS и сценария `.tape`. Настраиваем размер кадра и команды, запускаем генерацию GIF в Docker и публикуем …
Исследуем заголовок tar-архива через hexdump и смотрим, где сохраняются UID, GID, имя владельца и группа. Проверяем `--owner`, `--group` и поведение …
Знакомимся с Bandit от OverTheWire — консольной игрой, где уровни проходятся через SSH и команды Linux. Разбираем принцип игры, пользу для отладки и …
Пятиминутка стабильности
Из логов айтишной жизни
Если дети любят громко и безудержро комментировать события, а потом вырастают молчунами, то зачем спортивными коммертаторами и тифлокомментаторами берут работать взрослых?
Сравниваем команды service и systemctl для управления службами Linux. Через strace проверяем вызов systemctl, вспоминаем SysVinit и Upstart и перечисляем альтернативы для OpenRC, runit, s6 и Supervisor.
Сравниваем пакетные менеджеры Snap и APT в Linux. Разбираем переносимость пакетов между дистрибутивами, песочницу, автоматические обновления, зависимости и ситуации, где важнее системная интеграция и производительность.
Добавляем и удаляем задания cron прямо из Bash-скрипта. Используем уникальные комментарии для идентификации строк crontab, функции ADD_CRON_TASK и REMOVE_CRON_TASK, а также учитываем переменную PATH.
Ищем одинаковые файлы в Linux с помощью fdupes и удаляем дубликаты в интерактивном или автоматическом режиме. Разбираем ключи `-r`, `-d`, `-N` и сравниваем скорость fdupes с findup и jdupes.
Разбираемся, чем заменить try/catch в Bash с помощью логического оператора `||`, группировки команд и проверки кода возврата. Показываем практический шаблон обработки ошибок и объясняем, когда проще использовать `set -e`.
Разбираем сопроцессы `coproc`, появившиеся в Bash 4, и их отличие от обычных фоновых заданий. Показываем синтаксис запуска, массив дескрипторов COPROC, направления stdin и stdout и правила именованной группировки.
Показываем, почему алиасы из `.bashrc` не работают в обычном Bash-скрипте и как включить интерактивный режим ключом `-i`. Сравниваем этот подход с `source`, `expand_aliases` и экспортируемой функцией.
Проверяем Linux-сервер с помощью LinPEAS и ищем ошибки конфигурации, SUID-файлы и другие пути повышения привилегий. Показываем запуск без установки через curl или Python и объясняем, почему скрипту не нужен root.
Знакомимся с vlock для блокировки виртуальной консоли Linux без графического окружения. Разбираем блокировку одной или всех консолей, защиту от SysRq, скринсейверы и риск потерять доступ, если пароль пользователя забыт.
Тестируем изменения systemd-юнитов через временное переопределение `systemctl edit --runtime`. Показываем выбор редактора, расположение override в `/run/systemd/` и замену ExecStart для nginx только до перезагрузки.
Разбираемся, чем отличаются операторы `&&`, `;` и `||` при связывании команд в Bash. Показываем влияние кодов возврата, короткого замыкания и режима `set -e` на выполнение цепочки.
Используем whois и ipcalc для определения сетей владельца IP-адреса и преобразования диапазонов NetRange или inetnum в CIDR. Готовим подсети для правил iptables и проверяем результат на практических примерах.
Ищем причины отказа SSH-аутентификации по ключам через журнал сервера и `tail`. Разбираем права на authorized_keys, неверные ключи, типовые сообщения auth.log и безопасное восстановление конфигурации.
Отключаем getty на локальных TTY Linux, сохраняя удалённый SSH-доступ по ключам. Показываем команды systemctl, последствия для физической консоли и восстановление служб через Recovery mode.
Практическое руководство по nethogs для мониторинга сетевого трафика Linux в реальном времени. Разбираем установку, поиск процессов, перегружающих канал, контроль интерфейсов и режим трассировки.
Разбираемся с ограничениями длины SPF-записи и количеством DNS-запросов при её проверке. Заменяем длинный перечень IP-адресов сетями CIDR, проверяем запись валидатором и наблюдаем результат через DMARC.
Используем whois и ipcalc для определения сетей владельца IP-адреса и преобразования диапазонов NetRange или inetnum в CIDR. Готовим подсети для правил iptables и проверяем результат на практических примерах.
Отключаем getty на локальных TTY Linux, сохраняя удалённый SSH-доступ по ключам. Показываем команды systemctl, последствия для физической консоли и восстановление служб через Recovery mode.
Практическое руководство по nethogs для мониторинга сетевого трафика Linux в реальном времени. Разбираем установку, поиск процессов, перегружающих канал, контроль интерфейсов и режим трассировки.
Скачиваем файл без curl и wget через встроенное устройство `/dev/tcp` в Bash. Разбираем HTTP-запрос, файловый дескриптор и ограничения прямого сокетного соединения без TLS.
Практический опыт файловых серверов на FreeNAS, TrueNAS, OMV и чистой Samba. Разбираем различия прав Windows и Linux, сложности ACL и ограничения Samba в небольших и средних организациях.
Настраиваем policy-based routing в pfSense, чтобы группы хостов выходили в интернет через разные внешние IP. Создаём интерфейсы, алиасы, шлюзы и правила firewall, которые не допустят утечки трафика через маршрут по умолчанию.
Сравниваем вероятность неисправимых ошибок чтения у WD Blue, WD Gold, SAS Toshiba и SSD Micron. Объясняем, почему RAID не всегда защищает от повреждённых данных и как контрольные суммы ZFS помогают обнаруживать ошибки.
Включаем Container Registry в self-hosted GitLab через gitlab.rb и разбираемся, почему одного переключателя registry_enabled недостаточно. Настраиваем интеграцию Let’s Encrypt, выполняем reconfigure и проверяем запуск реестра …
Разбираемся, почему тяжёлые бинарники не стоит хранить прямо в Git-репозитории и как вынести их в Git LFS. Настраиваем LFS в Gitea, подключаем git-lfs и отслеживаем отдельные файлы или целые группы по маске.
Сравниваем три способа узнать число доступных процессорных ядер в Linux: /proc/cpuinfo, getconf и nproc. Используем результат в Bash-скрипте для обновления worker_processes и безопасной перезагрузки Nginx.
Переносим каталог /tmp с корневого раздела или tmpfs на отдельный диск через systemd mount unit. Правильно именуем tmp.mount, указываем UUID файловой системы, сохраняем sticky bit 1777 и проверяем новое монтирование.
Разбираем практический ответ на блокировку публичного Docker-реестра без сомнительных прокси. Переносим официальные образы во внутреннюю инфраструктуру, фиксируем версии и сохраняем контроль над цепочкой поставки.
Личный опыт замены официального WireGuard-клиента в Windows на связку TunnlTo и WireSock. Разбираем импорт туннелей, автозапуск КВН и маршрутизацию только выбранных приложений.
Личный опыт сборки домашней Proxmox-лаборатории из старого мини-ПК на GA-B75N. Апгрейд до i7-3770, 16 ГБ памяти, запасной блок питания и практические выводы после отказа китайского мини-сервера.
Проверяем Linux-сервер с помощью LinPEAS и ищем ошибки конфигурации, SUID-файлы и другие пути повышения привилегий. Показываем запуск без установки через curl или Python и объясняем, почему скрипту не нужен root.
Знакомимся с vlock для блокировки виртуальной консоли Linux без графического окружения. Разбираем блокировку одной или всех консолей, защиту от SysRq, скринсейверы и риск потерять доступ, если пароль пользователя забыт.
Разбираем, почему перенос SSH с порта 22 редко повышает безопасность и лишь усложняет подключения. Вместо security through obscurity используем SSH-ключи, запрет root-входа, отключение паролей и fail2ban.
Разбираем ошибку `bad ownership or modes` при входе по SSH-ключу и роль параметра `StrictModes`. Показываем безопасную диагностику прав `authorized_keys` и объясняем риски временного отключения проверки.
Разбираем необычные права 330 для каталога Linux и их применение на SFTP-сервере. Показываем, как разрешить запись и удаление файлов, но скрыть список содержимого от пользователей одной учётной записи.
Показываем, как strace может раскрыть пароль пользователя при входе по SSH на скомпрометированном сервере. Разбираем параметры трассировки sshd, формат полученного вывода и риск для систем после захвата root-доступа.
Утилита cruft находит файлы, которые появились в Linux в обход пакетного менеджера. Настраиваем исключения для Docker и пользовательских каталогов, сохраняем отчёт и ищем забытые скрипты или подозрительные артефакты.
Пошагово подключаем зашифрованный BitLocker-раздел в Linux с помощью dislocker. Разбираем пароль и ключ восстановления, режим только для чтения, NTFS и exFAT, а также автоматическое монтирование через fstab.
Разбираем практический ответ на блокировку публичного Docker-реестра без сомнительных прокси. Переносим официальные образы во внутреннюю инфраструктуру, фиксируем версии и сохраняем контроль над цепочкой поставки.
Bash-скрипт фотографирует человека при попытке аутентификации Linux через PAM и отправляет снимок в Telegram. В примере используются ffmpeg, curl, pam_exec и настройка optional или required.
Объясняем принцип RSA на небольших простых числах и понятном примере. Вычисляем открытый и закрытый ключи, шифруем число по модулю и повторяем расчёт в Bash через bc.
Настраиваем разные правила sshd для пользователей и адресов через блок Match. Рассматриваем парольную аутентификацию последнего шанса, шаблоны условий и проверку итоговой конфигурации командой sshd -T -C.
Ограничиваем видимость чужих процессов на многопользовательском Linux-сервере через параметры hidepid для /proc. Разбираем временное монтирование, запись в fstab и исключения доступа по группе gid.
Утилита debsums сверяет файлы установленных Debian-пакетов с эталонными контрольными суммами. Разбираем полную проверку, поиск изменённых файлов и конфигураций после взлома или миграции сервера.
Разбираем ключ -i в GNU base64, который пропускает символы вне алфавита кодирования. Примеры показывают, как декодировать изменённые строки и почему такое сокрытие данных нельзя считать настоящим шифрованием.
Сравниваем команды service и systemctl для управления службами Linux. Через strace проверяем вызов systemctl, вспоминаем SysVinit и Upstart и перечисляем альтернативы для OpenRC, runit, s6 и Supervisor.
Тестируем изменения systemd-юнитов через временное переопределение `systemctl edit --runtime`. Показываем выбор редактора, расположение override в `/run/systemd/` и замену ExecStart для nginx только до перезагрузки.
Ищем причины отказа SSH-аутентификации по ключам через журнал сервера и `tail`. Разбираем права на authorized_keys, неверные ключи, типовые сообщения auth.log и безопасное восстановление конфигурации.
Решаем классическую задачу о восьми ферзях средствами AWK и вложенных циклов. Разбираем проверку горизонталей и диагоналей, ограничение оператора break и полученные 92 варианта.
Разбираем массив FUNCNAME и получаем имя текущей функции внутри Bash-скрипта. Показываем стек вызовов, аналог funcstack в Zsh и связанные переменные BASH_SOURCE и BASH_LINENO для отладки.
Пошаговый способ зарегистрировать новую учётную запись GitLab из России через постоянный ящик Putsbox и Tor Browser. Разбираем подтверждение почты, повторную верификацию и альтернативу в виде локального GitLab.
Исследуем заголовок tar-архива через hexdump и смотрим, где сохраняются UID, GID, имя владельца и группа. Проверяем `--owner`, `--group` и поведение распаковки для существующих и выдуманных пользователей.
Утилита `namei` показывает каждый компонент пути, владельца и права доступа, помогая находить ошибки в родительских каталогах. Сравниваем её с `ls -la` на примере недоступной PHP-админки.
Разбираем ошибку `bad ownership or modes` при входе по SSH-ключу и роль параметра `StrictModes`. Показываем безопасную диагностику прав `authorized_keys` и объясняем риски временного отключения проверки.
Проверяем синтаксис Bash-скриптов до выполнения с помощью bash -n и режима set -o noexec. Добавляем проверку всех .sh-файлов в Git hook и используем set -u, чтобы находить обращения к необъявленным переменным.
Показываем, как strace может раскрыть пароль пользователя при входе по SSH на скомпрометированном сервере. Разбираем параметры трассировки sshd, формат полученного вывода и риск для систем после захвата root-доступа.
Настраиваем трассировку Bash через set -xve и переменную PS4, чтобы видеть файл, номер строки и имя функции. Добавляем цвет к отладочному выводу и быстрее находим место падения большого скрипта.
Восстанавливаем Bash-скрипт, который удалили с диска, пока процесс продолжает работать. Через lsof находим PID и файловый дескриптор, а затем читаем исходник из /proc/PID/fd.
Проверяем через strace, почему grep -q прекращает чтение большого файла после первого совпадения. Сравниваем системные вызовы, коды возврата и перенаправление вывода в /dev/null.
Используем Bash trap с EXIT для автоматической очистки временных файлов при успешном завершении, ошибке и SIGTERM. Проверяем порядок системных вызовов через strace и разбираем работу ловушек сигналов.
Настраиваем Git-хук pre-commit для автоматической проверки Bash-скриптов через ShellCheck. В качестве бонуса адаптируем тот же подход для Ansible-плейбуков и ansible-lint.
Знакомимся с chezmoi для управления `.bashrc`, `.vimrc`, `.gitconfig` и другими dotfiles на нескольких устройствах. Добавляем и редактируем конфиги, смотрим diff, восстанавливаем файлы и синхронизируем репозиторий через Git.
Разговор о бессмысленных задачах на технических собеседованиях, давлении рекрутеров и праве кандидата требовать проверку по будущей роли. Финансовая подушка и практика интервью помогают спокойнее отказываться от неподходящих …
История абсурдного собеседования, где кандидатов в бэкенд-разработчики отбирали по скорости сборки кубика Рубика. Разбираемся, как такая проверка подменяет оценку профессиональных навыков и превращает найм в эксперимент над …
Настраиваем общую историю команд Bash для нескольких одновременно открытых терминалов. Разбираем `history -a/-c/-r`, `histappend`, `HISTCONTROL` и `PROMPT_COMMAND`, чтобы новые команды сразу появлялись во всех сессиях.
Третья часть заметок о переговорах посвящена эмоциональному состоянию участников встречи. Разбираем, как заметить позицию жертвы, прочитать настроение собеседника и найти компромисс без взаимной агрессии.
История неожиданной посылки от Selectel с баланс-бордом, приглашением на Day-Off и отсылками к облачной инфраструктуре. Распаковка подарка, фотографии комплекта и впечатления DevOps-инженера.
Подборка полезных горячих клавиш Bash для навигации, редактирования команд, поиска по history и управления терминалом. Разбираем сочетания Ctrl и Alt, которые помогают быстрее работать в командной строке.
Практический опыт подготовки большого самоучителя по Bash сначала в Markdown и Pandoc, а затем в LibreOffice. Разбираем ограничения таблиц, кириллицы, UTF-символов и PDF-вёрстки, которые стали заметны после девятнадцати глав.
Разбираемся, почему тяжёлые бинарники не стоит хранить прямо в Git-репозитории и как вынести их в Git LFS. Настраиваем LFS в Gitea, подключаем git-lfs и отслеживаем отдельные файлы или целые группы по маске.
Пошагово подключаем физический USB-диск с ext4 к Windows 11 через WSL без сторонних драйверов. Находим устройство через WMIC, монтируем его с ключом --bare и открываем раздел внутри Ubuntu.
Настраиваем Bash Readline так, чтобы кавычки, круглые, квадратные и фигурные скобки автоматически закрывались прямо в терминале. Разбираем bind, inputrc, режим emacs и возможные конфликты горячих клавиш.
Разбираем недорогую конфигурацию прерываемого сервера Selectel для лабораторий и тестовых стендов. Обсуждаем регион, сетевые диски, повторный запуск, тарификацию остановленных ресурсов и ограничения такого подхода.
Личный опыт постепенного отказа от алкоголя без рекомендаций и универсальных рецептов. Автор рассказывает, какие последствия употребления заставили изменить привычки и почему одна рюмка со временем стала не нужна.
Практический кейс сокращения расходов на десятки серверов тестовой инфраструктуры. Переносим стенды в Yandex Cloud, автоматически выключаем их ночью и в выходные, а бот учитывает активность тестировщиков и метрики Prometheus.
Сравниваем пакетные менеджеры Snap и APT в Linux. Разбираем переносимость пакетов между дистрибутивами, песочницу, автоматические обновления, зависимости и ситуации, где важнее системная интеграция и производительность.
Ищем одинаковые файлы в Linux с помощью fdupes и удаляем дубликаты в интерактивном или автоматическом режиме. Разбираем ключи `-r`, `-d`, `-N` и сравниваем скорость fdupes с findup и jdupes.
Пошаговый способ зарегистрировать новую учётную запись GitLab из России через постоянный ящик Putsbox и Tor Browser. Разбираем подтверждение почты, повторную верификацию и альтернативу в виде локального GitLab.
Добавляем в чистый Bash автоподсказки и подсветку команд с помощью BLE.sh. Затем устанавливаем oh-my-posh, подключаем темы оформления через профиль оболочки и получаем удобный терминал без Zsh.
Автоматизируем запись терминала с помощью VHS и сценария `.tape`. Настраиваем размер кадра и команды, запускаем генерацию GIF в Docker и публикуем готовую анимацию.
Показываем, как ограничить время работы systemd-сервиса через `RuntimeMaxSec` и управлять завершением с помощью `TimeoutStopSec`. Разбираем сигналы SIGTERM и SIGKILL, перезапуск через `Restart` и практические шаблоны юнитов.
Утилита pv добавляет прогресс-бар, скорость и оценку времени к операциям в конвейере Linux. Показываем сжатие логов, импорт SQL-дампа с ограничением скорости и наблюдение за потоком данных.
Личный опыт замены официального WireGuard-клиента в Windows на связку TunnlTo и WireSock. Разбираем импорт туннелей, автозапуск КВН и маршрутизацию только выбранных приложений.
Включаем Vim mode в Obsidian, чтобы писать заметки и одновременно поддерживать мышечную память команд редактора. Практический опыт совмещения базы знаний и привычного клавиатурного управления.
Настраиваем выпадающий терминал Quake Mode в Windows Terminal через settings.json. Разбираемся с глобальной клавишей вызова, вкладками, переключением между ними и режимом фокуса.
Знакомимся с утилитой bat — улучшенным просмотрщиком файлов с подсветкой синтаксиса, нумерацией строк и интеграцией Git. В статье собраны установка, alias для batcat и основные примеры команд.
Настраиваем iVentoy как простой PXE-сервер для установки Linux и Windows по сети без флешек. В материале есть команды установки, запуск веб-интерфейса, каталог ISO и unit-файл systemd.
Утилита ccze добавляет цветовую подсветку к системным логам в терминале и выделяет ошибки. Показываем работу с cat и tail, сохранение последних строк в цветной HTML-файл и просмотр доступных плагинов.
Bash-скрипт запускает долгую команду в фоне и показывает текстовую анимацию до её завершения. Разбираем временный лог, trap, tput, сигналы, PID процесса и очистку терминального вывода.
Пишем Bash-скрипт, который архивирует файлы на сервере, отправляет tar.gz через Telegram Bot API и удаляет временный архив. Разбираем chat_id, bot_token, curl, подписи и ограничение размера.
Сравниваем вероятность неисправимых ошибок чтения у WD Blue, WD Gold, SAS Toshiba и SSD Micron. Объясняем, почему RAID не всегда защищает от повреждённых данных и как контрольные суммы ZFS помогают обнаруживать ошибки.
Практический опыт подготовки большого самоучителя по Bash сначала в Markdown и Pandoc, а затем в LibreOffice. Разбираем ограничения таблиц, кириллицы, UTF-символов и PDF-вёрстки, которые стали заметны после девятнадцати глав.
Личный опыт постепенного отказа от алкоголя без рекомендаций и универсальных рецептов. Автор рассказывает, какие последствия употребления заставили изменить привычки и почему одна рюмка со временем стала не нужна.
Настраиваем разные правила sshd для пользователей и адресов через блок Match. Рассматриваем парольную аутентификацию последнего шанса, шаблоны условий и проверку итоговой конфигурации командой sshd -T -C.
Показываем, как отфильтровать строки одного текстового файла по списку из другого с помощью конструкции NR == FNR и массива awk. Разбираем работу NR, FNR и next, выбор столбцов и ограничение по памяти без обязательной …
Личный опыт постепенного снижения веса со 130 до 85 килограммов без краткосрочной диеты. Автор рассказывает об изменении питания, размере порций, периодах стабилизации веса и безопасном темпе похудения.
Строим связку из SSH-бастиона и изолированной машины без выхода в интернет для удалённых пользователей. Настраиваем ключи, принудительную оболочку и автоматический переход на внутренний сервер.
Пишем Bash-watchdog, который проверяет доступность интернета и наращивает интервалы попыток восстановления связи. Для физической перезагрузки роутера подключаем недорогое USB-реле и управляем им через последовательный порт.
Сравниваем X11 Forwarding и RDP в Docker для удалённой работы с графическими приложениями на Linux-сервере. Разбираем подключение GPU NVIDIA и AMD, необходимые устройства контейнера и безопасный SSH-туннель.
Разбираем обработку стрелок, Home, End и F1–F12 в интерактивном Bash-скрипте. Функция GET_KEY переводит многобайтные управляющие последовательности терминала в hexadecimal-коды.
Личный опыт снижения веса со 130 до 85 килограммов и его дальнейшего контроля. Ежедневное взвешивание, режим питания и сна, физическая нагрузка и наблюдения о колебаниях веса.
Сценарий отката сетевой конфигурации удалённого Linux-сервера без IPMI и локального администратора. Резервная копия /etc, задание cron после перезагрузки и проверка успешного входа по SSH.
Личный опыт отказа от курения после нескольких неудачных попыток. Автор рассказывает о собственных ошибках, первых тяжёлых месяцах и приёмах, которые использовал в 1998 году.
Автор превращает безвентиляторный Celeron N2840 в домашний роутер и сравнивает pfSense, Debian и IPFire. В материале — проблемы Wi-Fi, реальные замеры iperf3, нагрев корпуса и итог эксперимента.
Знаешь это чувство, когда ждёшь регресс дольше, чем сам работаешь? У меня рантайм был 34 минуты, и две трети времени уходило на очистку QA-стенда. Решение пришло через Docker и Testcontainers — теперь тесты летят за 14 минут, а …
Навигация по знаниям
Скрипты, однострочники, awk, cron, mapfile и практическая автоматизация рутины.
→ DevOps и рабочие процессыCI/CD, инфраструктура, Ansible, пайплайны, рабочие практики и инженерная рутина.
→ Docker, Podman и контейнерыВсе про контейнеры: Docker, Podman, сборки, окружение, управление и смежные инструменты.
→ Linux и администрированиеСистемное администрирование Linux, диагностика, утилиты, права, systemd, файловые системы и сеть.
→
Загружаем свежие комментарии…