Админские угодья
1.46K subscribers
462 photos
40 videos
223 links
Всё для системного администратора

По всем вопросам : @Sofiia_artamonova
Download Telegram
Частые ошибки программирования на Bash

Качество скриптов, используемых для автоматизации и оптимизации работы системы, является залогом ее стабильности и долголетия, а также сохраняет время и нервы администратора этой системы. Несмотря на кажущуюся примитивность bash как языка программирования, он полон подводных камней и хитрых течений, способных значительно подпортить настроение как разработчику, так и администратору.

Большинство имеющихся руководств посвящено тому, как надо писать. Я же расскажу о том, как писать НЕ надо :-)

Данный текст является вольным переводом вики-страницы «Bash pitfalls» по состоянию на 13 декабря 2008 года. В силу викиобразности исходника, этот перевод может отличаться от оригинала. Поскольку объем текста слишком велик для публикации целиком, он будет публиковаться частями.



1. for i in ls *.mp3

Одна из наиболее часто встречающихся ошибок в bash-скриптах — это циклы типа такого:


for i in `ls *.mp3`; do # Неверно!
some command $i # Неверно!
done



Это не сработает, если в названии одного из файлов присутствуют пробелы, т.к. результат подстановки команды ls *.mp3 подвергается разбиению на слова. Предположим, что у нас в текущей директории есть файл 01 - Don't Eat the Yellow Snow.mp3. Цикл for пройдётся по каждому слову из названия файла и $i примет значения: "01", "-", "Don't", "Eat", "the", "Yellow", "Snow.mp3".

Заключить всю команду в кавычки тоже не получится:


for i in "`ls *.mp3`"; do # Неверно!
...


https://habr.com/ru/articles/47706/
2
GoAccess - это реал тайм анализатор веб логов и интерактивная программа просмотра с открытым исходным кодом, который запускается в терминале в системах * nix или через ваш браузер.

Demo
https://rt.goaccess.io/?20210208192039

Github
https://github.com/allinurl/goaccess
👍2
Сетевые политики на защите рабочих нагрузок в кластере Kubernetes

В кластере Kubernetes нам доступен любой сервис в любом пространстве имён, то есть по умолчанию pod открыт для любого трафика.

Мы можем определить сетевую политику для пространства имён или pod’а, чтобы защитить рабочие нагрузки в кластере. Например, разделить рабочие нагрузки в мультитенантном кластере по проектам, командам или организациям.

Rus https://habr.com/ru/company/southbridge/blog/718262/

Eng https://medium.com/geekculture/network-policy-to-secure-workloads-on-kubernetes-cluster-99017698c748
👍2
Краткий курс по созданию сценариев Bash
👍5
Как найти количество открытых файлов в Linux

Значение сохраняется в
# cat /proc/sys/fs/file-max

Проверка Hard лимит в Linux
# ulimit -Hn

Проверка Soft лимит в Linux
# ulimit -Sn

Чтобы просмотреть значения Hard и Soft для разных пользователей, переключите пользователя с «su» на пользователя, ограничения которого вы хотите проверить.
Например:
# su root
$ ulimit -Sn
$ ulimit -Hn


Как проверить количество системных дескрипторов файлов в Linux
На серверах, некоторые из ваших приложений могут потребовать более высокий лимит для открытых дескрипторов файлов. Хорошим примером этого являются службы MySQL / MariaDB или веб-сервер Apache.

Вы можете увеличить лимит открытых файлов в Linux, отредактировав опцию ядра fs.file-max. Для этого используйте утилиту sysctl.

Sysctl используется для настройки параметров ядра.

Например, чтобы увеличить ограничение на количество открых файла до 500000, вы можете использовать следующую команду:
# sysctl -w fs.file-max=500000

Вы можете проверить текущее значение для количества открытых файлов с помощью следующей команды:
$ cat /proc/sys/fs/file-max

С помощью указанной команды изменения, которые вы внесли, будут оставаться активными только до следующей перезагрузки. Если вы хотите применить их на постоянной основе, вам придется отредактировать следующий файл:
# vi /etc/sysctl.conf

Добавьте следующую команду:
fs.file-max=500000

Конечно, вы можете изменить число в соответствии с вашими потребностями. Чтобы снова проверить изменения, используйте:
# cat /proc/sys/fs/file-max

Чтобы изменения вступили в силу, пользователям необходимо будет выйти из системы и снова войти в систему. Если вы хотите немедленно применить ограничения, вы можете использовать следующую команду:
# sysctl -p

Установка количества открытых файлов для пользователя в Linux
Вышеприведенные примеры показали, как установить ограничения, но вы можете установить лимит для каждого пользователя. Для этой цели, с правами пользователя root, вам необходимо отредактировать следующий файл:
# vi /etc/security/limits.conf

Если вы администратор Linux, предлагаем Вам ознакомиться с этим файлом. Прочитайте все комментарии в нем, поскольку он обеспечивает гибкость в плане управления системными ресурсами путем установки лимита пользователям на разных уровнях.

Команды, которые вы должны добавить, имеют следующие параметры:
<domain>        <type>  <item>  <value>

Вот пример установки Soft и Hard лимитов для пользователя dimon:
## Example hard limit for max opened files
dimon hard nofile 4096
## Example soft limit for max opened files
dimon soft nofile 1024
Шпаргалка по утилите top

Команда top в Linux используется для мониторинга системных процессов и загрузки системы в реальном времени.

▪️Основной вывод
- PID: Идентификатор процесса.
- USER: Имя пользователя, которому принадлежит процесс.
- PR: Приоритет процесса.
- NI: Значение nice для процесса.
- VIRT: Объем виртуальной памяти, используемой процессом.
- RES: Объем физической (резидентной) памяти.
- SHR: Объем разделяемой памяти.
- S: Состояние процесса (R – выполняется, S – спит, D – ждет, Z – зомби, T – остановлен).
- %CPU: Доля времени процессора, используемая процессом.
- %MEM: Доля физической памяти, используемая процессом.
- TIME+: Общее время работы процесса.
- COMMAND: Команда, запустившая процесс.

▪️Основные клавиши
- q: Выход из программы top.
- h: Вызов справки.
- k: Завершение процесса по PID.
- r: Изменение приоритета процесса (renice).
- z: Переключение цвета интерфейса.
- P: Сортировка по использованию CPU (по умолчанию).
- M: Сортировка по использованию памяти.
- T: Сортировка по времени работы процесса.
- 1: Показать загрузку процессоров по ядрам.
- Shift + i: Игнорировать процессы с нулевой загрузкой CPU.
- Shift + e: Переключение между единицами памяти (KB, MB, GB).

▪️Параметры при запуске
- top -d [секунды]: Установить интервал обновления (по умолчанию 3 секунды).
- top -u [имя_пользователя]: Показать процессы определенного пользователя.
- top -p [PID]: Отслеживать процесс по PID.
- top -n [число]: Указать, сколько обновлений произвести перед завершением программы.

▪️Фильтрация и управление отображением
- f: Настройка колонок.
- o: Сортировка по выбранной колонке.
- s: Изменение интервала обновления в реальном времени.
- X: Установить маску для поиска процессов.
Полезные Bash скрипты для Linux

Автоматическое резервное копирование
Этот скрипт создает резервную копию указанной директории и сохраняет ее в архиве с меткой времени. Это полезно для регулярного создания резервных копий данных.


#!/bin/bash
SOURCE_DIR="/path/to/source"
BACKUP_DIR="/path/to/backup"
TIMESTAMP=$(date +"%Y%m%d%H%M%S")
tar -czvf "$BACKUP_DIR/backup_$TIMESTAMP.tar.gz" "$SOURCE_DIR"
echo "Backup completed successfully! 🎉"


Очистка временных файлов
Этот скрипт удаляет все временные файлы старше 7 дней из указанной директории. Это помогает поддерживать чистоту в системе и освобождать место на диске.


#!/bin/bash
TEMP_DIR="/path/to/temp"
find "$TEMP_DIR" -type f -mtime +7 -exec rm -f {} \;
echo "Temporary files older than 7 days have been deleted 🧹"


Автоматическое обновление системы
Этот скрипт обновляет систему, устанавливая все доступные обновления. Это полезно для поддержания системы в актуальном состоянии.


#!/bin/bash
sudo apt update && sudo apt upgrade -y
echo "System updated successfully! 🔄"


Проверка доступности веб-сайта
Этот скрипт проверяет доступность указанного веб-сайта и отправляет уведомление, если сайт недоступен. Это полезно для мониторинга состояния веб-сайтов.


#!/bin/bash
URL="https://example.com"
if ! curl -s --head "$URL" | grep "200 OK" > /dev/null; then
echo "Website $URL is down! 🚨"
fi
Шпаргалка по скриптам Bash

Основы написания скриптов на Bash
Условные операторы
Циклы Bash
Арифметические операторы
Арифметические условные операторы
Операторы сравнения строк
👍1