Linux: Системный администратор
1.69K subscribers
57 photos
7 videos
15 files
18 links
Здесь вы найдете полезные советы, практические материалы и интересные инсайты по администрированию Linux. Погружаемся в мир команд, скриптов и серверов вместе! 🚀

Авторский канал действующего админа 👨🏼‍💻
加入频道
Команда findmnt

Это простая утилита командной строки, используемая для отображения списка подключенных файловых систем или поиска файловой системы в /etc/fstab, /etc/mtab или /proc/self/ mountinfo.

Для отображения списка подключенных файловых систем, выполните в командной строке следующую команду.
По умолчанию команда findmnt отображает файловые системы в древовидном формате.
# findmnt

Чтобы отобразить информацию в виде обычного списка, используйте параметр -l, как показано ниже
# findmnt -l

Можно выбрать отображение файловых систем только определенного типа, используя параметр командной строки -t, за которым следует тип файловой системы, такой как XFS или EXT4.
# findmnt --fstab -t xfs или # findmnt --fstab -t ext4

Поиск файловой системы, используя точку монтирования.

Например, следующая команда отображает все файловые системы /etc/fstab, где каталогом точки монтирования является /mnt/external/disk2.
# findmnt --fstab /mnt/external/disk2 # this prints bind mounts where /mnt/external/disk2 is a source
или # findmnt --fstab --target /mnt/external/disk2

Выводим все файловые системы /etc/fstab и преобразовываем теги LABEL = и UUID = в реальные имена устройств, добавьте ключ – –evaluate
# findmnt --fstab --evaluate

Отобразить только точку монтирования, в которой смонтирована файловая система с меткой «/ boot» или «/», используйте следующую команду.
# findmnt -n --raw --evaluate --output=target LABEL=/boot или # findmnt -n --raw --evaluate --output=target LABEL=/

Findmnt также позволяет отслеживать действия по монтированию, размонтированию, перемонтированию и перемещению каталога, например, в /mnt/test.
# findmnt --poll --mountpoint /mnt/test

Если вы хотите больше информации в выводе, используйте ключ –verbose.
# findmnt --real --verbose


#Linux@linux_odmin #Команды@linux_odmin

👉 @linux_odmin
👍6
This media is not supported in your browser
VIEW IN TELEGRAM
Стратегии аварийного восстановления в облаке

Эффективный план восстановления после аварии (DR) - это не просто предосторожность, это необходимость.

Ключевым моментом любой надежной стратегии DR является понимание и установка двух ключевых показателей: Объекта времени восстановления (RTO) и Объекта точки восстановления (RPO).

- Объект времени восстановления (RTO) относится к максимально допустимой продолжительности времени, в течение которой ваше приложение или сеть могут быть отключены после аварии.

- Объект точки восстановления (RPO), с другой стороны, указывает на максимально допустимую потерю данных, измеряемую во времени.

Давайте рассмотрим четыре широко применяемые стратегии DR:

1. Стратегия резервного копирования и восстановления:
Этот метод включает регулярные резервные копии данных и систем для облегчения восстановления после аварии.
- Типичный RTO: от нескольких часов до нескольких дней.
- Типичный RPO: от нескольких часов до времени последнего успешного резервного копирования.

2. Подход Pilot Light:
Поддерживает ключевые компоненты в режиме готовности к активации, обеспечивая быстрое масштабирование в ответ на аварию.
- Типичный RTO: от нескольких минут до нескольких часов.
- Типичный RPO: зависит от того, насколько часто синхронизируются данные.

3. Решение с горячим резервированием:
Создает полус активное окружение с текущими данными для сокращения времени восстановления.
- Типичный RTO: обычно от нескольких минут до часов.
- Типичный RPO: до последних нескольких минут или часов.

4. Горячее сайт / Конфигурация с несколькими сайтами:
Обеспечивает полностью операционную, дублирующую среду, работающую параллельно с основной системой, обеспечивая беспрерывную функциональность.
- Типичный RTO: почти мгновенный, часто всего несколько минут.
- Типичный RPO: крайне минимальный, обычно всего несколько секунд.


#Шпаргалка@linux_odmin

👉 @linux_odmin
👍4
Шпаргалка по скриптам Bash

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

#Шпаргалка@linux_odmin

👉 @linux_odmin
👍4
Шпаргалка по PostgreSQL

Перенес в my-mans

-- подключиться к postgres (утилита psql)
psql -U postgres

-- команды помощи
help
\h -- помощь по командам SQL
\? -- помощь по командам psql


-- выход из консоли postgres
\q

-- создать базу
CREATE DATABASE my_database;

-- подключиться к базе
\connect my_database;

-- создать таблицу my_table с полями field1 (тип целочисленный, обязательное для заполнения), field2 (тип строка 255 символов)
CREATE TABLE my_table (field1 INT NOT NULL, field2 VARCHAR(255));

-- вывести все таблицы
\d

-- удалить таблицу my_table
DROP TABLE my_table;

-- внести в таблицу запись
INSERT INTO my_table(field1, field2) VALUES(1,'Any text value');

-- вывести записи
SELECT * FROM my_table; -- все записи
SELECT * FROM my_table WHERE field1 = 1; -- все, где field1 = 1
SELECT * FROM my_table WHERE field1 != 1; -- и т д
SELECT * FROM my_table WHERE field1 > 1;
SELECT * FROM my_table LIMIT 100; -- первые 100 записей;
SELECT * FROM my_table LIMIT 100 OFFSET 200; -- запись с 201 по 300;


-- сортировка при выводе
SELECT * FROM my_table ORDER BY field1 ASC; -- вывести отсортировав в возрастающем порядке
SELECT * FROM my_table ORDER BY field1 DESC; -- вывести отсортировав в убывающем порядке


-- изменить запись таблицы (поле field2 строки, где field1 = 1);
UPDATE my_table SET field2 = 'Other text value' WHERE field1 = 1;

-- удаление данных
DELETE FROM my_table; -- удалить все записи;
DELETE FROM my_table WHERE field1 = 1; -- удалить запись где field1 = 1;



-- ***********************************
-- нормализация (разбиение таблиц на несколько)
-- ***********************************

-- Constraints - ограничения типов данных
CREATE TABLE my_table (
field1 INT NOT NULL, -- запись обязательна
field2 VARCHAR(255) NOT NULL UNIQUE, -- запись должна быть уникальной
field3 BOOLEAN NOT NULL DEFAULT TRUE -- значение по умолчанию - true
...
);


-- Первичный и внешние ключи
-- при создании записи таблицы с отсутствующим внешним ключом выведется запись об ошибке. будут выводится ошибки и в иных случаях, когда будут нарушаться связи.
CREATE TABLE IF NOT EXISTS my_table ( -- ключ IF NOT EXISTS проверяет, существует ли таблица.
field1 SERIAL INT PRIMARY KEY, -- при добавлении PRIMARY KEY поле автоматически наследует ограничения NOT NULL и UNIQUE, и создается индекс. SERIAL тип данных являющийся автоматически увеличивающимся счетчиком (аналог ключа AUTOINCREMENT в Sqlite)
field2 VARCHAR(255) NOT NULL UNIQUE,
field3 INT NOT NULL,
FOREIGN KEY(field3) REFERENCES other_table(field_name)
-- поле ссылается на внешнюю таблицу other_table на поле field_name, которое обязательно должно быть с PRIMARY KEY
);

-- вывод данных из нескольких таблиц со связанными полями
SELECT * FROM table_1 LEFT JOIN table_2 ON (table_2.field = table_1.field);

-- алиасы, нужны для удобства. Также, при выводе наименование таблиц или полей выводится алиасом, при его наличии.
SELECT * FROM table_1 as tab1 LEFT JOIN table_2 as tab2 ON (tab1.field = tab2.field);


#Шпаргалка@linux_odmin

👉 @linux_odmin
👍3
Шпаргалка по PostgreSQL

-- ***********************************
-- Редактирование таблиц, расширенные возможности SELECT, функции
-- ***********************************

-- Добавление поля в таблицу
ALTER TABLE table_name ADD COLUMN new_field
BOOLEAN NOT NULL DEFAULT TRUE;


-- добавление поля с автоинкрементом и primary key в таблицу
ALTER TABLE test1 ADD COLUMN id SERIAL PRIMARY KEY;

-- Удаление поля из таблицы
ALTER TABLE table_name DROP COLUMN new_field;

-- переименовать поле
ALTER TABLE table_name RENAME old_field TO new_field;

-- сменить тип данных
ALTER TABLE table_name ALTER COLUMN any_field SET
DATA TYPE VARCHAR(255);


-- изменить значение по умолчанию
ALTER TABLE table_name ALTER COLUMN any_field SET
DEFAULT 'new value';


-- добавить/удалить constraint NOT NULL
ALTER TABLE table_name ALTER COLUMN any_field
SET|DROP NOT NULL;


-- переименовать таблицу
ALTER TABLE table_name RENAME TO new_table_name;

-- Расширенные возможности SELECT
SELECT * FROM table WHERE field1 LIKE 'value'; -- field1 = 'value'
SELECT * FROM table WHERE field1 LIKE 'val%'; -- field1 начинается с 'val'
SELECT * FROM table WHERE field1 LIKE '%lue'; -- field1 заканчивается на 'lue'
SELECT * FROM table WHERE field1 LIKE '%e%'; -- field1 содержит 'e'
-- несколько условий
SELECT * FROM table WHERE field1 = 'value' AND field2 > 'value2';
SELECT * FROM table WHERE field1 = 'value' OR field2 > 'value2';


-- вывод уникальных записей
SELECT DISTINCT field1 FROM table;

-- группирование записей

SELECT field1, COUNT(field1) FROM table GROUP BY field1;
-- сгруппирует записи таблицы table по полю field и выведет уникальные значения field и количество повторений

SELECT field1, COUNT(field1) FROM table GROUP BY field1
HAVING COUNT(field) > 3;

-- сгруппирует записи таблицы table по полю field и выведет уникальные значения field и количество повторений, где количество повторений больше 3

#Шпаргалка@linux_odmin

👉 @linux_odmin
👍5
Nginx-Lua-Anti-DDoS

Этот репозиторий предоставляет Lua-скрипт для защиты серверов на базе Nginx от DDoS-атак. Он использует возможности OpenResty и модуля ngx_lua для фильтрации трафика, ограничения запросов и обнаружения подозрительных IP.

🔹 Основные функции:
- Проверка и блокировка подозрительных клиентов.
- Ограничение количества запросов (rate limiting).
- Обнаружение автоматизированных атак и ботов.
- Интеграция с Cloudflare, iptables и другими системами.

🔹 Требования:
- Nginx с поддержкой Lua (через OpenResty или сборку с модулем `ngx_http_lua_module`).
- Возможность редактирования конфигурации сервера.

https://github.com/C0nw0nk/Nginx-Lua-Anti-DDoS

#Linux@linux_odmin #Security@linux_odmin

👉 @linux_odmin
👍4
Как работает HTTPS?

Безопасный протокол передачи гипертекста

(HTTPS) - это расширение протокола передачи гипертекста (HTTP). HTTPS передает зашифрованные данные с использованием транспортного уровня безопасности (TLS). Если данные будут перехвачены в Интернете, все, что получит угонщик, - это двоичный код.

Как шифруются и дешифруются данные?

Шаг 1 - Клиент (браузер) и сервер устанавливают TCP-соединение.

Шаг 2 - Клиент отправляет серверу " client hello". Сообщение содержит набор необходимых алгоритмов шифрования (наборов шифров) и последнюю версию TLS, которую он может поддерживать. Сервер отвечает " server hello", чтобы браузер знал, может ли он поддерживать алгоритмы и версию TLS.

Затем сервер отправляет SSL-сертификат клиенту. Сертификат содержит открытый ключ, имя хоста, дату истечения срока действия и т. д. Клиент проверяет сертификат.

Шаг 3. После проверки SSL-сертификата клиент генерирует ключ сессии и шифрует его с помощью открытого ключа. Сервер получает зашифрованный ключ сеанса и расшифровывает его с помощью закрытого ключа.

Шаг 4 - Теперь, когда клиент и сервер владеют одним и тем же сеансовым ключом (симметричное шифрование), зашифрованные данные передаются по защищенному двунаправленному каналу.

Почему HTTPS переключается на симметричное шифрование при передаче данных? Есть две основные причины:

1. Безопасность: Асимметричное шифрование работает только в одну сторону. Это означает, что если сервер попытается отправить зашифрованные данные обратно клиенту, любой сможет расшифровать их с помощью открытого ключа.

2. Ресурсы сервера: Асимметричное шифрование добавляет довольно много математических накладных расходов. Оно не подходит для передачи данных в длительных сессиях.

#Шпаргалка@linux_odmin

👉 @linux_odmin
👍4
Как найти и удалить старые файлы в Linux? 🗑️

Привет, админы! Сегодня разберёмся, как быстро находить и удалять старые файлы в Linux. Это полезно для очистки логов, временных файлов и других ненужных данных.

🔍 Поиск файлов старше 30 дней:

find /path/to/directory -type f -mtime +30

- -type f — ищем только файлы;
- -mtime +30 — файлы старше 30 дней.

🗑️ Удаление этих файлов:

find /path/to/directory -type f -mtime +30 -delete

Осторожно! Удаление без подтверждения.

Безопасный вариант с подтверждением:

find /path/to/directory -type f -mtime +30 -exec rm -i {} \;

Будет запрашиваться подтверждение перед удалением.

🔥 Автоматизация через cron:
Добавляем в crontab -e:

0 3 * * * find /var/log -type f -mtime +30 -delete

Очистка логов каждую ночь в 03:00.

Как вы решаете проблему старых файлов? Делитесь своими решениями в комментариях! 👇

#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin

👉 @linux_odmin
👍5
Как проверить, что процесс слушает нужный порт? 🔎

Бывало такое, что сервис не отвечает, и непонятно, слушает ли он вообще нужный порт? Давайте разберёмся, как это проверить.

📡 Способы проверки:

1️⃣ ss (современный вариант `netstat`):

ss -tulnp

- -t — TCP;
- -u — UDP;
- -l — только слушающие сокеты;
- -n — не резолвить имена;
- -p — показать процессы.

2️⃣ lsof (список открытых файлов, включая порты):

lsof -i :80

Покажет, какой процесс слушает 80-й порт.

3️⃣ netstat (старый, но работает):

netstat -tulnp


4️⃣ Сокетный тест с `nc`:

nc -zv 127.0.0.1 80

Если порт открыт, увидим сообщение succeeded.

💡 Пример реального кейса: Apache не запускается, потому что другой процесс уже занял порт 80. Как быстро его прибить?

fuser -k 80/tcp

или

kill $(lsof -t -i :80)


Какой метод используете вы? Делитесь в комментариях! 💬

#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin

👉 @linux_odmin
👍7
Как быстро узнать, какие процессы грузят систему?

Если сервер вдруг начал тормозить, первым делом проверяем загрузку CPU и памяти. Вот мои любимые команды:

🔹 top — классика, показывает активные процессы в реальном времени.
🔹 htop — улучшенная версия top с удобным интерфейсом.
🔹 ps aux --sort=-%cpu | head — топ 10 процессов по загрузке CPU.
🔹 ps aux --sort=-%mem | head — топ 10 процессов по потреблению памяти.

А если хотите найти, какая конкретно команда грузит диск:

iotop -o

или

iostat -dx 1

Какие инструменты используете вы, когда сервер внезапно начинает «тупить»? 🚀

#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin

👉 @linux_odmin
👍8
🛠 Как проверить нагрузку на сервер?

Если сервер начал тормозить, первым делом проверяем, что его грузит. Вот полезные команды для диагностики:

🔹 top / htop – показывает загрузку процессора, памяти, активные процессы.
🔹 free -m – проверяет, сколько оперативной памяти занято и сколько доступно.
🔹 df -h – смотрит свободное место на диске.
🔹 iostat -x 1 – помогает определить проблемы с дисковым вводом-выводом.
🔹 netstat -tulnp / ss -tulnp – проверяет открытые порты и сетевые подключения.

Если сервер под нагрузкой, но процессы неизвестны, попробуйте ps aux --sort=-%cpu или ps aux --sort=-%mem, чтобы найти самых "прожорливых".

А какими инструментами диагностики чаще всего пользуетесь вы?

#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin

👉 @linux_odmin
👍6
1️⃣ Как проверить скорость интернета в Linux через терминал?

Если вам нужно быстро замерить скорость интернета на сервере или рабочей машине без браузера, используйте один из этих инструментов:

1️⃣ Speedtest CLI
Установите и запустите:

sudo apt install speedtest-cli # для Ubuntu/Debian
sudo yum install speedtest-cli # для CentOS/RHEL
speedtest


2️⃣ Fast CLI (от Netflix)
Удобный альтернативный инструмент:

curl -s https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py | python3

или

fast


3️⃣ nload – мониторинг в реальном времени

sudo apt install nload
nload


Теперь у вас есть несколько способов быстро проверить скорость соединения. Какой инструмент используете вы? 🌐

#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin

👉 @linux_odmin
👍7
2️⃣ Почему kill -9 не всегда хорошая идея?

Один из самых частых способов убить процесс в Linux – это команда:

kill -9 PID

Но почему её не стоит использовать бездумно?

🔸 -9 (SIGKILL) моментально завершает процесс без шанса на очистку ресурсов. Это может привести к:
- Потере несохранённых данных
- Оставлению зомби-процессов
- Проблемам с зависимыми процессами

Лучше использовать более "мягкие" сигналы:
1️⃣ kill PID (SIGTERM) – вежливо просит процесс завершиться.
2️⃣ kill -15 PID – то же самое, но явно.
3️⃣ kill -1 PID (SIGHUP) – для перезапуска демонов.
4️⃣ kill -2 PID (SIGINT) – аналог Ctrl+C.

Используйте kill -9 только в крайнем случае, когда процесс завис и не отвечает на другие сигналы.

Какой у вас самый жёсткий случай с kill -9? Делитесь в комментариях! 💀

#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin

👉 @linux_odmin
👍7
🛠 Как проверить загрузку процессора в Linux?

Производительность сервера – это первое, что проверяют при проблемах. Если сервер тормозит, первым делом смотрим на CPU.

📌 Вот несколько полезных команд:
🔹 top – показывает загрузку CPU в реальном времени.
🔹 htop – более удобная версия top с цветным интерфейсом.
🔹 mpstat -P ALL 1 – детальный анализ нагрузки по ядрам.
🔹 sar -u 1 10 – сбор данных о загрузке процессора в динамике.
🔹 iostat -c 1 – еще один способ посмотреть загрузку CPU.

🔎 На что смотреть?
📌 Высокий %user – процессы активно используют CPU.
📌 Высокий %iowait – узкое место в дисковой системе.
📌 %steal – возможно, вам не хватает процессорных ресурсов на виртуальной машине.

А какая ваша любимая команда для мониторинга CPU? Делитесь в комментариях!

#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin

👉 @linux_odmin
👍4