Нестандартное использование awk
awk — это не просто утилита, а целый мини-язык программирования, заточенный под обработку текстов. Разберём пару действительно интересных трюков, которые могут пригодиться в реальной жизни.
1. Обработка JSON с awk. Хотя jq справляется с JSON лучше, бывают случаи, когда под рукой только awk. Если структура JSON несложная, awk может помочь быстро вытащить нужные данные. Пример:
Здесь -F '[,:{}]' определяет разделители как запятые, двоеточия и фигурные скобки, что позволяет достать значение "Alice". Конечно, с более сложными JSON это сложнее, но для быстрых нужд работает.
2. Простой анализ логов с условной фильтрацией. awk отлично подходит для задач быстрого анализа логов. Например, подсчитаем количество обращений с конкретных IP-адресов:
Эта команда выводит IP-адреса, которые встречаются более 100 раз, что может быть полезно для выявления подозрительной активности.
3. Подсчёт по временным меткам. Когда нужно анализировать логи по времени, например, суммировать количество событий по часам. Вот способ быстро агрегировать логи по часам:
Здесь split($4, a, ":") разбивает дату по двоеточию, чтобы вытащить час, и count[hour]++ подсчитывает обращения для каждого часа.
Все это лишь малая часть того, что можно сделать с awk. Используйте эти техники, чтобы сэкономить время и по-настоящему раскрыть потенциал командной строки.
BashTex📱 #linux #utils
awk — это не просто утилита, а целый мини-язык программирования, заточенный под обработку текстов. Разберём пару действительно интересных трюков, которые могут пригодиться в реальной жизни.
1. Обработка JSON с awk. Хотя jq справляется с JSON лучше, бывают случаи, когда под рукой только awk. Если структура JSON несложная, awk может помочь быстро вытащить нужные данные. Пример:
echo '{"name": "Alice", "age": 30, "city": "Paris"}' | awk -F '[,:{}]' '{print $4}'
Здесь -F '[,:{}]' определяет разделители как запятые, двоеточия и фигурные скобки, что позволяет достать значение "Alice". Конечно, с более сложными JSON это сложнее, но для быстрых нужд работает.
2. Простой анализ логов с условной фильтрацией. awk отлично подходит для задач быстрого анализа логов. Например, подсчитаем количество обращений с конкретных IP-адресов:
awk '{count[$1]++} END {for (ip in count) if (count[ip] > 100) print ip, count[ip]}' access.log
Эта команда выводит IP-адреса, которые встречаются более 100 раз, что может быть полезно для выявления подозрительной активности.
3. Подсчёт по временным меткам. Когда нужно анализировать логи по времени, например, суммировать количество событий по часам. Вот способ быстро агрегировать логи по часам:
awk '{split($4, a, ":"); hour=a[2]; count[hour]++} END {for (h in count) print h, count[h]}' access.log
Здесь split($4, a, ":") разбивает дату по двоеточию, чтобы вытащить час, и count[hour]++ подсчитывает обращения для каждого часа.
Все это лишь малая часть того, что можно сделать с awk. Используйте эти техники, чтобы сэкономить время и по-настоящему раскрыть потенциал командной строки.
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
Структурируем процессы в виде дерева
1. Фильтрация по PID. Если нужно увидеть дерево для конкретного процесса, можно задать его PID. Например, чтобы отобразить дерево для процесса с PID 1234:
Это полезно для поиска всех дочерних процессов конкретного приложения.
2. Использование вместе с grep.
3. Анализ зависших процессов. Если наблюдаются торможения, можно использовать
Команда отобразит PID и родительский процесс каждого «зомби».
Используйте
BashTex📱 #linux #utils
ptree - отличный инструмент для тех, кто хочет не просто увидеть список процессов, а взглянуть на них в форме иерархического дерева. Это не только наглядно, но и помогает разобраться, кто запустил кого и в каком порядке.1. Фильтрация по PID. Если нужно увидеть дерево для конкретного процесса, можно задать его PID. Например, чтобы отобразить дерево для процесса с PID 1234:
ptree 1234
1234 /usr/bin/python3 main_app.py
├─ 1250 /usr/bin/python3 worker_task.py
│ ├─ 1252 /usr/bin/python3 worker_task.py sub_task1
│ ├─ 1253 /usr/bin/python3 worker_task.py sub_task2
│ └─ 1254 /usr/bin/python3 worker_task.py sub_task3
└─ 1260 /bin/bash helper_noscript.sh
└─ 1261 /bin/sleep 300
Это полезно для поиска всех дочерних процессов конкретного приложения.
2. Использование вместе с grep.
ptree можно комбинировать с grep, чтобы быстро найти интересующий вас процесс. Например, чтобы увидеть дерево для всех процессов, содержащих "sh":
ptree | grep sh
1260 /bin/bash helper_noscript.sh
└─ 1261 /bin/sleep 300
3. Анализ зависших процессов. Если наблюдаются торможения, можно использовать
ptree, чтобы найти специфические процессы. Например, команды для поиска всех «зомби»-процессов:
ptree | grep defunct
1234 /usr/bin/python3 main_app.py
├─ 1235 [worker_task] <defunct>
├─ 1240 [sub_task1] <defunct>
└─ 1250 /bin/bash helper_noscript.sh
└─ 1251 [sleep] <defunct>
Команда отобразит PID и родительский процесс каждого «зомби».
Используйте
ptree для чистоты и порядка в своих процессах и пускай ничего лишнего не занимает ресурсы вашей машины!BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5
Скрытие файлов и каталогов в Linux
1. Создание скрытых файлов и каталогов. Чтобы скрыть файл или каталог, достаточно добавить точку перед его именем. Например, создадим скрытый файл и каталог:
Эти команды создадут файл .hidden_file и папку .hidden_folder, которые не будут отображаться при обычном просмотре каталога.
2. Просмотр скрытых файлов. Чтобы увидеть скрытые файлы и каталоги, используйте флаг -a с командой ls:
3. Работа с переменной IGNORE_PATTERN. В некоторых системах можно настроить переменную окружения IGNORE_PATTERN, чтобы ls игнорировал файлы с определёнными шаблонами:
Теперь ls будет игнорировать файлы и каталоги, содержащие "backup" в названии.
4. Использование chattr для скрытия и защиты файлов. Команда chattr позволяет установить атрибуты файлов, чтобы они не могли быть изменены или удалены. Например, чтобы сделать файл неизменяемым, используйте:
Поздравляю, теперь даже root не сможет изменить или удалить important_file без снятия атрибута:
Чтобы снять этот атрибут, используйте:
BashTex📱 #linux #utils
1. Создание скрытых файлов и каталогов. Чтобы скрыть файл или каталог, достаточно добавить точку перед его именем. Например, создадим скрытый файл и каталог:
touch .hidden_file
mkdir .hidden_folder
Эти команды создадут файл .hidden_file и папку .hidden_folder, которые не будут отображаться при обычном просмотре каталога.
2. Просмотр скрытых файлов. Чтобы увидеть скрытые файлы и каталоги, используйте флаг -a с командой ls:
ls -a
. .. .hidden_file .hidden_folder Documents Downloads
3. Работа с переменной IGNORE_PATTERN. В некоторых системах можно настроить переменную окружения IGNORE_PATTERN, чтобы ls игнорировал файлы с определёнными шаблонами:
export IGNORE_PATTERN="*backup*"
Теперь ls будет игнорировать файлы и каталоги, содержащие "backup" в названии.
4. Использование chattr для скрытия и защиты файлов. Команда chattr позволяет установить атрибуты файлов, чтобы они не могли быть изменены или удалены. Например, чтобы сделать файл неизменяемым, используйте:
sudo chattr +i important_file
Поздравляю, теперь даже root не сможет изменить или удалить important_file без снятия атрибута:
$ rm important_file
rm: невозможно удалить 'important_file': Операция не позволена
Чтобы снять этот атрибут, используйте:
sudo chattr -i important_file
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Сжимаем данные до неузнаваемости
Для сжатия в Linux существует множество инструментов, и каждый из них подходит для разных типов задач. Рассмотрим несколько популярных методов сжатия, которые помогут сжать данные буквально «до неузнаваемости».
1. gzip - стандартный метод сжатия
Вывод до и после:
Для разархивации используйте команду
2. Сжимаем с максимальной степенью: xz. Если вам нужно максимально компактное сжатие, используйте
Вывод до и после:
Для разархивации используйте
3. Архивация и сжатие с tar и gzip. Если нужно сжать несколько файлов или каталогов,
Чтобы разархивировать каталог или файлы:
В результате:
BashTex📱 #linux #utils
Для сжатия в Linux существует множество инструментов, и каждый из них подходит для разных типов задач. Рассмотрим несколько популярных методов сжатия, которые помогут сжать данные буквально «до неузнаваемости».
1. gzip - стандартный метод сжатия
gzip large_file.txt
Вывод до и после:
ls -lh large_file.txt
-rw-r--r-- 1 user user 10M large_file.txt
ls -lh large_file.txt.gz
-rw-r--r-- 1 user user 2.5M large_file.txt.gz
Для разархивации используйте команду
gunzip2. Сжимаем с максимальной степенью: xz. Если вам нужно максимально компактное сжатие, используйте
xz. Он сжимает данные сильнее, чем gzip, но работает немного медленнее.
xz large_file.txt
Вывод до и после:
$ ls -lh large_file.txt
-rw-r--r-- 1 user user 10M large_file.txt
$ xz large_file.txt
$ ls -lh large_file.txt.xz
-rw-r--r-- 1 user user 1.5M large_file.txt.xz
Для разархивации используйте
unxz3. Архивация и сжатие с tar и gzip. Если нужно сжать несколько файлов или каталогов,
tar отлично подойдет. Он создаёт архив, а затем его можно сжать с помощью gzip или xz.
tar -czvf archive.tar.gz folder_to_compress
Чтобы разархивировать каталог или файлы:
tar -xzvf archive.tar.gzВ результате:
gzip - для обычного сжатияxz — для максимального уменьшения размераtar — для работы с несколькими файламиBashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Автоматическая синхронизация файлов между двумя каталогами
Автоматическая синхронизация каталогов полезна для резервного копирования, синхронизации данных между устройствами или поддержания одинакового содержимого в разных местах. В Linux это можно легко настроить с помощью утилиты
1. Синхронизация с помощью rsync.
Где:
-a - архивный режим, сохраняет права доступа, владельцев и временные метки.
-v - подробный вывод (можно убрать для «тихой» работы).
--delete - удаляет файлы в целевом каталоге, если их больше нет в исходном, поддерживая полную идентичность.
Пример использования:
В этом примере файлы file1.txt и file2.txt синхронизируются, а old_file.txt удаляется из каталога /backup/documents/, так как его больше нет в исходной директории.
2. Настройка автоматической синхронизации с помощью cron. Чтобы автоматизировать процесс, можно добавить команду rsync в cron, который позволит запускать её по расписанию.
Открываем крон:
И добавим задание для выполнения синхронизации каждые 6 часов. Строка будет выглядеть так:
Расшифровка:
0 - запускает команду в начале часа.
*/6 - выполняет команду каждые 6 часов.
Остальные * - символы для указания всех дней, месяцев и дней недели.
Теперь cron будет автоматически запускать
3. Мониторинг синхронизации. Для того чтобы убедиться в успешном выполнении синхронизации, можно перенаправить вывод в лог:
Теперь все действия будут записаны в /var/log/rsync.log, и можно будет легко проверить, была ли синхронизация успешной.
BashTex📱 #linux #utils
Автоматическая синхронизация каталогов полезна для резервного копирования, синхронизации данных между устройствами или поддержания одинакового содержимого в разных местах. В Linux это можно легко настроить с помощью утилиты
rsync и расписания через cron.1. Синхронизация с помощью rsync.
rsync - это инструмент для синхронизации файлов и папок. Он поддерживает инкрементное копирование, что означает передачу только измененных файлов, экономя время и ресурсы.
rsync -av --delete /source/directory/ /destination/directory/
Где:
-a - архивный режим, сохраняет права доступа, владельцев и временные метки.
-v - подробный вывод (можно убрать для «тихой» работы).
--delete - удаляет файлы в целевом каталоге, если их больше нет в исходном, поддерживая полную идентичность.
Пример использования:
rsync -av --delete /home/user/documents/ /backup/documents/
sending incremental file list
file1.txt
file2.txt
deleting old_file.txt
В этом примере файлы file1.txt и file2.txt синхронизируются, а old_file.txt удаляется из каталога /backup/documents/, так как его больше нет в исходной директории.
2. Настройка автоматической синхронизации с помощью cron. Чтобы автоматизировать процесс, можно добавить команду rsync в cron, который позволит запускать её по расписанию.
Открываем крон:
crontab -eИ добавим задание для выполнения синхронизации каждые 6 часов. Строка будет выглядеть так:
0 */6 * * * rsync -av --delete /home/user/documents/ /backup/documents/
Расшифровка:
0 - запускает команду в начале часа.
*/6 - выполняет команду каждые 6 часов.
Остальные * - символы для указания всех дней, месяцев и дней недели.
Теперь cron будет автоматически запускать
rsync для синхронизации каталогов каждые 6 часов.3. Мониторинг синхронизации. Для того чтобы убедиться в успешном выполнении синхронизации, можно перенаправить вывод в лог:
rsync -av --delete /source/directory/ /destination/directory/ >> /var/log/rsync.log 2>&1
Теперь все действия будут записаны в /var/log/rsync.log, и можно будет легко проверить, была ли синхронизация успешной.
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Как собрать все логи за день и заархивировать их
Если логи занимают значительный объём, неплохо было бы собирать их в архив и перемещать в отдельный каталог. Сегодня как раз об этом, напишем скрипт, который это автоматизирует.
Допустим, есть у нас исходная директория с логами: /bashtex/logs и в ней хранятся логи вида: BashTex_DAY_20241105_1758.log
Архив с логами за день нужно перекинуть в /bashtex/logs/backup/ с названием подкаталога в формате DDMMYYYY.
Bash-скрипт решающий данную задачу:
Небольшое пояснение:
Выдаем права на исполнение:
И запускаем:
Теперь логи за текущий день будут собираться, архивироваться и переноситься в папку /bashtex/logs/backup/DDMMYYYY. Можно это дело докрутить под нужную маску логов и архивировать только то, что необходимо, а не все логи за день. Также это дело можно добавить в крон и архивировать раз в сутки
BashTex📱 #linux #bash
Если логи занимают значительный объём, неплохо было бы собирать их в архив и перемещать в отдельный каталог. Сегодня как раз об этом, напишем скрипт, который это автоматизирует.
Допустим, есть у нас исходная директория с логами: /bashtex/logs и в ней хранятся логи вида: BashTex_DAY_20241105_1758.log
20241105 — это дата в формате YYYYMMDD, представляющая собой 5 ноября 2024 года.
Архив с логами за день нужно перекинуть в /bashtex/logs/backup/ с названием подкаталога в формате DDMMYYYY.
Bash-скрипт решающий данную задачу:
#!/bin/bash
# Исходный каталог с логами
LOG_DIR="/bashtex/logs"
# Каталог для хранения бэкапов
BACKUP_DIR="$LOG_DIR/backup"
# Определение текущей даты в нужных форматах
CURRENT_DATE=$(date +"%Y%m%d") # Формат для поиска логов YYYYMMDD
CURRENT_DATE_FORMATTED=$(date +"%d%m%Y") # Формат для папки бэкапа DDMMYYYY
# Создание имени архива с логами
ARCHIVE_NAME="logs_$CURRENT_DATE_FORMATTED.tar.gz"
# Каталог для сегодняшнего бэкапа
TARGET_DIR="$BACKUP_DIR/$CURRENT_DATE_FORMATTED"
# Проверка и создание целевого каталога, если его нет
if [ ! -d "$TARGET_DIR" ]; then
echo "Создаю директорию для бэкапа: $TARGET_DIR"
mkdir -p "$TARGET_DIR"
fi
# Поиск и архивирование логов за текущий день
echo "Собираю логи за $CURRENT_DATE и архивирую в $ARCHIVE_NAME"
find "$LOG_DIR" -type f -name "*_$CURRENT_DATE_*.log" -print0 | tar -czvf "$TARGET_DIR/$ARCHIVE_NAME" --null -T -
echo "Архив создан и перемещён в $TARGET_DIR/$ARCHIVE_NAME"
Небольшое пояснение:
LOG_DIR — каталог с логами.
BACKUP_DIR — основной каталог для хранения архивов.
CURRENT_DATE — текущая дата в формате YYYYMMDD, для поиска логов.
CURRENT_DATE_FORMATTED — текущая дата в формате DDMMYYYY, для названия папки.
Выдаем права на исполнение:
chmod +x backup_logs.sh
И запускаем:
./backup_logs.sh
Теперь логи за текущий день будут собираться, архивироваться и переноситься в папку /bashtex/logs/backup/DDMMYYYY. Можно это дело докрутить под нужную маску логов и архивировать только то, что необходимо, а не все логи за день. Также это дело можно добавить в крон и архивировать раз в сутки
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5
Разведка на DNS: команда dig
Команда
Для чего нужна команда:
1. Чтобы узнать IP-адрес домена, используется базовый запрос:
Вывод покажет IP-адреса, ответственный DNS-сервер, время отклика и другие данные. Например:
Если нужно найти конкретную запись, например MX для почты или TXT для домена, укажите её тип:
Это покажет все почтовые серверы для домена example.com.
2. Запрос к конкретному DNS-серверу. Чтобы проверить, как разные серверы видят один и тот же домен, можно указать сервер, к которому идет запрос. Например, запрос к публичному DNS Google:
Полный вывод бывает излишним, если нужно лишь IP-адрес. Краткий ответ можно получить с флагом +short:
В таком случае вывод будет простым и коротким:
3. Трассировка DNS-запроса. Чтобы узнать, через какие сервера проходит запрос к домену, используйте +trace:
Полезно для отладки: вывод покажет путь до конечного сервера.
В результате, команда
BashTex📱 #linux #networks
Команда
dig (Domain Information Groper) - это инструмент для работы с DNS-запросами. Он помогает «прощупать» домены и получить информацию, которая может быть полезной разработчикам, администраторам и любому, кто работает с сетями.Для чего нужна команда:
Проверка DNS-записей: dig позволяет увидеть, какие записи (A, MX, CNAME, TXT и другие) связаны с доменом.
Диагностика сети: можно проверить, корректно ли настроен DNS, как быстро отдает ответы сервер, и видны ли изменения DNS.
Тестирование работы сервера: dig позволяет узнать IP-адрес, к которому привязан домен, или данные о почтовых серверах.
1. Чтобы узнать IP-адрес домена, используется базовый запрос:
dig example.com
Вывод покажет IP-адреса, ответственный DNS-сервер, время отклика и другие данные. Например:
;; ANSWER SECTION:
example.com. 300 IN A 93.184.216.34
Если нужно найти конкретную запись, например MX для почты или TXT для домена, укажите её тип:
dig example.com MX
Это покажет все почтовые серверы для домена example.com.
2. Запрос к конкретному DNS-серверу. Чтобы проверить, как разные серверы видят один и тот же домен, можно указать сервер, к которому идет запрос. Например, запрос к публичному DNS Google:
dig @8.8.8.8 example.com
Полный вывод бывает излишним, если нужно лишь IP-адрес. Краткий ответ можно получить с флагом +short:
dig example.com +short
В таком случае вывод будет простым и коротким:
93.184.216.34
3. Трассировка DNS-запроса. Чтобы узнать, через какие сервера проходит запрос к домену, используйте +trace:
dig example.com +trace
Полезно для отладки: вывод покажет путь до конечного сервера.
В результате, команда
dig — это швейцарский нож для работы с DNS, позволяющий глубже понять устройство сетевых путей, исследовать домены и получать информацию о DNS-серверах. Пользуйтесь ею для сетевой диагностики и не забывайте о возможности точных и быстрых запросов с помощью +short и +trace!BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Улучшенный мониторинг системных ресурсов
Сегодня поговорим про htop.
Основные плюсы использования:
Установка htop:
Для Debian/Ubuntu:
Для CentOS/RHEL:
Для Arch Linux:
Основные возможности и использование
Запуск htop осуществляется простой командой в терминале:
Появится цветной интерфейс с данными о текущих процессах, использовании CPU и памяти, времени работы системы и многом другом.
Навигация по интерфейсу
Теперь вы можете использовать
Запустите
Наведите курсор на процесс и нажмите F9.
Выберите сигнал (по умолчанию SIGTERM) и нажмите Enter, чтобы завершить процесс.
BashTex📱 #linux #monitoring
Сегодня поговорим про htop.
htop - это интерактивная версия классической команды top, которая используется для мониторинга процессов и использования ресурсов в реальном времени. В отличие от top, htop предоставляет более удобный интерфейс, поддержку цветовой схемы, мышиное управление и дополнительные функции для анализа производительности.Основные плюсы использования:
Удобочитаемость: htop имеет цветной интерфейс, который делает вывод данных более понятным и легким для восприятия.
Навигация: Можно легко прокручивать список процессов вверх и вниз, используя клавиши со стрелками.
Управление процессами: С htop можно убивать процессы с помощью интерфейса, что упрощает работу по сравнению с вводом PID вручную в kill.
Отображение дерева процессов: Можно увидеть процессы в виде дерева, что помогает понять их взаимосвязь и структуру.
Установка htop:
Для Debian/Ubuntu:
sudo apt update
sudo apt install htop
Для CentOS/RHEL:
sudo yum install htop
Для Arch Linux:
sudo pacman -S htop
Основные возможности и использование
Запуск htop осуществляется простой командой в терминале:
htop
Появится цветной интерфейс с данными о текущих процессах, использовании CPU и памяти, времени работы системы и многом другом.
Навигация по интерфейсу
Стрелки вверх/вниз: перемещение по списку процессов.
F2 (Setup): позволяет настроить отображение и поведение htop.
F3 (Search): поиск процесса по имени.
F4 (Filter): фильтрация процессов.
F5 (Tree): переключение на отображение в виде дерева.
F9 (Kill): завершение выбранного процесса.
Пример: Завершение ресурсоемкого процесса
Теперь вы можете использовать
htop для выявления «прожорливых» процессов:Запустите
htop и найдите процесс с высоким использованием CPU или памяти.Наведите курсор на процесс и нажмите F9.
Выберите сигнал (по умолчанию SIGTERM) и нажмите Enter, чтобы завершить процесс.
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Быстрое создание пакетов файлов для тестирования
В процессе разработки и тестирования часто требуется быстро создавать файлы для симуляции различных сценариев. Linux предоставляет множество инструментов, позволяющих автоматизировать этот процесс. Рассмотрим несколько способов быстрого создания пакетов файлов для тестирования.
1. Создание множества файлов с помощью
Эта команда создаст 10 файлов с именами test_file_1.txt, test_file_2.txt и так далее.
2. Генерация файлов с содержимым. Для создания файлов с текстом можно использовать echo или printf:
Каждый файл будет содержать строку "This is test content X", где X — номер файла.
3. Создание больших файлов с помощью
Эта команда создаст файл large_test_file.bin размером 100 MB, заполненный случайными данными. Для создания текстового файла можно заменить /dev/urandom на /dev/zero для заполнения нулями.
4. Создание архива с тестовыми файлами. Чтобы сжать файлы в архив для последующего тестирования:
Эта команда создаст архив test_files.tar.gz, содержащий все файлы, подходящие под шаблон test_file_*.txt.
5. Пример использования fallocate.
Эта команда создаст файл test_file_large.txt размером 50 MB, полезный для проверки объема или симуляции заполненного диска.
Эти простые команды помогут сгенерировать файлы различных размеров и типов в считанные секунды. Используйте их для тестирования различных сценариев, будь то загрузка, обработка больших данных или симуляция хранения.
BashTex📱 #linux #utils
В процессе разработки и тестирования часто требуется быстро создавать файлы для симуляции различных сценариев. Linux предоставляет множество инструментов, позволяющих автоматизировать этот процесс. Рассмотрим несколько способов быстрого создания пакетов файлов для тестирования.
1. Создание множества файлов с помощью
touch и цикла. Если нужно создать несколько пустых файлов с разными именами, можно использовать команду touch и цикл for:
for i in {1..10}; do touch test_file_$i.txt; done
Эта команда создаст 10 файлов с именами test_file_1.txt, test_file_2.txt и так далее.
2. Генерация файлов с содержимым. Для создания файлов с текстом можно использовать echo или printf:
for i in {1..5}; do echo "This is test content $i" > test_file_$i.txt; done
Каждый файл будет содержать строку "This is test content X", где X — номер файла.
3. Создание больших файлов с помощью
dd. Иногда требуется сгенерировать большие файлы для тестирования производительности:
dd if=/dev/urandom of=large_test_file.bin bs=1M count=100
Эта команда создаст файл large_test_file.bin размером 100 MB, заполненный случайными данными. Для создания текстового файла можно заменить /dev/urandom на /dev/zero для заполнения нулями.
4. Создание архива с тестовыми файлами. Чтобы сжать файлы в архив для последующего тестирования:
tar -czvf test_files.tar.gz test_file_*.txt
Эта команда создаст архив test_files.tar.gz, содержащий все файлы, подходящие под шаблон test_file_*.txt.
5. Пример использования fallocate.
fallocate позволяет быстро выделять место для файлов:
fallocate -l 50M test_file_large.txt
Эта команда создаст файл test_file_large.txt размером 50 MB, полезный для проверки объема или симуляции заполненного диска.
Эти простые команды помогут сгенерировать файлы различных размеров и типов в считанные секунды. Используйте их для тестирования различных сценариев, будь то загрузка, обработка больших данных или симуляция хранения.
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Погружение в контейнеры и пространства процессов
Сегодня познакомимся с
Что такое nsenter?
Для чего используется nsenter?
1. Подключение к процессу. Рассмотрим пример использования, попробуем подключиться к процессу с PID 1234:
Эта команда подключит вас ко всем пространствам имен, связанным с процессом 1234, включая монтирование, сеть, PID и другие.
2. Подключение только к пространству имен PID. Иногда необходимо работать только с процессами, не затрагивая сеть и файловую систему:
Здесь подключение происходит к пространствам процессов (PID), монтирования и UTS (имена хостов).
3. Использование nsenter для работы с контейнерами Docker. Для начала нужно найти PID контейнера:
Затем подключитесь к контейнеру:
4. Использование nsenter для выполнения команды. Чтобы выполнить команду в пространстве имен процесса:
Откроется оболочка Bash, в которой вы сможете выполнять команды в контексте процесса с PID 1234.
---
Если
BashTex📱 #linux #utils
Сегодня познакомимся с
nsenter - инструментом для системных администраторов и разработчиков, работающих с контейнерами и виртуальными средами. Она позволяет подключаться к различным пространствам имен (namespaces) существующих процессов и выполнять команды в их контексте. Это особенно полезно для работы с контейнерами Docker, Kubernetes и другими решениями виртуализации.Что такое nsenter?
nsenter позволяет «войти» в пространство имен процесса, чтобы получить доступ к его окружению. Пространства имен в Linux используются для изоляции процессов, сети, монтирования файловых систем и других аспектов системы.
Для чего используется nsenter?
Отладка контейнеров: подключение к контейнеру без использования Docker-клиента.
Администрирование: выполнение команд в контексте изолированного процесса или контейнера.
Миграция и анализ: тестирование и перенос задач между разными пространствами процессов.
1. Подключение к процессу. Рассмотрим пример использования, попробуем подключиться к процессу с PID 1234:
sudo nsenter --target 1234 --all
Эта команда подключит вас ко всем пространствам имен, связанным с процессом 1234, включая монтирование, сеть, PID и другие.
2. Подключение только к пространству имен PID. Иногда необходимо работать только с процессами, не затрагивая сеть и файловую систему:
sudo nsenter --target 1234 --pid --mount --uts
Здесь подключение происходит к пространствам процессов (PID), монтирования и UTS (имена хостов).
3. Использование nsenter для работы с контейнерами Docker. Для начала нужно найти PID контейнера:
docker inspect -f '{{.State.Pid}}' <container_id>
Затем подключитесь к контейнеру:
sudo nsenter --target <PID> --mount --uts --ipc --net --pid
4. Использование nsenter для выполнения команды. Чтобы выполнить команду в пространстве имен процесса:
sudo nsenter --target 1234 --all -- bash
Откроется оболочка Bash, в которой вы сможете выполнять команды в контексте процесса с PID 1234.
---
Если
nsenter не установлен в системе, его всегда можно установить через пакет util-linuxBashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Инструмент для мониторинга сетевых файловых систем
Сегодня поговорим об одном важном инструменте, зовут его Kube Trace NFS. Предназначен он для мониторинга сетевых файловых систем (NFS) в Kubernetes-кластерах с использованием eBPF.
Что он делает?
Github📱
BashTex📱 #monitoring #devops
Сегодня поговорим об одном важном инструменте, зовут его Kube Trace NFS. Предназначен он для мониторинга сетевых файловых систем (NFS) в Kubernetes-кластерах с использованием eBPF.
Что он делает?
Он отслеживает операции чтения, записи, открытия и получения атрибутов для сбора телеметрии на уровне узла, экспортируя данные в Prometheus для анализа в Grafana. Инструмент предназначен для более детального контроля NFS-трафика между клиентами и серверами, поддерживает метрики по производительности и задержкам, а также интегрируется с Helm для установки.
Github
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4