Как ограничить время выполнения команды в Linux
Разбираем утилиту timeout для ограничения времени работы команд и скриптов в Linux. Показываем длительности, сигналы завершения, удалённый запуск через SSH и вариант на чистом Bash.
Фото: Emre Karademir / PexelsЗдесь собраны все публикации блога Bashdays — заметки про Linux, DevOps и айтишные технологии.
Разбираем утилиту timeout для ограничения времени работы команд и скриптов в Linux. Показываем длительности, сигналы завершения, удалённый запуск через SSH и вариант на чистом Bash.
Создаём ограниченное окружение chroot для SSH-пользователя в Linux. Копируем Bash и зависимости через ldd, настраиваем ChrootDirectory и по одной добавляем разрешённые утилиты.
Настраиваем общий доступ к терминалу Linux и macOS через tty-share без тяжёлых видеозвонков. Разбираем публичную и локальную сессии, режим только для чтения, завершение процесса и альтернативные инструменты.
Настраиваем выпадающие списки Variables при ручном запуске GitLab Pipeline. Разбираем options, YAML anchors, rules для stage и production и подключение общего .gitlab-ci.yml из отдельного проекта.
Добавляем дату и время к истории команд в Bash через HISTTIMEFORMAT и настраиваем цветные метки. Сравниваем history -E, history -i и fc в Zsh и сохраняем удобные настройки оболочки.
Проверяем TCP- и UDP-порты средствами Bash через /dev/tcp и /dev/udp, когда в системе нет curl, wget или telnet. Добавляем timeout, читаем код возврата и сравниваем подход с netcat.
Исследуем бесконечный Bash-цикл, канал до grep -m1 и незаметный SIGPIPE. Смотрим коды сигналов, процессы подоболочки и способы корректно остановить cat после закрытия конвейера.
Показываем, как nip.io преобразует IP-адрес внутри доменного имени и позволяет открывать локальные сервисы без правки /etc/hosts. Проверяем поддомены, порты и выпуск SSL-сертификата для публичного IP.
Разбираем Bash-скрипт spr.sh — консольный справочник для поиска записей и фрагментов кода по нескольким тегам. Конфигурация хранится в текстовом файле, а фильтрация реализована однострочником awk.
Сравниваем скорость запуска Bash и Zsh вручную и с помощью shellbench. Заодно разбираем плагины Oh My Zsh, автодополнение и место Dash среди быстрых POSIX-оболочек.
Разбираем разделы справочной системы man: команды, системные вызовы, форматы файлов, административные утилиты и функции ядра. Показываем поиск через man -k, страницы intro и вывод справки в HTML.
Разбираемся, почему Docker использует MASQUERADE вместо адреса Dummy-интерфейса, и находим скрытую настройку host_ipv4 в исходниках Moby. Создаём bridge-сеть, которая выполняет SNAT контейнеров через нужный публичный IP.