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

По всем вопросам : @Sofiia_artamonova
Download Telegram
Как найти количество открытых файлов в 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
Примеры скриптов для Mikrotik


Проверка изменения IP-адреса интерфейса для Mikrotik

Иногда провайдер выдает динамические IP-адреса. Этот скрипт проверит, не изменился ли динамический IP-адрес.

:global currentIP;

:local newIP [/ip address get [find interface="ether1"] address];

:if ($newIP != $currentIP) do={
:put "ip address $currentIP changed to $newIP";
:set currentIP $newIP;
}


Netmask

Этот скрипт полезен, если вам нужен ip-адрес без netmask (например, чтобы использовать его в брандмауэре), а "/ip address get [id] address" возвращает ip-адрес и netmask.

:global ipaddress 10.1.101.1/24

:for i from=( [:len $ipaddress] - 1) to=0 do={
:if ( [:pick $ipaddress $i] = "/") do={
:put [:pick $ipaddress 0 $i]
}
}



Резолвим имя хоста

Многие пользователи спрашивают, как использовать dns-имена вместо IP-адресов для серверов radius, правил брандмауэра и т. д.

Вот пример того, как резовлить IP-адрес сервера RADIUS.
Допустим, у нас настроен сервер radius:

/radius
add address=3.4.5.6 comment=myRad


А вот скрипт, который резовлит ip-адрес, сравнит ip с настроенным и заменит, если они не равны:

/system script add name="resolver" source= {

:local resolvedIP [:resolve "server.example.com"];
:local radiusID [/radius find comment="myRad"];
:local currentIP [/radius get $radiusID address];

:if ($resolvedIP != $currentIP) do={
/radius set $radiusID address=$resolvedIP;
/log info "radius ip updated";
}

}



Добавьте этот скрипт в планировщик, чтобы он выполнялся, например, каждые 5 минут

/system scheduler add name=resolveRadiusIP on-event="resolver" interval=5m
👍3