Сжимаем данные до неузнаваемости
Для сжатия в 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
Установка разрешений по умолчанию
В Linux, когда создаются новые файлы или директории, им автоматически назначаются определенные права доступа. Эти права регулируются с помощью утилиты
Что такое umask?
Для файлов: максимальные разрешения - 666 (rw-rw-rw-).
Для директорий: максимальные разрешения - 777 (rwxrwxrwx).
1. Проверка текущего значения umask:
Вывод, например, 0022, означает, что новые файлы будут создаваться с правами 644 (rw-r--r--), а директории — с правами 755 (rwxr-xr-x).
2. Настройка umask для текущей сессии: Чтобы установить umask так, чтобы новые файлы создавались с правами 664 (rw-rw-r--), а директории с правами 775 (rwxrwxr-x):
3. Постоянное изменение umask: Чтобы изменить umask для всех пользователей и сеансов, добавьте строку в файл ~/.bashrc, ~/.profile или /etc/profile:
После этого новые файлы будут создаваться с правами 640 (rw-r-----), а директории — с 750 (rwxr-x---), что ограничивает доступ для других пользователей.
Как работает umask? Маска umask вычитает указанные права из максимальных значений:
Настройка umask особенно важна для многопользовательских систем, где необходимо ограничить доступ к создаваемым файлам и папкам. Например, umask 0077 подходит для случаев, когда файлы должны быть доступны только их владельцу (права 600 для файлов и 700 для директорий).
BashTex📱 #linux #utils
В Linux, когда создаются новые файлы или директории, им автоматически назначаются определенные права доступа. Эти права регулируются с помощью утилиты
umask, которая задает маску доступа по умолчанию. Понимание работы umask позволяет администратору управлять правами доступа и обеспечивать безопасность данных.Что такое umask?
umask определяет, какие разрешения не будут устанавливаться при создании нового файла или директории. Она представляет собой побитовую маску, которая вычитает определенные права доступа из максимальных возможных прав.
Для файлов: максимальные разрешения - 666 (rw-rw-rw-).
Для директорий: максимальные разрешения - 777 (rwxrwxrwx).
1. Проверка текущего значения umask:
umask
Вывод, например, 0022, означает, что новые файлы будут создаваться с правами 644 (rw-r--r--), а директории — с правами 755 (rwxr-xr-x).
2. Настройка umask для текущей сессии: Чтобы установить umask так, чтобы новые файлы создавались с правами 664 (rw-rw-r--), а директории с правами 775 (rwxrwxr-x):
umask 0002
3. Постоянное изменение umask: Чтобы изменить umask для всех пользователей и сеансов, добавьте строку в файл ~/.bashrc, ~/.profile или /etc/profile:
umask 0027
После этого новые файлы будут создаваться с правами 640 (rw-r-----), а директории — с 750 (rwxr-x---), что ограничивает доступ для других пользователей.
Как работает umask? Маска umask вычитает указанные права из максимальных значений:
Файл с umask 0022:
Максимальные права 666 → 644 (rw-r--r--).
Директория с umask 0022:
Максимальные права 777 → 755 (rwxr-xr-x).
Настройка umask особенно важна для многопользовательских систем, где необходимо ограничить доступ к создаваемым файлам и папкам. Например, umask 0077 подходит для случаев, когда файлы должны быть доступны только их владельцу (права 600 для файлов и 700 для директорий).
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
Умная оболочка для повседневных задач
Ключевые возможности:
Установка insh. Для начала работы необходимо установить insh. Обычно оболочка доступна в официальных репозиториях, но можно использовать и GitHub для последней версии:
Пример работы с insh. После установки введите insh для запуска оболочки:
В процессе работы начните ввод команды, например, tar, и insh предложит автодополнение с объяснением ключей:
А теперь коротко про ключевые фишки, зачем оно нужно и чем помогает:
BashTex📱 #linux #utils
insh - это попытка объединить возможности традиционных shell'ов с интеллектуальными функциями, которые обычно ассоциируются с современными текстовыми редакторами и IDE. Основные цели insh — минимизация ошибок, повышение продуктивности и улучшение пользовательского опыта.Ключевые возможности:
Интеллектуальные подсказки и автодополнение: insh поддерживает контекстуальные подсказки, которые помогают пользователю понять, какие команды и параметры доступны в текущем контексте. Например, при вводе ls или grep, оболочка подскажет доступные ключи и параметры, что облегчает запоминание.
Ошибкоустойчивость: insh помогает избежать ошибок, предупреждая о неправильных синтаксисах и предоставляя советы по их исправлению. Это особенно полезно для новичков, которые только начинают работать с командной строкой.
История команд с улучшенным поиском: insh позволяет легко находить ранее использованные команды с помощью мощной функции поиска по истории. Команды можно искать не только по первому символу, но и по ключевым словам.
Встроенная поддержка документации: При использовании команд insh отображает встроенные справочные материалы и примеры, что избавляет от необходимости переключаться на браузер для поиска документации.
Установка insh. Для начала работы необходимо установить insh. Обычно оболочка доступна в официальных репозиториях, но можно использовать и GitHub для последней версии:
git clone https://github.com/intellishell/insh.git
cd insh
sudo make install
Пример работы с insh. После установки введите insh для запуска оболочки:
insh
В процессе работы начните ввод команды, например, tar, и insh предложит автодополнение с объяснением ключей:
tar -[option] [file]
Options:
-c Create a new archive
-x Extract files from an archive
-t List the contents of an archive
А теперь коротко про ключевые фишки, зачем оно нужно и чем помогает:
Поддержка скриптов: insh может использоваться для написания скриптов, где автодополнение и проверка синтаксиса помогают избежать ошибок.
Модульность: оболочка поддерживает плагины и расширения, которые можно установить для добавления новых функций.
Совместимость: insh совместим с большинством стандартных команд и утилит Linux.
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🤨1
Тестируем производительность серверов
YABS проверяет:
Производительность процессора с помощью sysbench.
Скорость дисковых операций (I/O) для SSD и HDD.
Сетевую пропускную способность через iperf3, тестируя скорость связи с различными узлами.
Установка и запуск YABS. Запуск YABS осуществляется без предварительной установки, достаточно использовать команду curl или wget:
или
Что вы получите? После выполнения скрипта вы получите подробный отчет, который включает:
Результаты теста CPU: количество операций за секунду (OPS).
Результаты дисковых операций: скорость чтения и записи.
Скорость сети: измерения скорости загрузки и выгрузки данных с разных серверов по всему миру.
Ссылка на GitHub📱
BashTex📱 #bash #utils
YABS (Yet Another Benchmark Script) - популярный скрипт для быстрого тестирования производительности серверов. Он предназначен для оценки дисковой производительности, пропускной способности сети и производительности процессора. YABS прост в использовании, и его можно запустить всего одной командой.
YABS проверяет:
Производительность процессора с помощью sysbench.
Скорость дисковых операций (I/O) для SSD и HDD.
Сетевую пропускную способность через iperf3, тестируя скорость связи с различными узлами.
Установка и запуск YABS. Запуск YABS осуществляется без предварительной установки, достаточно использовать команду curl или wget:
curl -sL yabs.sh | bash
или
wget -qO- yabs.sh | bash
Что вы получите? После выполнения скрипта вы получите подробный отчет, который включает:
Результаты теста CPU: количество операций за секунду (OPS).
Результаты дисковых операций: скорость чтения и записи.
Скорость сети: измерения скорости загрузки и выгрузки данных с разных серверов по всему миру.
Ссылка на GitHub
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🗿1
Перенос больших файлов с помощью SCP
SCP - это отличный инструмент для переноса данных, однако при работе с большими файлами могут возникать определенные проблемы, такие как прерывание соединения или медленная скорость передачи. В этой статье рассмотрим, как эффективно использовать
Обычный перенос данных осуществляется так:
Но как быть если архив большой? Одно из решений - сжатие данных. Используйте флаг -C, чтобы сжать данные во время передачи. Это может значительно ускорить передачу, особенно для текстовых и плохо сжатых файлов:
Другие полезные фишки:
Ограничение скорости передачи. Чтобы избежать перегрузки сети, можно ограничить скорость передачи с помощью флага -l (в килобитах в секунду):
Здесь -l 5000 ограничивает скорость до 5000 Кбит/с (примерно 625 КБ/с).
Перезапуск передачи после сбоя. Если передача файла была прервана, ее нужно начать заново. Однако, чтобы избежать этого, лучше использовать
---
Альтернативой scp является rsync, который поддерживает:
Пример использования rsync:
Флаг -P включает отображение прогресса и позволяет продолжить передачу при прерывании.
BashTex📱 #linux #utils
SCP - это отличный инструмент для переноса данных, однако при работе с большими файлами могут возникать определенные проблемы, такие как прерывание соединения или медленная скорость передачи. В этой статье рассмотрим, как эффективно использовать
scp для передачи больших файлов.Обычный перенос данных осуществляется так:
scp logs.tar user@192.168.1.10:/project/logs/
Но как быть если архив большой? Одно из решений - сжатие данных. Используйте флаг -C, чтобы сжать данные во время передачи. Это может значительно ускорить передачу, особенно для текстовых и плохо сжатых файлов:
scp -C logs.tar user@192.168.1.10:/project/logs/
Другие полезные фишки:
Ограничение скорости передачи. Чтобы избежать перегрузки сети, можно ограничить скорость передачи с помощью флага -l (в килобитах в секунду):
scp -l 5000 logs.tar user@192.168.1.10:/project/logs/
Здесь -l 5000 ограничивает скорость до 5000 Кбит/с (примерно 625 КБ/с).
Перезапуск передачи после сбоя. Если передача файла была прервана, ее нужно начать заново. Однако, чтобы избежать этого, лучше использовать
rsync, который поддерживает продолжение передачи с места остановки:
rsync --partial --progress logs.tar user@192.168.1.10:/project/logs/
---
Альтернативой scp является rsync, который поддерживает:
Продолжение передачи после прерывания.
Более эффективное сжатие и контроль изменений.
Пример использования rsync:
rsync -avP logs.tar user@192.168.1.10:/project/logs/
Флаг -P включает отображение прогресса и позволяет продолжить передачу при прерывании.
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
Настройка безопасного SSH-соединения
SSH - это основной инструмент для безопасного управления серверами и обмена данными в сети. Однако, чтобы минимизировать риски и усилить защиту сервера, необходимо настроить SSH-соединение с дополнительными мерами безопасности. В этой статье разберем ключевые шаги для улучшения безопасности SSH.
1. Отключение входа по паролю. Использование паролей может быть уязвимо к атакам типа brute-force. Настройка входа по SSH-ключам делает подключение гораздо более защищенным.
Создание SSH-ключа:
Добавление ключа на сервер:
После успешного добавления ключа, в файле /etc/ssh/sshd_config измените строку:
2. Изменение стандартного порта SSH. Для предотвращения автоматизированных сканирований лучше изменить стандартный порт с 22 на менее очевидный.
Измените строку в файле /etc/ssh/sshd_config:
Перезапустите SSH:
3. Ограничение входа по IP-адресам. Если возможно, настройте брандмауэр для разрешения подключения к SSH только с определенных IP-адресов.
Используйте ufw для настройки правил:
4. Настройка двухфакторной аутентификации (2FA). Установка двухфакторной аутентификации добавляет дополнительный уровень защиты.
Установите Google Authenticator:
Настройте PAM для использования 2FA, добавив строку в /etc/pam.d/sshd:
5. Ограничение числа попыток подключения. Используйте fail2ban для защиты от атак грубой силы.
Установите fail2ban:
Настройте его в /etc/fail2ban/jail.local:
6. Отключение входа для root. Чтобы защитить сервер, запретите прямой вход root-пользователя.
В файле /etc/ssh/sshd_config измените:
Комбинация использования SSH-ключей, изменения порта, ограничения доступа и дополнительных мер, таких как 2FA и fail2ban, делает ваш сервер значительно менее уязвимым к атакам.
BashTex📱 #linux #security
SSH - это основной инструмент для безопасного управления серверами и обмена данными в сети. Однако, чтобы минимизировать риски и усилить защиту сервера, необходимо настроить SSH-соединение с дополнительными мерами безопасности. В этой статье разберем ключевые шаги для улучшения безопасности SSH.
1. Отключение входа по паролю. Использование паролей может быть уязвимо к атакам типа brute-force. Настройка входа по SSH-ключам делает подключение гораздо более защищенным.
Создание SSH-ключа:
ssh-keygen -t rsa -b 4096
Добавление ключа на сервер:
ssh-copy-id user@server_ip
После успешного добавления ключа, в файле /etc/ssh/sshd_config измените строку:
PasswordAuthentication no2. Изменение стандартного порта SSH. Для предотвращения автоматизированных сканирований лучше изменить стандартный порт с 22 на менее очевидный.
Измените строку в файле /etc/ssh/sshd_config:
Port 2222Перезапустите SSH:
sudo systemctl restart ssh
3. Ограничение входа по IP-адресам. Если возможно, настройте брандмауэр для разрешения подключения к SSH только с определенных IP-адресов.
Используйте ufw для настройки правил:
sudo ufw allow from 192.168.1.100 to any port 2222
sudo ufw enable
4. Настройка двухфакторной аутентификации (2FA). Установка двухфакторной аутентификации добавляет дополнительный уровень защиты.
Установите Google Authenticator:
sudo apt install libpam-google-authenticator
Настройте PAM для использования 2FA, добавив строку в /etc/pam.d/sshd:
auth required pam_google_authenticator.so5. Ограничение числа попыток подключения. Используйте fail2ban для защиты от атак грубой силы.
Установите fail2ban:
sudo apt install fail2ban
Настройте его в /etc/fail2ban/jail.local:
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
6. Отключение входа для root. Чтобы защитить сервер, запретите прямой вход root-пользователя.
В файле /etc/ssh/sshd_config измените:
PermitRootLogin noКомбинация использования SSH-ключей, изменения порта, ограничения доступа и дополнительных мер, таких как 2FA и fail2ban, делает ваш сервер значительно менее уязвимым к атакам.
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17
Углубленное использование find
Пример базового поиска всех файлов с расширением .txt в текущем каталоге:
Но что если задача чуть сложнее, чем просто найти файлы с одним расширением?
1. Поиск по времени изменения и доступа. find может искать файлы по дате их изменения или доступа:
Файлы, измененные за последние 7 дней/Файлы, доступ к которым был более 30 дней назад:
2. Поиск по размеру. Если вам нужно найти файлы определенного размера/Файлы меньше 1 КБ:
3. Поиск по типу файла. find может искать определенные типы файлов:
Только каталоги/Только обычные файлы:
4. Комбинирование условий. С помощью логических операторов можно комбинировать разные условия:
Поиск файлов .log, измененных за последние 3 дня:
Исключение определенных файлов:
5. Выполнение действий с найденными файлами. find поддерживает выполнение команд с найденными файлами:
Удаление файлов старше 30 дней/Сжатие найденных файлов:
6. Использование find с xargs для повышения производительности. Для более эффективной обработки большого количества файлов используйте
Удаление всех файлов .tmp с помощью xargs:
Бонусом, полезные флаги:
BashTex📱 #linux #utils
find - это одна из мощных команд в арсенале Linux, которая позволяет находить файлы и каталоги по множеству критериев. Применяя её в комбинации с другими утилитами и флагами, вы можете добиться впечатляющих результатов и автоматизировать рутинные задачи.Пример базового поиска всех файлов с расширением .txt в текущем каталоге:
find . -name "*.txt"
Но что если задача чуть сложнее, чем просто найти файлы с одним расширением?
1. Поиск по времени изменения и доступа. find может искать файлы по дате их изменения или доступа:
Файлы, измененные за последние 7 дней/Файлы, доступ к которым был более 30 дней назад:
find /path/to/dir -mtime -7
find /path/to/dir -atime +30
2. Поиск по размеру. Если вам нужно найти файлы определенного размера/Файлы меньше 1 КБ:
find /path/to/dir -size +100M
find /path/to/dir -size -1k
3. Поиск по типу файла. find может искать определенные типы файлов:
Только каталоги/Только обычные файлы:
find /path/to/dir -type d
find /path/to/dir -type f
4. Комбинирование условий. С помощью логических операторов можно комбинировать разные условия:
Поиск файлов .log, измененных за последние 3 дня:
find /path/to/dir -name "*.log" -mtime -3
Исключение определенных файлов:
find /path/to/dir -type f ! -name "*.bak"
5. Выполнение действий с найденными файлами. find поддерживает выполнение команд с найденными файлами:
Удаление файлов старше 30 дней/Сжатие найденных файлов:
find /path/to/dir -type f -mtime +30 -exec rm {} \;
find /path/to/dir -name "*.log" -exec gzip {} \;
6. Использование find с xargs для повышения производительности. Для более эффективной обработки большого количества файлов используйте
xargs:Удаление всех файлов .tmp с помощью xargs:
find /path/to/dir -name "*.tmp" | xargs rm
Бонусом, полезные флаги:
-maxdepth N: Ограничивает глубину поиска.
-mindepth N: Исключает файлы выше указанной глубины.
-print0 и xargs -0: Обработка имен файлов с пробелами.
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
Управление облачным хранилищем Backblaze B2 из командной строки
Backblaze B2 - одно из самых доступных и надежных облачных хранилищ, а утилита
b2-tools - это CLI-утилита, предоставляемая Backblaze, которая позволяет:
В этой статье рассмотрим установку, настройку и базовые команды для работы с b2-tools.
1. Установка b2-tools:
Убедитесь, что у вас установлен Python 3, а затем установите b2-tools через pip:
2. Настройка подключения. Для работы с B2 вам понадобятся Account ID и Application Key, которые можно получить в панели управления Backblaze.
Настройте утилиту:
Введите ваши Account ID и Application Key, после чего утилита сохранит настройки авторизации.
3. Работа с хранилищами (buckets). Создание нового хранилища:
Где allPrivate указывает, что файлы будут приватными (можно указать allPublic для публичного доступа).
Список основных команд:
---
Скрипт для загрузки всех файлов из директории:
Можете интегрировать с Cron для автоматизированного резервного копирования:
И напоследок, перед загрузкой файлов можете зашифровать их с помощью
BashTex📱 #linux #utils
Backblaze B2 - одно из самых доступных и надежных облачных хранилищ, а утилита
b2-tools позволяет работать с ним прямо из терминала. Это мощный инструмент для разработчиков, системных администраторов и всех, кто хочет автоматизировать работу с B2.b2-tools - это CLI-утилита, предоставляемая Backblaze, которая позволяет:
Загружать и скачивать файлы.
Управлять хранилищами (buckets).
Настраивать права доступа и политики хранения.
Мониторить использование ресурсов
В этой статье рассмотрим установку, настройку и базовые команды для работы с b2-tools.
1. Установка b2-tools:
Убедитесь, что у вас установлен Python 3, а затем установите b2-tools через pip:
pip install b2
2. Настройка подключения. Для работы с B2 вам понадобятся Account ID и Application Key, которые можно получить в панели управления Backblaze.
Настройте утилиту:
b2 authorize-account
Введите ваши Account ID и Application Key, после чего утилита сохранит настройки авторизации.
3. Работа с хранилищами (buckets). Создание нового хранилища:
b2 create-bucket my-new-bucket allPrivate
Где allPrivate указывает, что файлы будут приватными (можно указать allPublic для публичного доступа).
Список основных команд:
b2 list-buckets - список всех хранилищ
b2 delete-bucket my-old-bucket - удаление хранилища
b2 upload-file my-bucket /path/to/local/file.txt file.txt - загрузка файла в хранилище
b2 download-file-by-name my-bucket file.txt /path/to/save/file.txt - скачивание файла
b2 delete-file-version file.txt FILE_ID - удаление файла из хранилища, где FILE_ID можно получить через команду b2 list-file-versions.
b2 get-account-info - мониторинг использования
---
Скрипт для загрузки всех файлов из директории:
for file in /path/to/dir/*; do
b2 upload-file my-bucket "$file" "$(basename $file)"
done
Можете интегрировать с Cron для автоматизированного резервного копирования:
0 2 * * * /usr/bin/b2 upload-file my-bucket /path/to/backup.tar.gz backup.tar.gz
И напоследок, перед загрузкой файлов можете зашифровать их с помощью
gpg:
gpg -c file.txt
b2 upload-file my-bucket file.txt.gpg file.txt.gpg
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
This media is not supported in your browser
VIEW IN TELEGRAM
Альтернатива команде tree
Особенности tre:
Установка:
Показ скрытых файлов:
Интеграция с Git:
tre делает вывод удобным и современным, добавляя цветовые акценты и полезную информацию (например, Git-статусы). Это отличный инструмент для всех, кто работает с большими проектами и хочет видеть структуру файлов "с первого взгляда".
Ссылка на GitHub📱
BashTex📱 #linux #utils
tre - это модернизированная версия команды tree, которая упрощает визуализацию файловой структуры. Она создана для тех, кто ценит удобство, скорость и красоту вывода в терминале.Особенности tre:
Красивый цветной вывод.
Интеграция с Git: отображение состояния файлов (измененные, новые и т.д.).
Минималистичный и понятный интерфейс.
Поддержка фильтров для исключения ненужных файлов.
Установка:
git clone https://github.com/dduan/tre
cd tre
cargo build --releaseПоказ скрытых файлов:
tre -aИнтеграция с Git:
tre -gtre делает вывод удобным и современным, добавляя цветовые акценты и полезную информацию (например, Git-статусы). Это отличный инструмент для всех, кто работает с большими проектами и хочет видеть структуру файлов "с первого взгляда".
Ссылка на GitHub
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
Удаляем особые режимы разрешений в Linux: SUID, SGID и Sticky bit
Файловая система Linux позволяет настраивать специальные режимы разрешений, такие как SUID, SGID, и Sticky bit. Эти флаги предоставляют дополнительные привилегии или ограничения для работы файлов и каталогов, но иногда их нужно удалить, чтобы избежать потенциальных уязвимостей или ошибок.
В этой статье разберём, что означают эти режимы и как безопасно их удалять.
Что такое SUID, SGID и Sticky bit?
1. Как определить наличие специальных флагов? Используйте команду ls с опцией -l:
Пример вывода:
s в правах владельца (rws) указывает на SUID.
s в правах группы (rws) указывает на SGID.
t в правах других пользователей (rwt) указывает на Sticky bit.
Удаление специальных режимов
1. Удаление SUID
Команда удаления и проверка:
2. Удаление SGID
Команда и проверка:
Вывод:
3. Удаление Sticky bit
Команда и проверка:
Вывод:
Автоматическое удаление флагов с группой файлов. Создадим скрипт для массового удаления специальных флагов:
Сохраните скрипт, например, как remove_flags.sh, и не забудьте сделать его исполняемым:
Теперь его можно запускать для нескольких файлов:
Когда стоит удалять специальные флаги?
BashTex📱 #linux #utils
Файловая система Linux позволяет настраивать специальные режимы разрешений, такие как SUID, SGID, и Sticky bit. Эти флаги предоставляют дополнительные привилегии или ограничения для работы файлов и каталогов, но иногда их нужно удалить, чтобы избежать потенциальных уязвимостей или ошибок.
В этой статье разберём, что означают эти режимы и как безопасно их удалять.
Что такое SUID, SGID и Sticky bit?
SUID (Set User ID):
Позволяет запускать файл с правами владельца, а не текущего пользователя.
Пример: /usr/bin/passwd.
SGID (Set Group ID):
Для файлов: позволяет запускать файл с правами группы-владельца.
Для директорий: все новые файлы и папки наследуют группу родительской директории.
Sticky bit:
Обычно используется для директорий, таких как /tmp. Позволяет удалять файлы только владельцу, даже если папка доступна для записи всем.
1. Как определить наличие специальных флагов? Используйте команду ls с опцией -l:
ls -l file_or_directory
Пример вывода:
-rwsr-xr-x 1 root root 12345 Oct 28 10:00 suid_file
drwxrwsr-x 2 user group 4096 Oct 28 10:00 sgid_dir
drwxrwxrwt 2 user group 4096 Oct 28 10:00 sticky_dir
s в правах владельца (rws) указывает на SUID.
s в правах группы (rws) указывает на SGID.
t в правах других пользователей (rwt) указывает на Sticky bit.
Удаление специальных режимов
1. Удаление SUID
Команда удаления и проверка:
chmod u-s suid_file
ls -l suid_file
-rwxr-xr-x 1 root root 12345 Oct 28 10:00 suid_file
2. Удаление SGID
Команда и проверка:
chmod g-s sgid_dir
ls -ld sgid_dir
Вывод:
drwxrwxr-x 2 user group 4096 Oct 28 10:00 sgid_dir
3. Удаление Sticky bit
Команда и проверка:
chmod o-t sticky_dir
ls -ld sticky_dir
Вывод:
drwxrwxr-x 2 user group 4096 Oct 28 10:00 sticky_dir
Автоматическое удаление флагов с группой файлов. Создадим скрипт для массового удаления специальных флагов:
#!/bin/bash
for file in "$@"; do
echo "Удаляем специальные флаги с $file"
chmod u-s,g-s,o-t "$file"
done
Сохраните скрипт, например, как remove_flags.sh, и не забудьте сделать его исполняемым:
chmod +x remove_flags.sh
Теперь его можно запускать для нескольких файлов:
./remove_flags.sh file1 file2 dir1
Когда стоит удалять специальные флаги?
Устаревшие файлы: Удаляйте SUID/SGID у устаревших программ, которые больше не используются.
Безопасность: SUID/SGID могут быть использованы злоумышленниками для эскалации привилегий.
Упрощение управления: Удаление Sticky bit может быть полезным, если директория больше не используется как общедоступная.
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
df: нестандартное использование
Базовая команда с примером вывода:
Флаг -h показывает размеры в удобных для чтения единицах (MB, GB).
1. Уведомление при малом свободном месте. Скрипт для проверки свободного места и отправки уведомления, если оно меньше заданного порога.
Как работает: awk извлекает колонку с использованием (Use%) и сравнивает её с пороговым значением. Если оно превышено, отправляется уведомление.
2. Удаление временных файлов при переполнении. Скрипт для автоматического удаления файлов в /tmp, если свободное место на / меньше 20%.
Как работает: скрипт проверяет, сколько процентов свободного места на корневом разделе, и удаляет файлы старше 7 дней в папке /tmp, если места мало.
3. Мониторинг использования дисков в реальном времени. Скрипт для отображения изменений в свободном месте на диске каждые 5 секунд.
Как работает: бесконечный цикл обновляет вывод df -h каждые 5 секунд, что позволяет отслеживать изменения в реальном времени.
4. Логирование дискового пространства. Скрипт для записи информации о дисковом пространстве в лог-файл с указанием времени.
Как работает: каждая запись логирует текущее состояние дисков с указанием даты и времени. Подробнее о том, зачем это нужно и как применять поговорим завтра.
---
Небольшие советы по использованию df в скриптах:
BashTex📱 #bash #utils
df (disk free) — это команда, которая отображает информацию о свободном и занятом месте на файловых системах. Обычно её используют для быстрого просмотра дискового пространства, но в этой статье мы посмотрим на нестандартное использование команды df в bash-скриптах для автоматизации задач.Базовая команда с примером вывода:
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 30G 20G 60% /
tmpfs 2.0G 1.0M 2.0G 1% /dev/shm
/dev/sdb1 100G 50G 50G 50% /mnt/data
Флаг -h показывает размеры в удобных для чтения единицах (MB, GB).
1. Уведомление при малом свободном месте. Скрипт для проверки свободного места и отправки уведомления, если оно меньше заданного порога.
#!/bin/bash
# Установим порог свободного места (в процентах)
THRESHOLD=80
# Проверяем каждый раздел
df -h | awk 'NR>1 {sub("%", "", $5); if ($5 > ENVIRON["THRESHOLD"]) print $0}' | while read -r line; do
echo "Внимание! Диск переполнен: $line" | mail -s "Диск почти заполнен" admin@bashtex.com
done
Как работает: awk извлекает колонку с использованием (Use%) и сравнивает её с пороговым значением. Если оно превышено, отправляется уведомление.
2. Удаление временных файлов при переполнении. Скрипт для автоматического удаления файлов в /tmp, если свободное место на / меньше 20%.
#!/bin/bash
# Устанавливаем порог
THRESHOLD=20
# Получаем свободное место на /
FREE=$(df / | awk 'NR==2 {sub("%", "", $5); print 100 - $5}')
if [ "$FREE" -lt "$THRESHOLD" ]; then
echo "Мало места на корневом разделе. Удаляю старые файлы в /tmp..."
find /tmp -type f -mtime +7 -delete
echo "Очистка завершена!"
else
echo "Места достаточно: $FREE% свободно."
fi
Как работает: скрипт проверяет, сколько процентов свободного места на корневом разделе, и удаляет файлы старше 7 дней в папке /tmp, если места мало.
3. Мониторинг использования дисков в реальном времени. Скрипт для отображения изменений в свободном месте на диске каждые 5 секунд.
#!/bin/bash
echo "Мониторинг свободного места (каждые 5 секунд):"
while true; do
clear
df -h
sleep 5
done
Как работает: бесконечный цикл обновляет вывод df -h каждые 5 секунд, что позволяет отслеживать изменения в реальном времени.
4. Логирование дискового пространства. Скрипт для записи информации о дисковом пространстве в лог-файл с указанием времени.
#!/bin/bash
LOG_FILE="/var/log/disk_usage.log"
# Логирование состояния дисков
df -h | awk -v date="$(date '+%Y-%m-%d %H:%M:%S')" 'NR==1 {print "Дата:", date; print $0} NR>1 {print}' >> "$LOG_FILE"
echo "Данные записаны в $LOG_FILE"
Как работает: каждая запись логирует текущее состояние дисков с указанием даты и времени. Подробнее о том, зачем это нужно и как применять поговорим завтра.
---
Небольшие советы по использованию df в скриптах:
Используйте флаг -P для более удобного форматирования вывода, если обрабатываете данные через awk или grep.
Комбинируйте df с другими утилитами (find, mail, cron) для автоматизации задач.
Периодически проверяйте скрипты на корректность, чтобы избежать случайного удаления важных данных.
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🤨1
Логирование дискового пространства в Linux: автоматизация и контроль
Дисковое пространство - один из важнейших ресурсов системы. Постоянный мониторинг его состояния помогает избежать неприятных ситуаций, таких как переполнение разделов и остановка важных процессов. Логирование дискового пространства позволяет своевременно выявлять проблемы и анализировать историю использования.
Почему это важно?
1. Создаём систему логирования дискового пространства. Базовый скрипт для логирования:
Вывод в файле /var/log/disk_usage.log:
2. Автоматизация через cron. Добавьте скрипт в crontab, чтобы запускать его ежедневно:
Добавьте строку:
Теперь скрипт будет запускаться каждый день в полночь.
3. Уведомления при критическом состоянии. Модифицируем скрипт для отправки уведомлений, если свободного места становится меньше 20%.
Если свободного места станет меньше 20%, лог будет дополнен, а администратору отправлено уведомление.
4. Анализ роста использования пространства:
Визуализация:
Сохраните данные в CSV для анализа:
Затем откройте CSV в Excel или LibreOffice для построения графиков.
Логирование дискового пространства помогает предвидеть и устранять проблемы до того, как они повлияют на работу системы, а также производить различные анализы.
BashTex📱 #bash #utils
Дисковое пространство - один из важнейших ресурсов системы. Постоянный мониторинг его состояния помогает избежать неприятных ситуаций, таких как переполнение разделов и остановка важных процессов. Логирование дискового пространства позволяет своевременно выявлять проблемы и анализировать историю использования.
Почему это важно?
Предотвращение проблем: Заранее узнавайте о нехватке места.
Анализ трендов: Отслеживайте, как быстро растёт использование места.
Автоматизация: Система сама уведомляет о критических ситуациях.
1. Создаём систему логирования дискового пространства. Базовый скрипт для логирования:
#!/bin/bash
LOG_FILE="/var/log/disk_usage.log"
# Текущая дата и время
CURRENT_DATE=$(date '+%Y-%m-%d %H:%M:%S')
# Состояние дисков
DISK_USAGE=$(df -h)
# Запись в лог-файл
{
echo "-----"
echo "Дата: $CURRENT_DATE"
echo "$DISK_USAGE"
} >> "$LOG_FILE"
echo "Логирование завершено. Данные записаны в $LOG_FILE"
Вывод в файле /var/log/disk_usage.log:
-----
Дата: 2024-11-05 14:00:00
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 30G 20G 60% /
tmpfs 2.0G 1.0M 2.0G 1% /dev/shm
/dev/sdb1 100G 50G 50G 50% /mnt/data
2. Автоматизация через cron. Добавьте скрипт в crontab, чтобы запускать его ежедневно:
crontab -e
Добавьте строку:
0 0 * * * /path/to/disk_logger.sh
Теперь скрипт будет запускаться каждый день в полночь.
3. Уведомления при критическом состоянии. Модифицируем скрипт для отправки уведомлений, если свободного места становится меньше 20%.
#!/bin/bash
LOG_FILE="/var/log/disk_usage.log"
THRESHOLD=20
# Проверка разделов
df -h | awk -v date="$(date '+%Y-%m-%d %H:%M:%S')" -v threshold="$THRESHOLD" 'NR>1 {gsub("%", "", $5); if ($5 > (100-threshold)) print date, $0}' | while read -r line; do
echo "Критическое состояние диска: $line" >> "$LOG_FILE"
echo "$line" | mail -s "Уведомление: мало места на диске" admin@bashtex.com
done
Если свободного места станет меньше 20%, лог будет дополнен, а администратору отправлено уведомление.
4. Анализ роста использования пространства:
grep "/dev/sda1" /var/log/disk_usage.log | awk '{print $2, $3, $5}' | tail
Визуализация:
Сохраните данные в CSV для анализа:
grep "/dev/sda1" /var/log/disk_usage.log | awk '{print $1, $5}' > disk_usage.csv
Затем откройте CSV в Excel или LibreOffice для построения графиков.
Логирование дискового пространства помогает предвидеть и устранять проблемы до того, как они повлияют на работу системы, а также производить различные анализы.
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Бесполезно - полезная команда
Когда-нибудь слышали про
Что делает true? true возвращает успешный статус и ничего больше.
Но давайте разберемся, где применяется true и какое применение ей можно найти.
1. Бесконечные циклы без условий. Вместо громоздкого while [ 1 ]; do, используйте true для создания чистого бесконечного цикла:
2. Заглушки для тестирования. Если вы пишете скрипт и определённые команды ещё не готовы, используйте true как временную заглушку:
3. Условные команды без выполнения. Иногда нужно выполнить что-то только при ошибке. Вместо добавления условий используйте true как пустую команду:
4. Условное выполнение с && и ||
Если папка существует, выводится сообщение. Если нет, ничего не происходит.
5. Отключение alias в сценариях. Чтобы убедиться, что используется реальная команда, а не alias:
Это полезно, если ls переопределён.
6. "Просто продолжай". Для сложных скриптов, где нужно игнорировать возможные ошибки в блоках:
Файл копируется, но ошибки игнорируются.
На самом деле, по итогу команда
BashTex📱 #linux #utils
Когда-нибудь слышали про
true? На первый взгляд, команда true в Linux кажется бесполезной: она просто возвращает успешный код выхода (0). Но за этой простотой скрывается мощный инструмент, который можно применять в сложных сценариях автоматизации и написании нестандартных команд.Что делает true? true возвращает успешный статус и ничего больше.
true
echo $?
0
Но давайте разберемся, где применяется true и какое применение ей можно найти.
1. Бесконечные циклы без условий. Вместо громоздкого while [ 1 ]; do, используйте true для создания чистого бесконечного цикла:
while true; do
echo "Работаем!"
sleep 1
done
2. Заглушки для тестирования. Если вы пишете скрипт и определённые команды ещё не готовы, используйте true как временную заглушку:
Копировать код
#!/bin/bash
echo "Шаг 1: Выполнен"
true # В будущем замените на реальную команду
echo "Шаг 2: Выполнен"
3. Условные команды без выполнения. Иногда нужно выполнить что-то только при ошибке. Вместо добавления условий используйте true как пустую команду:
mkdir /tmp/test || true
4. Условное выполнение с && и ||
[ -d /tmp/test ] && echo "Папка существует" || true
Если папка существует, выводится сообщение. Если нет, ничего не происходит.
5. Отключение alias в сценариях. Чтобы убедиться, что используется реальная команда, а не alias:
true && /bin/ls
Это полезно, если ls переопределён.
6. "Просто продолжай". Для сложных скриптов, где нужно игнорировать возможные ошибки в блоках:
cp важный_файл.txt /куда-то/ || true
Файл копируется, но ошибки игнорируются.
На самом деле, по итогу команда
true - это простой, но очень гибкий инструмент. Она идеально подходит для упрощения циклов, тестирования скриптов и построения сложных сценариев с условным выполнением команд. Если вы хотите писать лаконичный и читаемый код - не забывайте про этого незаменимого помощника.BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9