Ограничение времени выполнения команды Иногда команда зависает навсегда: сетевой запрос, бэкап, скрипт. timeout - это простой способ не дать ей убить автоматизацию. ▪️ Базовое использование timeout 5s command Если команда не завершилась за 5 секунд, то она будет остановлена. Поддерживаемые единицы: 5s 2m 1h ▪️ В скриптах и cron. Пример с curl: timeout 10s curl https://bashtex.com В cron это особенно важно т.к зависшая задача может копиться часами. ▪️ Проверка результата timeout 5s long_task case...
BashTex | Linux
Авторский канал для тех, кто хочет глубже погрузиться в мир Linux. Подойдет для разработчиков, системных администраторов и DevOps Реклама: @dad_admin
Графики
📊 Средний охват постов
📉 ERR % по дням
📋 Публикации по дням
📎 Типы контента
Лучшие публикации
20 из 20Захват вывода команды в переменную Есть два способа сохранить вывод команды в переменную. Формально оба работают, но один из них устарел. ▪️ Правильный способ files=$(ls /etc) Плюсы: легко читать можно вкладывать команды меньше сюрпризов с экранированием count=$(wc -l < file.txt) ▪️ Устаревший способ files=ls /etc Минусы: плохо читается сложно экранировать вложенность превращается в ад # выглядит ужасно и ломается result=echo \date\ ▪️ Почему backticks ломают скрипты конфликт...
Проверка: существует ли файл, каталог или ссылка В bash не нужно городить ls | grep. Для проверок есть встроенные тесты, более быстрые и надежные. ▪️ Обычный файл - -f [ -f file.txt ] && echo "Файл существует" Истина, если: файл есть и это не каталог ▪️ Каталог - -d [ -d /etc/nginx ] && echo "Каталог существует" Полезно перед: копированием, cd или очисткой директорий ▪️ Символическая ссылка - -L [ -L /usr/bin/python ] && echo "Это symlink" Работает даже если ссылка битая. ▪️ Просто что-то сущест...
Проверка времени отклика сервисов Когда сервис работает, но пользователи жалуются на медлительность, нужно мерить не аптайм, а отклик. Это легко сделать обычным curl. ▪️ Самый простой замер time curl -s https://bashtex.com > /dev/null Показывает общее время выполнения запроса и быстро понять, тормозит или нет. ▪️ Точнее: только сетевое время curl -s -o /dev/null -w "time_total: %{time_total}\n" https://bashtex.com Полезные метрики: time_namelookup time_connect time_starttransfer time_total ...
Ты не выйдешь BashTex 📱 #юмор
Поиск забытых .ssh директорий После чистки пользователей в системе нередко остаются их .ssh-каталоги. Это мусор + потенциальная дыра: старые ключи могут лежать годами. ▪️ Быстрый поиск по системе find / -type d -name .ssh 2>/dev/null Найдет все .ssh, включая: /home/*/.ssh /root/.ssh нестандартные каталоги ▪️ Проверяем, существует ли владелец find / -type d -name .ssh -exec stat -c '%U %n' {} \; Если владелец: UNKNOWN или пользователь отсутствует в /etc/passwd то каталог подозрительный. ▪️ П...
Не завидуйте ему BashTex 📱 #юмор
Работа с массивами Массивы - это простой способ хранить списки без awk и временных файлов. Главное знать базовые приемы. ▪️ Добавление элементов arr=(one two) arr+=(three) arr[5]=six bash сам раздвигает индексы, дыры допустимы. ▪️ Удаление элементов unset arr[1] Элемент удаляется, но индексы не сдвигаются: echo "${!arr[@]}" # индексы Удалить весь массив: unset arr ▪️ Перебор элементов Правильно: for item in "${arr[@]}"; do echo "$item" done Неправильно (ломает пробелы): for item i...
+2 бесполезных часа активированы BashTex 📱 #юмор
Контроль роста каталогов во времени Проблема знакомая: диск внезапно кончается, а кто именно его съел - непонятно. Решение простое: снимать размеры каталогов и сравнивать во времени. 1️⃣ Делаем снимок. Сохраняем размеры верхнеуровневых директорий: du -x --max-depth=1 /var 2>/dev/null | sort -n > /tmp/var.size.today -x - не уходим на другие FS --max-depth=1 - только первый уровень сортировка сразу по размеру 2️⃣ Сравниваем со вчера. Если есть предыдущий снимок: diff -u /tmp/var.size.yesterday /tm...