Админские угодья
1.59K subscribers
553 photos
45 videos
245 links
Всё для системного администратора

По всем вопросам : @Sofiia_artamonova
Download Telegram
Как найти и убить процессы, занявшие порт в Linux


fuser -k 8080/tcp


▪️ Что делает эта команда:
- fuser — показывает, какие процессы используют файл или сокет;
- -k — убивает найденные процессы
- 8080/tcp — порт, который проверяем (можно заменить на свой).

▪️ Альтернатива с lsof:


kill -9 $(lsof -t -i:8080)


- lsof -i:8080 — находит процессы, слушающие порт;
- -t — выводит только PID;
- kill -9 — принудительно завершает процессы.

Будь аккуратен, особенно с kill -9 — он не даёт процессу корректно завершиться.
👍21
Список полезных команд для работы с telnet, которые могут помочь при подключении и отладке сетевых служб:

Основные команды telnet:
1. Подключение к удаленному хосту:

telnet <hostname> <port>

Пример:

telnet example.com 80

Подключается к хосту example.com на порту 80 (HTTP).

2. Закрытие соединения:
Чтобы завершить сессию, используйте сочетание клавиш:

Ctrl + ] (переход в режим команд)

Затем введите:

quit


3. Отправка текстового запроса после подключения:
Если подключились к порту, например, HTTP-сервера, можно отправить запрос вручную:

GET / HTTP/1.1
Host: example.com

Это выполняет запрос к домашней странице на порту 80.

Встроенные команды telnet (используйте в режиме команд после нажатия Ctrl + ]):

1. help
Показывает список доступных команд telnet:

telnet> help


2. open
Открывает новое соединение с указанным хостом:

telnet> open <hostname> <port>


3. close
Закрывает текущее соединение:

telnet> close


4. display
Показывает текущие параметры подключения:

telnet> display


5. mode
Переключает режим работы telnet (например, line или character):

telnet> mode line


6. send
Отправляет управляющие символы (например, send escape для отправки escape-секвенции):

telnet> send escape


7. status
Показывает статус текущего соединения:

telnet> status


8. set и unset
Настраивают параметры подключения (например, установка режима эхо):

telnet> set echo
telnet> unset echo


Примеры использования telnet:

1. Проверка доступности порта:
Чтобы проверить, открыт ли порт на удаленном сервере:

telnet <hostname> <port>


2. Проверка почтового сервера (SMTP):
Подключение к серверу SMTP:

telnet smtp.example.com 25

Затем можно вручную ввести SMTP-команды, такие как:

EHLO example.com


3. Проверка DNS сервера:
Можно подключиться к DNS-серверу и проверить его ответы:

telnet <dns-server> 53


Эти команды помогут вам для отладки, диагностики и проверки сетевых служб.
2👍2
📌 Команды мониторинга и отладки

top отобразить запущенные процессы, используемые ими ресурсы и другую полезную информацию (с автоматическим обновлением данных)

ps -eafw отобразить запущенные процессы, используемые ими ресурсы и другую полезную информацию (единожды)

ps -e -o pid,args --forest вывести PID’ы и процессы в виде дерева

pstree отобразить дерево процессов

kill -9 98989
kill -KILL 98989
«убить» процесс с PID 98989 «на смерть» (без соблюдения целостности данных)

kill -TERM 98989 Корректно завершить процесс с PID 98989

kill -1 98989
kill -HUP 98989
заставить процесс с PID 98989 перепрочитать файл конфигурации

lsof -p 98989 отобразить список файлов, открытых процессом с PID 98989

lsof /home/user1 отобразить список открытых файлов из директории /home/user1

strace -c ls > /dev/null вывести список системных вызовов, созданных и полученных процессом ls

strace -f -e open ls > /dev/null вывести вызовы бибилотек

watch -n1 ‘cat /proc/interrupts’ отображать прерывания в режиме реального времени

last reboot отобразить историю перезагрузок системы

last user1 отобразить историю регистрации пользователя user1 в системе и время его нахождения в ней

lsmod вывести загруженные модули ядра

free -m показать состояние оперативной памяти в мегабайтах

smartctl -A /dev/hda контроль состояния жёсткого диска /dev/hda через SMART

smartctl -i /dev/hda проверить доступность SMART на жёстком диске /dev/hda

tail /var/log/dmesg вывести десять последних записей из журнала загрузки ядра

tail /var/log/messages вывести десять последних записей из системного журнала
👍21
Как динамически рассчитывать CPU для контейнеров в Kubernetes

Включена возможность динамического изменения CPU для контейнеров в Kubernetes с помощью фичи InPlacePodVerticalScaling.

Раньше подбор CPU был трудоемким: если установить слишком много — ресурс тратится впустую, слишком мало — приложение тормозит. Давайте рассмотрим подходы к динамическому изменению CPU.

Стратегия 1: всегда использовать 80% CPU

Если приложение загружено на 50%, увеличиваем до 80% — оставляем запас в 20 % для безопасности.

Работает отлично при уменьшении, но при увеличении — вопрос: если используем 100 %, стоит ли удвоить CPU или немного прибавить? Ответ неизвестен.

Стратегия 2: всегда использовать 80%, плюс экспоненциальный рост

Как и в стратегии 1 при уменьшении. При увеличении (при нагрузке между 80 и 100 %) используется формула:

new_cpu = average_cpu / 0.8 + (average_cpu / 0.8 * coeff)²


Экспоненциальное увеличение: сильно растем, если нагрузка 100 %, и умеренно — если 90 %. Эту стратегию легко применять: она используется в инструменте Kondense для подбора ресурсов в Kubernetes.

Стратегия 3: целевое использование 100% с учетом CPU-pressure

При уменьшении — устанавливаем на 100%, чтобы не терять ресурсы. При увеличении — смотрим на CPU pressure в микросекундах (время, которое контейнер не мог получить CPU). Чем выше давление, тем сильнее нужно увеличить CPU.

Теоретически это оптимально. Но на практике не всегда работает: порой CPU pressure высок, но увеличение CPU не помогает — зависит от характера приложения. Потребуется доработка формулы под конкретные кейсы.


Итог:
Динамическое изменение CPU — значительный шаг для Kubernetes. В будущем это позволит экономить ресурсы и развязывать руки администраторам. Уже сейчас стоит ознакомиться с инструментом Kondense, если планируете автоматизацию подбора ресурсов.


https://medium.com/@mathieuces/how-to-calculate-cpu-for-containers-in-k8s-dynamically-47a89e3886eb
👍21
Что такое Docker? В чем отличие контейнера от образа?

Docker — программное обеспечение для автоматизации развёртывания и управления приложениями в средах с поддержкой контейнеризации.

Образ — шаблон приложения, который содержит слои файловой системы в режиме «только-чтение».

Контейнер — запущенный образ приложения, который кроме нижних слоев в режиме «только чтение» содержит верхний слой в режиме «чтение-запись».
📌 Шпаргалка по командам Docker и Docker-compose
1👍1
Работа с правами доступа файлов и директорий в Linux

# chown vasya /file
Назначить пользователя vasya владельцем файла file
# chown -R vasya directory
Рекурсивно обойти директорию directory и назначить пользователя vasya владельцем всех вложенных файлов и директорий
# chown vasya:group /file
Назначить владельца и группу для файла /file
# chmod ugo+rwx /directory
Установить полные права доступа rwx ( Read Write eXecute ) для всех ugo ( User Group Other ) на директорию /directory. То-же самое можно сделать, используя числовой представление chmod 777 directory
# chmod go-rwx /directory
Удалить все права на директорию /directory для группы и остальных
# chgrp new_group file
Изменить группу-владельца для file на new_group
# chmod o+t /home/public
Установить так называемый STIKY-бит на директорию /home/public. Удалить файл в такой директории может только владелец данного файла
# chmod o-t /home/public
Удалить STIKY-бит с директории /home/public
# chmod u+s /bin/binary_file
Установить SUID-бит на файл /bin/binary_file. Это позволяет любому пользователю системы, запускать данный файл с правами владельца файла
# chmod u-s /bin/binary_file
Удалить SUID-бит с файла /bin/binary_file
# chmod g+s /home/public
Установить SGID-бит на директории /home/public
# chmod g-s /home/public
Удалить SGID-бит с директории /home/public
# find / -perm -u+s
Поиск всех файлов с установленным SUID битом, начиная с корня файловой системы
# ls -lh
Листинг текущего каталога с правами доступа
1
Полезные инструменты CLI для администраторов Linux
2