Типичный Сисадмин
1.25K subscribers
363 photos
43 videos
201 links
⚙️Информация для системного администратора

По всем вопросам : @Sofiia_artamonova
Download Telegram
Шпаргалка по Docker
Как подключиться к контейнеру Docker по ssh

После того, как у вас появился контейнер Docker, работающий в системе Linux, одна из вещей, которые вам, вероятно, потребуется сделать, – это запустить команды внутри контейнера.

https://telegra.ph/Kak-podklyuchitsya-k-kontejneru-Docker-po-ssh-09-26
Создаем логические тома LVM на Linux


Система хранения данных – один из тех кардинальных компонентов, без которых ваш сервер не может обойтись, и поэтому требует к себе пристального внимания, несмотря ни на что.

Это краткое руководство по внедрению LVM на вашем linux-сервере или рабочей станции.
2👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Snips.sh

Безпарольный, анонимный pastebin на основе SSH с удобным текстовым и веб-интерфейсом

Фичи:
▪️Нулевая установка: используйте с любого устройства, где установлен SSH-клиент
▪️Веб-интерфейс: код с подсветкой синтаксиса, короткие ссылки и поддержка рендеринга Markdown
▪️Текстовый интерфейс: управление и просмотр сниппетов прямо из терминала
▪️Без паролей: всё, что вам нужно — это SSH-ключ
▪️Анонимность: без регистрации, без логинов, без необходимости указывать email
▪️URL с временем жизни: ограниченный по времени доступ для безопасного обмена
▪️Возможность самостоятельного хостинга: контейнеризированный и малозатратный в плане ресурсов
▪️Определение языка с помощью ИИ: интеллектуальное распознавание исходного кода

https://github.com/robherley/snips.sh
Шпаргалка по systemd

Основные команды systemctl:

1. Проверка статуса службы:

systemctl status <имя_сервиса>


2. Запуск службы:

systemctl start <имя_сервиса>


3. Остановка службы:

systemctl stop <имя_сервиса>


4. Перезапуск службы:

systemctl restart <имя_сервиса>


5. Перезагрузка, только если служба работает:

systemctl reload <имя_сервиса>


6. Включить автозапуск службы при загрузке:

systemctl enable <имя_сервиса>


7. Отключить автозапуск службы:

systemctl disable <имя_сервиса>


8. Показать все запущенные службы:

systemctl list-units --type=service


9. Просмотр всех служб (включая остановленные):

systemctl list-units --all --type=service


10. Показать все активные сервисы, включая другие юниты (mount, timer и т.д.):

systemctl list-units --state=active


11. Маскировка службы (запрет её запуска):

systemctl mask <имя_сервиса>


12. Демаскировка службы:

systemctl unmask <имя_сервиса>
2
Основные типы DNS записей

A — запись соответствия с IPv4 адресом;
AAAA — запись соответствия с IPv6 адресом;
CNAME — запись соответствия другому доменному имени;
MX — адресная запись, указывающая на почтовый сервер домена;
NS — адресная запись указывающая на DNS-резолверы, отвечающие за данный домен;
TXT — произвольная текстовая запись в домене, часто используется для верификации принадлежности домена.
👍2
🖥 PGTune

PGTune рассчитывает конфигурацию для PostgreSQL, основываясь на максимальной производительности для данной конфигурации оборудования. Это не серебряная пуля для оптимизации настроек PostgreSQL. Многие настройки зависят не только от конфигурации оборудования, но и от размера базы данных, количества клиентов и сложности запросов. Оптимальная конфигурация базы данных может быть получена только при учете всех этих параметров.

https://github.com/le0pard/pgtune

https://pgtune.leopard.in.ua/
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Примеры использования команды grep в Linux

Отображение строк до или после строки с результатом поиска

Часто пользователю нужно вывести на экран не только строку, содержащую искомый шаблон. Но и несколько строк до или после нее, чтобы лучше понимался контекст. Специально на такой случай у команды grep есть две особых опции:

-A (от англ. After) — указанное количество строк до шаблона;
-B (от англ. Before) — указанное количество строк после шаблона.
Попробуем отфильтровать вывод команды ifconfig, который для непривычного пользователя может быть излишне объемным.

Таким образом Вы получите строку, содержащую шаблон eth0, а также 4 строки до нее:


# ifconfig | grep –A 4 eth0

Тогда как таким способом Вы получите строку, содержащую шаблон UP, а также 2 строки после нее:


# ifconfig | grep -B 2 UP


Выведение заданного числа всех соседних строк с помощью команды grep

В том случае, если Вы точно не знаете, какие именно соседние строки (до или после строки, содержащей шаблон) Вам нужны — воспользуйтесь командой grep с опцией -C. Следующая комбинация команд выведет на экран по 2 строки до и после строчки вывода команды ifconfig, содержащей шаблон lo:


# ifconfig | grep -C 2 lo


Подсчет числа строк, содержащих искомое выражение

В некоторых случаях Вам могут понадобится не сами строчки, включающие заданное выражение, а их общее количество. В таком случае воспользуйтесь опцией -c. Следующая комбинация команд выведет на экран количество строк в выводе команды ifconfig, включающих шаблон inet6.


# ifconfig | grep -c inet6


Рекурсивный поиск строки по всем каталогам с помощью команды grep

Предположим, что Вам необходимо найти все вложения указанного выражения в текущем каталоге со всеми его подкаталогами и так далее. Для этого добавьте к команде grep опцию -r:

В результате утилита будет рекурсивно искать выражение "function" по всему дереву каталогов, начинающемуся с рабочего каталога.


# grep –r "function" *


Поиск в архивах gzip

Утилита gzip (от англ. GNU Zip) — это популярный инструмент для сжатия данных без потерь в Linux, использующий алгоритм Deflate.

При этом с помощью команды zgrep можно вести поиск по сжатому архиву точно так же, как Вы это делали вне сжатого архива с помощью команды grep. Следующая команда будет искать в архиве /var/log/syslog.2.gz строки, содержащие шаблон error с игнорированием регистра:


# zgrep –i error /var/log/syslog.2.gz
👍3
Топ полезных команд

Отправить тестовое письмо:
echo "test" | mail -s "Test Subject" user@gmail.com

Выполнить PHP функцию в консоли:
php -r "echo phpinfo();" | grep date.timezone

Отключить спящий режим на ubuntu server:
sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

Для проверки набора переменных BASH_ENV:
$ env | grep BASH_ENV

Замер скорости диска:
dd if=/dev/zero of=testfile bs=4k count=1310720
dd if=testfile of=/dev/null bs=4k count=1310720


Обновить locate:
/usr/libexec/locate.updatedb
1
This media is not supported in your browser
VIEW IN TELEGRAM
NetAlertX — инструмент для мониторинга сетевой активности и обнаружения изменений в подключенных устройствах. Он помогает администратору отслеживать новые устройства в сети, анализировать подключение и уведомлять о любых подозрительных изменениях. Утилита может быть полезной для повышения безопасности сети и оптимизации управления подключениями.

https://github.com/jokob-sk/NetAlertX
2
Media is too big
VIEW IN TELEGRAM
OpenCost

Инструмент мониторинга затрат с открытым исходным кодом для Kubernetes и облачных вычислений

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

OpenCost был первоначально разработан и открыт компанией Kubecost. Этот проект объединяет в себе спецификацию, а также реализацию на языке Golang этих подробных требований.

https://github.com/opencost/opencost
👍2
TCP vs UDP

Приведу 7 отличий, которые было бы неплохо знать.

Существует два способа установить соединение перед отправкой данных с одного устройства на другое: с установлением соединения (connection-oriented) и без установления соединения (connectionless). В первом случае создается сквозное соединение между отправителем и получателем перед передачей данных с сохранением порядка передачи пакетов. Во втором случае пакеты передаются между отправителем и получателем без создания какого-либо соединения. Пакеты проходят по разным маршрутам от отправителя к получателю, этот способ ненадежен и не гарантирует доставку пакетов.

https://habr.com/ru/articles/732794/
👍3
Короткий совет по Linux 💡

Если вы хотите очистить пустые каталоги, команда find может упростить эту работу:
$ find . -type d -empty -exec rmdir -v {} +
Параметр -type d выполняет поиск каталогов, -empty выбирает пустые каталоги, а -exec rmdir {} выполняет команду rmdir для их удаления.

Команда rmdir гарантирует, что каталог пуст перед его удалением.

В качестве альтернативы, вы также можете использовать эту команду для выполнения той же задачи:
$ find . -type d -empty -delete
👍3
Как найти количество открытых файлов в Linux

Чтобы узнать количество открытых файлов в Linux, можно воспользоваться следующими командами:

1. Использовать lsof (List Open Files) для подсчета открытых файлов в системе:

lsof | wc -l

Эта команда покажет общее количество открытых файлов в системе, где wc -l подсчитывает количество строк, то есть количество открытых файлов.

2. Использовать `/proc/sys/fs/file-nr` для просмотра счетчика открытых файлов:

cat /proc/sys/fs/file-nr

Этот файл содержит три числа, разделенные табуляцией:
- Первое число — текущее количество открытых файлов.
- Второе число — количество файлов, которые находятся в ожидании.
- Третье число — максимальное количество файлов, которое система может открыть.

3. Подсчитать открытые файлы для определенного процесса:
Если нужно узнать количество открытых файлов конкретного процесса, можно использовать:

lsof -p PID | wc -l

Замените PID на идентификатор процесса, который вас интересует.

4. Использовать lsof для подсчета открытых файлов конкретным пользователем:

lsof -u username | wc -l

Замените username на имя пользователя, чтобы увидеть количество открытых файлов этим пользователем.
👍31
Bash скрипт оповещения по email об остатке дискового пространства менее 10%


#!/bin/bash
used=`df -hl / | awk {'print $4'} | grep "%"`
used=${used/\%/}
if [ $used -gt 90 ];
then
echo "Attention! Available space less than 10%. Used space = $used"% | mail -s "DISK ALERT" <a href="mailto:user@host.com">user@host.com</a>
fi
6
💡Полезный набор хоткеев для работы в Bash

Навигация

Ctrl+A переместить курсор в начало строки
Ctrl+E переместить курсор в конец строки
Ctrl+F переместить курсор на один символ вправо
Ctrl+B переместить курсор на один символ влево
Alt+B / Esc+B переместить курсор влево на одно слово


Редактирование


Ctrl+U удалить все и вернуться в начала строки
Ctrl+K удалить все после курсора
Ctrl+W удалить слово перед курсором
Alt+D удалить слово после курсора
Ctrl+Y вернуть удаленное
Ctrl+D удалить символ под курсором
Ctrl+H аналогично backspace
Alt+T смена позиции текущего слова на предыдущее
Ctrl+T замена местами двух символа перед курсором
Alt+U перевод слова в заглавные после курсора
Alt+L перевод слова в строчные после курсора
Ctrl+_ отмена последнего ввода


Bash History

Ctrl+R режим обратного поиска
Ctrl+P переход к предыдущей команде
Ctrl+N переход к следующей команде
Ctrl+O выполнить найденную команду
Ctrl+G выход из режима поиска
!! выполнить предыдущую команду
!vim выполнить последнюю команду, которая начиналась на vim
!vim:p вывести последнюю команду, которая начиналась на vim
!n запустить n команду из history


Общие хоткеи


Ctrl+C завершить команду
Ctrl+L очистить экран
Ctrl+S приостановить вывод, остановить прокрутку
Ctrl+Q возобновить прокрутку
Ctrl+D закрыть оболочку
Ctrl+Z приостановить процесс
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Шпаргалка по сетевой безопасности
3
Шпаргалка по автоматизации задач с помощью cron и таймеров systemd

🟢 Cron
1. Формат записи задач в crontab:

* * * * * command_to_execute
| | | | |
| | | | +---- День недели (0 - вс, 6 - сб)
| | | +------ Месяц (1 - 12)
| | +-------- День месяца (1 - 31)
| +---------- Час (0 - 23)
+------------ Минуты (0 - 59)


2. Примеры:
- Запуск каждый день в 3 утра:

0 3 * * * /path/to/script.sh

- Каждые 15 минут:

*/15 * * * * /path/to/script.sh


3. Просмотр/редактирование crontab:

crontab -e


4. Логи cron:
- Расположены в /var/log/syslog или /var/log/cron.



🟢 Таймеры systemd
1. Файлы таймеров:
- Сервис: /etc/systemd/system/mytask.service
- Таймер: /etc/systemd/system/mytask.timer

2. Пример .service:

[Unit]
Description=My Task Service

[Service]
ExecStart=/path/to/script.sh


3. Пример .timer:

[Unit]
Description=Run My Task Every Day

[Timer]
OnCalendar=daily
Persistent=true

[Install]
WantedBy=timers.target


4. Основные команды:
- Включение таймера:

systemctl enable mytask.timer

- Запуск таймера:

systemctl start mytask.timer

- Проверка статуса:

systemctl list-timers
👍2
Команда 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
👍2