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

По всем вопросам : @Sofiia_artamonova
Download Telegram
DNS Record Types
👍3
Шпаргалка по systemd

Управление состояниями системы:

1. Перезагрузка системы:

systemctl reboot


2. Выключение системы:

systemctl poweroff


3. Перевести систему в спящий режим:

systemctl suspend


4. Перевести систему в гибернацию:

systemctl hibernate


5. Перевести систему в гибридный режим сна:

systemctl hybrid-sleep


Работа с юнит-файлами:

1. Показать путь к юнит-файлу службы:

systemctl show -p FragmentPath <имя_сервиса>


2. Редактирование юнит-файла службы:

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


Команда откроет конфигурацию в редакторе. Можно использовать флаг --full для редактирования полной версии юнит-файла.

3. Переактивация всех юнитов после изменений:

systemctl daemon-reload


4. Показать конфигурацию службы:

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


5. Показать все зависимости службы:

systemctl list-dependencies <имя_сервиса>


Логи:

1. Просмотр логов службы:

journalctl -u <имя_сервиса>


2. Просмотр системных логов с конца:

journalctl -e


3. Просмотр логов для текущей сессии:

journalctl -b


4. Просмотр логов ядра:

journalctl -k


Другие полезные команды:

1. Получить статус загрузки:

systemctl is-system-running


2. Перевести систему в однопользовательский режим (rescue mode):

systemctl rescue


3. Перевести систему в режим восстановления (emergency mode):

systemctl emergency


Описание формата юнит-файлов:

Юнит-файлы обычно хранятся в /etc/systemd/system/ или /lib/systemd/system/.

- [Unit] — Определяет общие атрибуты юнита, такие как описание и зависимости.
- [Service] — Конфигурация для сервисов, например, что запускать (`ExecStart=`) и как управлять процессом.
- [Install] — Настройки для включения или отключения юнита при загрузке.

Пример юнит-файла:

[Unit]
Description=Пример сервиса
After=network.target

[Service]
ExecStart=/usr/bin/пример-программы
Restart=on-failure

[Install]
WantedBy=multi-user.target
👍2
Памятка по Debian
👍3
Пример Bash-скрипта, который выполняет следующие задачи

1. Проверяет доступность важного веб-сервера.
2. Проверяет использование дискового пространства.
3. Делает бэкап указанных директорий.
4. Отправляет отчет на электронную почту администратора.

Пример скрипта:

#!/bin/bash

# Установки
WEB_SERVER="https://example.com"
BACKUP_DIR="/backup"
TARGET_DIRS="/var/www /etc"
DISK_USAGE_THRESHOLD=90
ADMIN_EMAIL="[email protected]"
DATE=$(date +"%Y-%m-%d")
BACKUP_FILE="$BACKUP_DIR/backup-$DATE.tar.gz"

# Проверка доступности веб-сервера
echo "Проверка доступности веб-сервера..."
if curl -s --head $WEB_SERVER | grep "200 OK" > /dev/null; then
echo "Веб-сервер доступен."
else
echo "Внимание: Веб-сервер недоступен!" | mail -s "Проблема с веб-сервером" $ADMIN_EMAIL
fi

# Проверка дискового пространства
echo "Проверка дискового пространства..."
DISK_USAGE=$(df / | grep / | awk '{ print $5 }' | sed 's/%//g')
if [ $DISK_USAGE -gt $DISK_USAGE_THRESHOLD ]; then
echo "Внимание: Использование дискового пространства превысило $DISK_USAGE_THRESHOLD%!" | mail -s "Проблема с дисковым пространством" $ADMIN_EMAIL
else
echo "Дискового пространства достаточно."
fi

# Создание бэкапа
echo "Создание бэкапа..."
tar -czf $BACKUP_FILE $TARGET_DIRS

if [ $? -eq 0 ]; then
echo "Бэкап успешно создан: $BACKUP_FILE"
else
echo "Ошибка создания бэкапа!" | mail -s "Ошибка создания бэкапа" $ADMIN_EMAIL
fi

# Отправка отчета
echo "Отправка отчета на $ADMIN_EMAIL..."
REPORT="Отчет за $DATE\n\n"
REPORT+="Статус веб-сервера: $(curl -s --head $WEB_SERVER | head -n 1)\n"
REPORT+="Использование дискового пространства: $DISK_USAGE%\n"
REPORT+="Расположение бэкапа: $BACKUP_FILE\n"

echo -e $REPORT | mail -s "Ежедневный отчет системы" $ADMIN_EMAIL

echo "Готово."


Описание:
1. Проверка веб-сервера: Используется команда curl, чтобы проверить, доступен ли сайт.
2. Проверка дискового пространства: С помощью df и awk проверяется использование диска. Если превышен порог (90%), отправляется уведомление.
3. Создание бэкапа: Команда tar архивирует и сжимает директории, которые указаны в переменной TARGET_DIRS.
4. Отправка отчета: Отчет по всем операциям отправляется на почту администратора с помощью mail.

Как использовать:
1. Задайте нужные параметры, такие как адрес веб-сервера, директории для бэкапа, порог использования диска и email.
2. Сделайте скрипт исполняемым:

   chmod +x /path/to/your/script.sh

3. Добавьте скрипт в cron для выполнения на регулярной основе:

   crontab -e

Пример для выполнения каждый день в 00:00:


0 0 * * * /path/to/your/script.sh
👍3
Производительность RDP в Windows Server и способы ее повышения

Эта статья актуальна для Windows Server 2019 в качестве сервера и Windows 10 в качестве клиента RDP. В статье мы рассмотрим шаги, которые следует предпринять для достижения максимальной производительности терминальных сессий RDP в Windows Server.

https://telegra.ph/Proizvoditelnost-RDP-v-Windows-Server-i-sposoby-ee-povysheniya-09-23
👍3
Основы мониторинга (обзор Prometheus и Grafana)

Мониторинг сегодня – фактически обязательная «часть программы» для компании любых размеров. В данной статье мы попробуем разобраться в многообразии программного обеспечения для мониторинга и рассмотрим подробнее одно из популярных решений – систему на основе Prometheus и Grafana

https://habr.com/ru/post/709204/
👍2
Ioping

Константин Хлебников разработал полезную утилиту ioping, позволяющую в стиле утилиты ping наблюдать за изменением отзывчивости системы ввода/вывода в Linux.

Установка в Debian 11
# apt install ioping

Поддерживаемые ОС
GNU/Linux, GNU/HURD, Windows, OS X, FreeBSD, DragonFlyBSD, OpenBSD

Пример выполнения:

$ ioping /home
4096 bytes from /home (ext4 /dev/sda5): request=1 time=0.4 ms
4096 bytes from /home (ext4 /dev/sda5): request=2 time=0.8 ms
4096 bytes from /home (ext4 /dev/sda5): request=3 time=0.9 ms
4096 bytes from /home (ext4 /dev/sda5): request=4 time=0.3 ms
4096 bytes from /home (ext4 /dev/sda5): request=5 time=0.2 ms
--- . ioping statistics ---
5 requests completed in 4266.5 ms
min/avg/max/mdev = 0.2/0.5/0.9/0.1 ms


https://github.com/koct9i/ioping
👍2
📌Совет по Linux

Если вы хотите определить, сколько времени займет выполнение определенной команды или скрипта, используйте команду time.

Вот синтаксис:

$ time <команда>.

Пример:
$ time find / -perm -u=s -type f &>/dev/null

Он также показывает использование системных ресурсов процесса, что делает его полезным инструментом для оценки эффективности конкретной команды.
👍4
Шпаргалка по безопасности сетей
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Как фильтровать вывод предыдущей команды и зачем нужен pipe |

Bash удобен тем, что позволяет передавать результаты одной команды в другую. Для этого используется символ | (pipe, канал, или конвейер).

Простой пример: нужно отфильтровать вывод лога nginx, чтобы отобразить только запросы к конкретному URL. Сначала используем команду cat для вывода содержимого файла, затем фильтруем нужные строки с помощью grep.


cat access.log | grep api/users
cat access.log | grep 02/Dec
cat access.log | grep api | grep 172.17.0.1
👍1
Haskell Dockerfile Linter

Интеллектуальный распаковщик Dockerfile, помогающий создавать лучшие образы Docker. Линтер разбирает Docker-файл на AST и выполняет правила поверх AST. Он опирается на поддержку ShellCheck для проверки Bash-кода внутри инструкций RUN.

https://github.com/hadolint/hadolint
Что в bash скрипте означает команда set -euo pipefail?

Команда set -euo pipefail в Bash-скрипте изменяет поведение интерпретатора и добавляет контроль ошибок, что делает сценарий более надежным.

1. -e: Завершает выполнение скрипта, если любая команда завершилась с ненулевым статусом (то есть произошла ошибка). Это предотвращает дальнейшее выполнение скрипта, если что-то пошло не так.

2. -u: Вызывает ошибку, если используется неинициализированная (неопределенная) переменная. Это помогает избежать ошибок, когда случайно обращаются к переменной, которая не была задана.

3. -o pipefail: Заставляет весь конвейер (|) завершиться с ошибкой, если любая команда в цепочке вернула ненулевой статус. По умолчанию в Bash статус конвейера определяется только последней командой, а pipefail изменяет это поведение. Если любая команда в конвейере завершится ошибкой, это будет считаться ошибкой всего конвейера.

Пример

set -euo pipefail

# Пример команды, использующей необъявленную переменную
echo $undefined_var # Это вызовет ошибку из-за опции -u


Таким образом, set -euo pipefail делает скрипт более устойчивым к ошибкам, помогая избежать неожиданных ситуаций и неявных ошибок.
👍31
Массивы bash

Если вы используете «стандартную» оболочку *NIX-системы, возможно, вы не знакомы с такой полезной особенностью bash как массивы. Хотя массивы в bash не так круты, как в P-языках (Perl, Python и PHP) и других языках программирования, они часто бывают полезны.
Bash-массивы имеют только численные индексы, но они не обязательны к использованию, то есть вы не должны определять значения всех индексов в явном виде.

https://habr.com/ru/articles/511608/
👍2
Срок действия учетной записи

Узнать срок действия учетной записи в ActiveDirectory можно через оснастку: Пользователи и компьютеры или с помощью команды Powershell. Во втором случае мы получим список всех учетных записей, у которых заканчивается срок действия.


Search-ADAccount -AccountExpiring -UsersOnly -TimeSpan 07.00:00:00 | Sort-Object -Descending AccountExpirationDate | ft Name, AccountExpirationDate

Устанавливаем TimeSpan на одну неделю и получаем список учетных записей срок действия которых закончится в течение одной недели (7 дней).
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Sampler. Визуализация для любой команды shell

Инструмент для выполнения команд shell, визуализации и оповещения. Настраивается с помощью простого файла YAML.

Установка Linux
sudo wget https://github.com/sqshq/sampler/releases/download/v1.1.0/sampler-1.1.0-linux-amd64 -O /usr/local/bin/sampler
sudo chmod +x /usr/local/bin/sampler

https://github.com/sqshq/sampler
❤‍🔥3
Простой и удобный шаблон для bash-скриптов выполняемых по расписанию

Хочу поделиться с сообществом простым и полезным шаблоном скрипта-обёртки на bash для запуска заданий по cron (а сейчас и systemd timers), который моя команда повсеместно использует много лет.

Сначала пара слов о том зачем это нужно, какие проблемы решает. С самого начала моей работы системным администратором linux, я обнаружил, что cron не очень удобный планировщик задач. При этом практически безальтернативный. Чем больше становился мой парк серверов и виртуальных машин, тем больше я получал абсолютно бесполезных почтовых сообщений "From: Cron Daemon". Задание завершилось с ошибкой - cron напишет об этом. Задание выполнено успешно, но напечатало что-нибудь в STDOUT/STDERR - cron всё равно напишет об этом. При этом даже нельзя отформатировать тему почтового сообщения для удобной автосортировки. Сначала были годы борьбы с использованием разных вариаций из > /dev/null, 2> /dev/null, > /dev/null 2>&1, | mail -E -s '<Subject>' root@. Потом я нашёл Cronic - обёртку на bash, которая скрывает вывод запускаемой задачи, если она завершена успешно. Стало полегче, но обнаружилось, что от некоторых заданий всё же лучше получать сообщение "Task OK", чтобы не столкнуться в самый неподходящий момент с тем, что выполнение задания тихо сломано месяц назад.

https://habr.com/ru/articles/778922/
👍2
Zenith - что-то вроде top или htop, но с диаграммами с возможностью масштабирования, использованием CPU, GPU, сети и диска.

Особенности
Дополнительные графики использования ЦП, памяти, сети и дисков
Быстрый просмотр свободного места на диске, IP-адресов сетевых карт, частоты процессора
Выделение основных пользователей ЦП, памяти и диска
Процент заряда батареи, время зарядки или разрядки, потребляемая мощность
Таблица процессов с возможностью фильтрации по типу верхней части, включающая использование диска каждым процессом
Изменение приоритета процесса
Представления диаграмм с возможностью масштабирования (с поддержкой прокрутки назад во времени)
Управление процессами с помощью сигналов
Сохранение данных о производительности между запусками
Метрики использования GPU для графических процессоров NVIDIA (с --features nvidia), включая использование GPU для каждого процесса
Графики свободного места на диске
Учет задержек (в Linux при запуске zenith с правами root)

Установка на дистрибутивы Linux на базе Debian/Ubuntu (64-бит)

sudo apt install curl
curl -sL https://raw.githubusercontent.com/wimpysworld/deb-get/main/deb-get | sudo -E bash -s install deb-get



https://github.com/bvaisvil/zenith
👍4
Media is too big
VIEW IN TELEGRAM
Файловые системы в линуксе | сравнительный тест файловых систем linux ext4 xfs f2fs btrfs zfs