Шпаргалка по перенаправлению потоков в Bash
Шпаргалка по перенаправлению stdout и stderr в Bash: `>`, `>>`, `2>`, `&>`, `tee` и `|&`. Показываем, какие потоки остаются в терминале, какие попадают в файл и как меняется существующий файл.
BashDays / инженерное медиа
Статьи об администрировании Linux, инфраструктуре, информационной безопасности, автоматизации и разработке — с реальными примерами и без пересказа документации.
Главная статья
Шпаргалка по перенаправлению stdout и stderr в Bash: `>`, `>>`, `2>`, `&>`, `tee` и `|&`. Показываем, какие потоки остаются в терминале, какие попадают в файл и как меняется существующий файл.
Форум Bashdays
Читают сейчас
Шпаргалка по перенаправлению stdout и stderr в Bash: `>`, `>>`, `2>`, `&>`, `tee` и `|&`. Показываем, какие потоки остаются в терминале, какие …
Разбираем, почему перенос SSH с порта 22 редко повышает безопасность и лишь усложняет подключения. Вместо security through obscurity используем …
Практический опыт файловых серверов на FreeNAS, TrueNAS, OMV и чистой Samba. Разбираем различия прав Windows и Linux, сложности ACL и ограничения …
Знакомимся с chezmoi для управления `.bashrc`, `.vimrc`, `.gitconfig` и другими dotfiles на нескольких устройствах. Добавляем и редактируем конфиги, …
Разбираемся с малоизвестной настройкой `set -k` в Bash, которая превращает присваивания в окружение команды независимо от их позиции. На примере `dd` …
Утилита `namei` показывает каждый компонент пути, владельца и права доступа, помогая находить ошибки в родительских каталогах. Сравниваем её с `ls …
Показываем, как ограничить время работы systemd-сервиса через `RuntimeMaxSec` и управлять завершением с помощью `TimeoutStopSec`. Разбираем сигналы …
Разговор о бессмысленных задачах на технических собеседованиях, давлении рекрутеров и праве кандидата требовать проверку по будущей роли. Финансовая …
Разбираем ошибку `bad ownership or modes` при входе по SSH-ключу и роль параметра `StrictModes`. Показываем безопасную диагностику прав …
Объясняем, почему `date --iso=seconds` работает, хотя такой аргумент не указан в справке. Разбираем сокращение длинных опций через `getopt_long`, …
История абсурдного собеседования, где кандидатов в бэкенд-разработчики отбирали по скорости сборки кубика Рубика. Разбираемся, как такая проверка …
Сравниваем одинарные и двойные квадратные скобки в условиях Bash. На примерах разбираем работу логического оператора &&, комбинированные проверки и …
Необычные способы получить текущую дату, время и Unix time в Bash без привычной команды date. Используем stat, ps, printf, преобразование …
Настраиваем общую историю команд Bash для нескольких одновременно открытых терминалов. Разбираем `history -a/-c/-r`, `histappend`, `HISTCONTROL` и …
Разбираем два режима команды exec в Bash: замену текущего процесса и перенаправление потоков. На примерах открываем файловые дескрипторы 3–9, …
Проверяем существование обычного файла в Bash с помощью test -f и квадратных скобок. Разбираем коды возврата, отрицание, однострочные условия и другие …
Проверяем синтаксис Bash-скриптов до выполнения с помощью bash -n и режима set -o noexec. Добавляем проверку всех .sh-файлов в Git hook и используем …
Используем проверку test -t в Bash, чтобы понять, направлен ли стандартный вывод в терминал или в pipe. Скрипт сможет включать оформление для …
Настраиваем policy-based routing в pfSense, чтобы группы хостов выходили в интернет через разные внешние IP. Создаём интерфейсы, алиасы, шлюзы и …
Разбираемся, чем отличаются vt100, xterm и xterm-256color и зачем приложениям переменная TERM. Проверяем управляющие последовательности, цвета, UTF-8 …
Сравниваем вероятность неисправимых ошибок чтения у WD Blue, WD Gold, SAS Toshiba и SSD Micron. Объясняем, почему RAID не всегда защищает от …
Третья часть заметок о переговорах посвящена эмоциональному состоянию участников встречи. Разбираем, как заметить позицию жертвы, прочитать настроение …
Разбираем необычные права 330 для каталога Linux и их применение на SFTP-сервере. Показываем, как разрешить запись и удаление файлов, но скрыть список …
Утилита pv добавляет прогресс-бар, скорость и оценку времени к операциям в конвейере Linux. Показываем сжатие логов, импорт SQL-дампа с ограничением …
Показываем, как strace может раскрыть пароль пользователя при входе по SSH на скомпрометированном сервере. Разбираем параметры трассировки sshd, …
Утилита cruft находит файлы, которые появились в Linux в обход пакетного менеджера. Настраиваем исключения для Docker и пользовательских каталогов, …
Используем цикл until в Bash, чтобы дождаться появления непустого файла и затем выполнить полезную нагрузку. Добавляем таймаут через SECONDS и …
Включаем Container Registry в self-hosted GitLab через gitlab.rb и разбираемся, почему одного переключателя registry_enabled недостаточно. Настраиваем …
История неожиданной посылки от Selectel с баланс-бордом, приглашением на Day-Off и отсылками к облачной инфраструктуре. Распаковка подарка, фотографии …
Подборка полезных горячих клавиш Bash для навигации, редактирования команд, поиска по history и управления терминалом. Разбираем сочетания Ctrl и Alt, …
Практический опыт подготовки большого самоучителя по Bash сначала в Markdown и Pandoc, а затем в LibreOffice. Разбираем ограничения таблиц, кириллицы, …
Разбираемся, почему тяжёлые бинарники не стоит хранить прямо в Git-репозитории и как вынести их в Git LFS. Настраиваем LFS в Gitea, подключаем git-lfs …
Сравниваем три способа узнать число доступных процессорных ядер в Linux: /proc/cpuinfo, getconf и nproc. Используем результат в Bash-скрипте для …
Пошагово подключаем зашифрованный BitLocker-раздел в Linux с помощью dislocker. Разбираем пароль и ключ восстановления, режим только для чтения, NTFS …
Разбираем readonly-переменные в Bash: как защитить значение от перезаписи, почему unset не помогает и как увидеть ошибку readonly variable. Отдельно …
Переносим каталог /tmp с корневого раздела или tmpfs на отдельный диск через systemd mount unit. Правильно именуем tmp.mount, указываем UUID файловой …
Когда нет интернета и подсказок ИИ, готовые примеры Bash уже лежат в системных скриптах Linux. Одной командой находим реальные случаи использования …
Настраиваем трассировку Bash через set -xve и переменную PS4, чтобы видеть файл, номер строки и имя функции. Добавляем цвет к отладочному выводу и …
Восстанавливаем Bash-скрипт, который удалили с диска, пока процесс продолжает работать. Через lsof находим PID и файловый дескриптор, а затем читаем …
Разбираем практический ответ на блокировку публичного Docker-реестра без сомнительных прокси. Переносим официальные образы во внутреннюю …
Пятиминутка стабильности
Из логов айтишной жизни
xxx: У тебя скайп с микрофоном есть? Комп сдыхает. yyy: Отпеть нужно?
Шпаргалка по перенаправлению stdout и stderr в Bash: `>`, `>>`, `2>`, `&>`, `tee` и `|&`. Показываем, какие потоки остаются в терминале, какие попадают в файл и как меняется существующий файл.
Разбираем, почему перенос SSH с порта 22 редко повышает безопасность и лишь усложняет подключения. Вместо security through obscurity используем SSH-ключи, запрет root-входа, отключение паролей и fail2ban.
Практический опыт файловых серверов на FreeNAS, TrueNAS, OMV и чистой Samba. Разбираем различия прав Windows и Linux, сложности ACL и ограничения Samba в небольших и средних организациях.
Знакомимся с chezmoi для управления `.bashrc`, `.vimrc`, `.gitconfig` и другими dotfiles на нескольких устройствах. Добавляем и редактируем конфиги, смотрим diff, восстанавливаем файлы и синхронизируем репозиторий через Git.
Разбираемся с малоизвестной настройкой `set -k` в Bash, которая превращает присваивания в окружение команды независимо от их позиции. На примере `dd` показываем неожиданное поведение и способ отключить режим через `set +k`.
Утилита `namei` показывает каждый компонент пути, владельца и права доступа, помогая находить ошибки в родительских каталогах. Сравниваем её с `ls -la` на примере недоступной PHP-админки.
Показываем, как ограничить время работы systemd-сервиса через `RuntimeMaxSec` и управлять завершением с помощью `TimeoutStopSec`. Разбираем сигналы SIGTERM и SIGKILL, перезапуск через `Restart` и практические шаблоны юнитов.
Объясняем, почему `date --iso=seconds` работает, хотя такой аргумент не указан в справке. Разбираем сокращение длинных опций через `getopt_long`, glibc и Gnulib на примерах `date`, `ls` и `sort`.
Сравниваем одинарные и двойные квадратные скобки в условиях Bash. На примерах разбираем работу логического оператора &&, комбинированные проверки и причины, по которым двойные скобки безопаснее и понятнее нескольких отдельных …
Необычные способы получить текущую дату, время и Unix time в Bash без привычной команды date. Используем stat, ps, printf, преобразование `${parameter@P}`, а также переменные EPOCHREALTIME и EPOCHSECONDS.
Настраиваем общую историю команд Bash для нескольких одновременно открытых терминалов. Разбираем `history -a/-c/-r`, `histappend`, `HISTCONTROL` и `PROMPT_COMMAND`, чтобы новые команды сразу появлялись во всех сессиях.
Разбираем два режима команды exec в Bash: замену текущего процесса и перенаправление потоков. На примерах открываем файловые дескрипторы 3–9, отправляем stdout и stderr в файлы и читаем несколько файлов во вложенных циклах.
Проверяем существование обычного файла в Bash с помощью test -f и квадратных скобок. Разбираем коды возврата, отрицание, однострочные условия и другие ключи для проверки директорий, сокетов и прав доступа.
Проверяем синтаксис Bash-скриптов до выполнения с помощью bash -n и режима set -o noexec. Добавляем проверку всех .sh-файлов в Git hook и используем set -u, чтобы находить обращения к необъявленным переменным.
Используем проверку test -t в Bash, чтобы понять, направлен ли стандартный вывод в терминал или в pipe. Скрипт сможет включать оформление для интерактивного запуска и не передавать управляющие последовательности другим утилитам.
Практический опыт файловых серверов на 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 ГБ памяти, запасной блок питания и практические выводы после отказа китайского мини-сервера.
Практический разбор домашнего сервера на Raspberry Pi с Ubuntu, Dockge и внешними дисками. В материале — контейнеры Seafile, Jellyfin, Uptime Kuma, Syncthing, мониторинг и резервное копирование через rclone в S3 Selectel.
Создаём собственную метрику Prometheus обычным Bash-скриптом через textfile collector в node_exporter. Разбираем формат .prom, периодический запуск из cron и пример передачи квоты внешнего сервиса.
Разбираем недорогую конфигурацию прерываемого сервера Selectel для лабораторий и тестовых стендов. Обсуждаем регион, сетевые диски, повторный запуск, тарификацию остановленных ресурсов и ограничения такого подхода.
Собрали консольные сервисы для определения внешнего IP-адреса и геолокации через curl, dig и whois. Показываем короткие команды и объясняем, как сделать проверку отказоустойчивой в Bash-скриптах.
Практический кейс сокращения расходов на десятки серверов тестовой инфраструктуры. Переносим стенды в Yandex Cloud, автоматически выключаем их ночью и в выходные, а бот учитывает активность тестировщиков и метрики Prometheus.
Разбираем, почему перенос 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, который пропускает символы вне алфавита кодирования. Примеры показывают, как декодировать изменённые строки и почему такое сокрытие данных нельзя считать настоящим шифрованием.
Строим связку из SSH-бастиона и изолированной машины без выхода в интернет для удалённых пользователей. Настраиваем ключи, принудительную оболочку и автоматический переход на внутренний сервер.
Разбираемся, почему короткий ключ ED25519 не слабее длинного RSA, какие типы SSH-ключей поддерживает OpenSSH и как конвертировать PPK из PuTTYgen. Практические команды для генерации и преобразования ключей.
Утилита `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 и разбираем работу ловушек сигналов.
Ищем службы, которые замедляют загрузку Linux, командами systemd-analyze blame и critical-chain. На примере Docker разбираем зависимости network-online.target и настройку systemd-юнита.
Исследуем тернарный оператор Bash внутри арифметической подсистемы и сравниваем его с классической связкой && и ||. Пример показывает работу восьмеричных значений, вычисление обеих ветвей и неочевидные ошибки сравнения.
Функция uTIME измеряет интервалы выполнения Bash-кода в микросекундах с помощью EPOCHREALTIME. Сравниваем функции в текущей оболочке и subshell, а также преобразование даты через printf и внешнюю команду date.
Разбираем распространённые Bash-антипаттерны из учебных скриптов: лишний cat перед cut, grep и tr, а также небезопасный перебор файлов через ls. Показываем более прямые и устойчивые варианты команд.
Разбираем завершители блоков ;;, ;& и ;;& в операторе case Bash. На практических примерах показываем обычное завершение ветки, fallthrough и повторную проверку следующих шаблонов.
Ищем культурный след числа 42 в справке Vim, документации Emacs и сообществе GNU. Разбираемся, как ответ из «Автостопом по галактике» стал устойчивой шуткой в мире программирования.
Разбираем обработку стрелок, Home, End и F1–F12 в интерактивном Bash-скрипте. Функция GET_KEY переводит многобайтные управляющие последовательности терминала в hexadecimal-коды.
Знакомимся с 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.
Практическое знакомство с Crane для работы с контейнерными образами без 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, подписи и ограничение размера.
Настраиваем общий доступ к терминалу Linux и macOS через tty-share без тяжёлых видеозвонков. Разбираем публичную и локальную сессии, режим только для чтения, завершение процесса и альтернативные инструменты.
Реализуем расширенную Basic Auth-аутентификацию в Nginx с помощью Lua и базы MySQL. Скрипт OpenResty читает заголовок Authorization, хеширует пароль, проверяет пользователя и передаёт запрос в защищённый location.
Устанавливаем Bash-утилиту tmpmail и создаём одноразовый почтовый адрес прямо в терминале. Показываем генерацию адресов, выбор домена, просмотр входящих писем и получение последнего сообщения в текстовом виде.
Автоматизируем передачу файлов с сервера скриптом на Bash: проверяем размер, упаковываем крупные данные, загружаем их через curl в transfer.sh и получаем ссылку. Отдельно обсуждаем лимиты сервиса и безопасность.
Почему df показывает 100% занятого места, а du и ncdu не находят крупные файлы. Разбираю Hidden Space Explorer (hsed) — TUI-утилиту для поиска удалённых, но открытых файлов в Linux, освобождения дискового пространства и …
Сравниваем вероятность неисправимых ошибок чтения у 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, файловые системы и сеть.
→
Загружаем свежие комментарии…