📌 Автоматизация задач (cron, systemd timers, Ansible)
Всем доброй ночи!
Автоматизация — ключевой элемент эффективного администрирования серверов. В данном руководстве рассмотрены три основных инструмента автоматизации:
- cron — классический планировщик задач в UNIX-подобных системах.
- systemd timers — альтернатива cron, интегрированная в systemd.
- Ansible — инструмент управления конфигурацией и автоматизации.
1. Использование cron
cron позволяет запускать команды и скрипты по расписанию.
1.1. Основные файлы cron
- /etc/crontab — системный crontab.
- /etc/cron.d/ — каталог для пользовательских crontab-файлов.
- /var/spool/cron/crontabs/ — файлы crontab для отдельных пользователей.
1.2. Формат записи crontab
Пример: запуск скрипта каждый день в 3:30 утра:
1.3. Управление cron
- Просмотр текущего crontab:
- Редактирование crontab:
- Удаление crontab:
- Логи cron хранятся в /var/log/syslog (Ubuntu/Debian) или /var/log/cron (CentOS/RHEL).
2. Использование systemd timers
Systemd timers — альтернатива cron, предоставляющая больше возможностей, включая логирование и гибкость настроек.
2.1. Создание таймера
1. Создайте unit-файл для сервиса (
2. Создайте unit-файл для таймера (
2.2. Управление таймерами
- Включение таймера:
- Проверка состояния таймера:
- Просмотр логов:
3. Автоматизация с Ansible
Ansible позволяет управлять серверами без установки агентов.
3.1. Установка Ansible
Для Debian/Ubuntu:
Для CentOS/RHEL:
3.2. Базовая структура Ansible
3.3. Пример Playbook
Файл
Запуск:
Заключение
- Используйте cron для простых задач.
- Применяйте systemd timers, если важны логи и интеграция с systemd.
- Автоматизируйте масштабные задачи с Ansible.
@sysadmin1
Всем доброй ночи!
Автоматизация — ключевой элемент эффективного администрирования серверов. В данном руководстве рассмотрены три основных инструмента автоматизации:
- cron — классический планировщик задач в UNIX-подобных системах.
- systemd timers — альтернатива cron, интегрированная в systemd.
- Ansible — инструмент управления конфигурацией и автоматизации.
1. Использование cron
cron позволяет запускать команды и скрипты по расписанию.
1.1. Основные файлы cron
- /etc/crontab — системный crontab.
- /etc/cron.d/ — каталог для пользовательских crontab-файлов.
- /var/spool/cron/crontabs/ — файлы crontab для отдельных пользователей.
1.2. Формат записи crontab
* * * * * /путь/к/команде аргументы
| | | | |
| | | | +---- День недели (0 - вс, 6 - сб)
| | | +------ Месяц (1-12)
| | +-------- День месяца (1-31)
| +---------- Часы (0-23)
+------------ Минуты (0-59)
Пример: запуск скрипта каждый день в 3:30 утра:
30 3 * * * /usr/local/bin/myscript.sh
1.3. Управление cron
- Просмотр текущего crontab:
crontab -l
- Редактирование crontab:
crontab -e
- Удаление crontab:
crontab -r
- Логи cron хранятся в /var/log/syslog (Ubuntu/Debian) или /var/log/cron (CentOS/RHEL).
2. Использование systemd timers
Systemd timers — альтернатива cron, предоставляющая больше возможностей, включая логирование и гибкость настроек.
2.1. Создание таймера
1. Создайте unit-файл для сервиса (
/etc/systemd/system/myscript.service):[Unit]
Description=Запуск скрипта
[Service]
ExecStart=/usr/local/bin/myscript.sh
2. Создайте unit-файл для таймера (
/etc/systemd/system/myscript.timer):[Unit]
Description=Таймер для myscript.service
[Timer]
OnCalendar=*-*-* 03:30:00
Persistent=true
[Install]
WantedBy=timers.target
2.2. Управление таймерами
- Включение таймера:
systemctl enable --now myscript.timer
- Проверка состояния таймера:
systemctl list-timers
- Просмотр логов:
journalctl -u myscript.service --no-pager
3. Автоматизация с Ansible
Ansible позволяет управлять серверами без установки агентов.
3.1. Установка Ansible
Для Debian/Ubuntu:
sudo apt update && sudo apt install -y ansible
Для CentOS/RHEL:
sudo yum install -y epel-release
sudo yum install -y ansible
3.2. Базовая структура Ansible
inventory/hosts # Список серверов
playbooks/
install_apache.yml # Пример Playbook
roles/
common/ # Роли Ansible
3.3. Пример Playbook
Файл
install_apache.yml:- hosts: webservers
become: yes
tasks:
- name: Установить Apache
apt:
name: apache2
state: present
Запуск:
ansible-playbook -i inventory/hosts playbooks/install_apache.yml
Заключение
- Используйте cron для простых задач.
- Применяйте systemd timers, если важны логи и интеграция с systemd.
- Автоматизируйте масштабные задачи с Ansible.
@sysadmin1
🤝3🤩2❤1👍1🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩2💯2❤1👍1🔥1
🧰 Установка и управление пакетами в Linux
🗂 Основные менеджеры пакетов:
-
-
-
-
🟦
🟨
🟥
🟩
🌀
🔵
📌 Примечание:
-
- Используйте
@sysadmin1
🗂 Основные менеджеры пакетов:
-
apt — Debian/Ubuntu-
yum, dnf — CentOS, RHEL, Fedora-
pacman — Arch Linux-
snap, flatpak — кроссплатформенные🟦
apt (Debian/Ubuntu)apt update # Обновить список пакетов
apt upgrade # Обновить установленные пакеты
apt install <пакет> # Установить пакет
apt remove <пакет> # Удалить пакет (оставив конфиги)
apt purge <пакет> # Удалить с конфигами
apt autoremove # Удалить неиспользуемые зависимости
apt search <имя> # Найти пакет
apt show <пакет> # Информация о пакете
🟨
yum (CentOS 7 и старше)yum check-update # Проверить обновления
yum update # Обновить всё
yum install <пакет> # Установить
yum remove <пакет> # Удалить
yum info <пакет> # Информация о пакете
yum list installed # Все установленные пакеты
yum search <ключевое_слово> # Поиск
🟥
dnf (Fedora, CentOS 8+)dnf check-update # Проверить обновления
dnf upgrade # Обновить всё
dnf install <пакет> # Установить
dnf remove <пакет> # Удалить
dnf info <пакет> # Инфо о пакете
dnf search <имя> # Поиск
dnf list installed # Установленные пакеты
🟩
pacman (Arch Linux и производные)pacman -Syu # Обновить систему
pacman -S <пакет> # Установить пакет
pacman -R <пакет> # Удалить
pacman -Rs <пакет> # Удалить с зависимостями
pacman -Ss <поиск> # Поиск в репозиториях
pacman -Qi <пакет> # Информация о пакете
pacman -Qdt # Найти осиротевшие пакеты
🌀
snap (Canonical, sandboxed)snap find <пакет> # Найти
snap install <пакет> # Установить
snap list # Установленные пакеты
snap refresh # Обновить всё
snap remove <пакет> # Удалить
🔵
flatpak (Sandboxed, альтернатива snap)flatpak search <имя> # Поиск
flatpak install <репо> <имя> # Установить (обычно `flathub`)
flatpak run <идентификатор> # Запустить
flatpak list # Список установленных
flatpak update # Обновить всё
flatpak uninstall <имя> # Удалить
📌 Примечание:
-
snap и flatpak — изолированные окружения, не конфликтуют с системными пакетами. - Используйте
apt, dnf и др. для системных компонентов, а snap/flatpak — для десктопных/изолированных приложений.@sysadmin1
🤗3🤩2❤1👍1🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
📡 Когда интернет в районе снова лагает…
🐐 Коза не выдержала…
и повесилась на оптоволоконный кабель.
Её спасли и спросили:
— Ты чего творишь?! 😳
Коза спокойно отвечает:
— Интернет слабый… жить невозможно…
💀 Уровень отчаяния: L7
📉 Скорость: “подключено, но не работает”
Коллеги, признавайтесь — у кого тоже интернет доводил до такого? 😅
@sysadmin1
🐐 Коза не выдержала…
и повесилась на оптоволоконный кабель.
Её спасли и спросили:
— Ты чего творишь?! 😳
Коза спокойно отвечает:
— Интернет слабый… жить невозможно…
💀 Уровень отчаяния: L7
📉 Скорость: “подключено, но не работает”
Коллеги, признавайтесь — у кого тоже интернет доводил до такого? 😅
@sysadmin1
😁5🔥3🤣3🐳2❤1
📌Работа с Docker и контейнерами
Введение
Docker – это инструмент контейнеризации, который позволяет упрощать развертывание и управление приложениями. В этом руководстве мы рассмотрим основные команды и концепции, необходимые для работы с контейнерами.
1. Установка Docker
На Linux (Ubuntu/Debian):
На CentOS/RHEL:
Проверка установки:
2. Основные команды Docker
2.1 Запуск контейнера (
Запустить контейнер можно с помощью команды:
Параметры:
-
-
-
2.2 Список работающих контейнеров
Для отображения всех контейнеров (включая остановленные):
2.3 Остановка и удаление контейнеров
Остановка контейнера:
Удаление контейнера:
2.4 Запуск команд в работающем контейнере
Выполнить команду в контейнере:
3. Работа с Docker Compose
Docker Compose позволяет управлять несколькими контейнерами с помощью YAML-файла.
3.1 Установка Docker Compose
3.2 Пример
Создадим файл
3.3 Запуск и управление сервисами
Запустить контейнеры:
Остановить контейнеры:
Просмотреть логи:
4. Работа с образами (Docker Images)
4.1 Список локальных образов
4.2 Поиск образов
4.3 Загрузка образа
4.4 Создание своего образа
Создайте
Соберите образ:
5. Работа с томами (Volumes)
Тома используются для хранения данных контейнеров.
5.1 Создание и просмотр томов
Создать новый том:
Просмотреть список томов:
5.2 Подключение тома к контейнеру
@sysadmin1
Введение
Docker – это инструмент контейнеризации, который позволяет упрощать развертывание и управление приложениями. В этом руководстве мы рассмотрим основные команды и концепции, необходимые для работы с контейнерами.
1. Установка Docker
На Linux (Ubuntu/Debian):
sudo apt update && sudo apt install -y docker.io
sudo systemctl enable --now docker
На CentOS/RHEL:
sudo yum install -y docker
sudo systemctl enable --now docker
Проверка установки:
docker --version
2. Основные команды Docker
2.1 Запуск контейнера (
docker run)Запустить контейнер можно с помощью команды:
docker run -d --name my_container nginx
Параметры:
-
-d – фоновый режим-
--name – задание имени контейнеру-
nginx – имя образа2.2 Список работающих контейнеров
docker ps
Для отображения всех контейнеров (включая остановленные):
docker ps -a
2.3 Остановка и удаление контейнеров
Остановка контейнера:
docker stop my_container
Удаление контейнера:
docker rm my_container
2.4 Запуск команд в работающем контейнере
Выполнить команду в контейнере:
docker exec -it my_container bash
3. Работа с Docker Compose
Docker Compose позволяет управлять несколькими контейнерами с помощью YAML-файла.
3.1 Установка Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
3.2 Пример
docker-compose.ymlСоздадим файл
docker-compose.yml:version: '3'
services:
web:
image: nginx
ports:
- "80:80"
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: rootpass
3.3 Запуск и управление сервисами
Запустить контейнеры:
docker-compose up -d
Остановить контейнеры:
docker-compose down
Просмотреть логи:
docker-compose logs -f
4. Работа с образами (Docker Images)
4.1 Список локальных образов
docker images
4.2 Поиск образов
docker search ubuntu
4.3 Загрузка образа
docker pull ubuntu
4.4 Создание своего образа
Создайте
Dockerfile:FROM ubuntu:latest
RUN apt update && apt install -y nginx
CMD ["nginx", "-g", "daemon off;"]
Соберите образ:
docker build -t my_nginx .
5. Работа с томами (Volumes)
Тома используются для хранения данных контейнеров.
5.1 Создание и просмотр томов
Создать новый том:
docker volume create my_volume
Просмотреть список томов:
docker volume ls
5.2 Подключение тома к контейнеру
docker run -d -v my_volume:/data --name my_container nginx
@sysadmin1
❤3👍2🔥2⚡1🎉1
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2⚡1👍1🎉1🏆1
⚡ Автоочистка памяти RAM в Linux 🧹
Если сервер начинает тормозить из-за перегруженной оперативной памяти, можно использовать скрипт для её очистки.
🛠️ Скрипт:
📌 Как использовать:
1. Сохраните скрипт в файл, например
2. Дайте права на выполнение:
3. Запустите от root:
🕒 Автоматизация через
Можно настроить автоматический запуск, например, раз в час:
Добавьте строку:
Теперь сервер будет поддерживать оперативную память в чистоте без вашего участия! 🚀
@sysadmin1
Если сервер начинает тормозить из-за перегруженной оперативной памяти, можно использовать скрипт для её очистки.
🛠️ Скрипт:
#!/bin/bash
echo "Освобождение памяти..."
sync && echo 3 > /proc/sys/vm/drop_caches
echo "Готово! Свободная память увеличена."
📌 Как использовать:
1. Сохраните скрипт в файл, например
clear_ram.sh2. Дайте права на выполнение:
chmod +x clear_ram.sh
3. Запустите от root:
sudo ./clear_ram.sh
🕒 Автоматизация через
cronМожно настроить автоматический запуск, например, раз в час:
sudo crontab -e
Добавьте строку:
0 * * * * /path/to/clear_ram.sh
Теперь сервер будет поддерживать оперативную память в чистоте без вашего участия! 🚀
@sysadmin1
👍2🔥2🎉1
Please open Telegram to view this post
VIEW IN TELEGRAM
👏2🏆2⚡1👍1🔥1
📌 Шпаргалка для работы с Grafana + Loki! 🔥
🚀 Grafana + Loki — мощный стек для централизованного логирования и визуализации логов. Loki собирает логи, а Grafana отображает их в удобном интерфейсе.
🔥 1. Установка и настройка
🛠 Установка Loki
📌 На сервере (Linux)
📌 Пример конфига
📌 Запуск Loki
🛠 Установка Promtail (для сбора логов)
📌 Пример конфига
📌 Запуск Promtail
🎨 2. Настройка Grafana
📌 Установка (Debian/Ubuntu)
📌 Запуск и включение в автозагрузку
📌 Настройка Grafana для Loki
1. Зайти в веб-интерфейс Grafana (
2. Перейти в
3. Добавить источник
- URL:
- Access: Server
- Save & Test
🔍 3. Запросы в Loki (LogQL)
📝 Базовый синтаксис
🔹 Фильтр по метке (
🔹 Парсинг JSON
🔍 Фильтрация логов
🔹 Ищет строки, содержащие
🔹 Исключает строки с
📊 Агрегация логов
🔹 Подсчет количества записей за последние 5 минут
🔹 Количество логов за 10 минут
🔹 Подсчет логов по уровням (например,
🛠 4. Управление и отладка
🚀 Перезапуск сервисов
📂 Просмотр логов
🔄 Очистка старых логов
📡 Проверка работы Loki API
Ответ: ready ✅
@sysadmin1
🚀 Grafana + Loki — мощный стек для централизованного логирования и визуализации логов. Loki собирает логи, а Grafana отображает их в удобном интерфейсе.
🔥 1. Установка и настройка
🛠 Установка Loki
📌 На сервере (Linux)
# Создаем директории
mkdir -p /etc/loki /var/lib/loki
# Загружаем последнюю версию Loki
curl -O -L "https://github.com/grafana/loki"
# Даем права на исполнение
chmod +x loki-linux-amd64
mv loki-linux-amd64 /usr/local/bin/loki
📌 Пример конфига
/etc/loki/config.yaml auth_enabled: false
server:
http_listen_port: 3100
ingester:
lifecycler:
ring:
kvstore:
store: inmemory
replication_factor: 1
chunk_idle_period: 5m
chunk_retain_period: 30s
schema_config:
configs:
- from: 2023-01-01
store: boltdb-shipper
object_store: filesystem
schema: v11
index:
prefix: index_
period: 24h
storage_config:
boltdb_shipper:
active_index_directory: /var/lib/loki/index
cache_location: /var/lib/loki/cache
shared_store: filesystem
limits_config:
enforce_metric_name: false
reject_old_samples: true
reject_old_samples_max_age: 168h
chunk_store_config:
max_look_back_period: 0s
table_manager:
retention_deletes_enabled: false
retention_period: 0s
📌 Запуск Loki
loki -config.file=/etc/loki/config.yaml
🛠 Установка Promtail (для сбора логов)
curl -O -L "https://github.com/grafana/loki"
chmod +x promtail-linux-amd64
mv promtail-linux-amd64 /usr/local/bin/promtail
📌 Пример конфига
/etc/promtail/config.yamlserver:
http_listen_port: 9080
positions:
filename: /var/lib/promtail/positions.yaml
clients:
- url: http://localhost:3100/loki/api/v1/push
scrape_configs:
- job_name: system_logs
static_configs:
- targets:
- localhost
labels:
job: "varlogs"
host: "server-1"
__path__: /var/log/*.log
📌 Запуск Promtail
promtail -config.file=/etc/promtail/config.yaml
🎨 2. Настройка Grafana
📌 Установка (Debian/Ubuntu)
sudo apt-get install -y software-properties-common
sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
sudo apt-get update
sudo apt-get install grafana
📌 Запуск и включение в автозагрузку
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
📌 Настройка Grafana для Loki
1. Зайти в веб-интерфейс Grafana (
http://<server>:3000)2. Перейти в
Configuration → Data Sources3. Добавить источник
Loki- URL:
http://localhost:3100- Access: Server
- Save & Test
🔍 3. Запросы в Loki (LogQL)
📝 Базовый синтаксис
{job="varlogs"} | json🔹 Фильтр по метке (
job="varlogs") 🔹 Парсинг JSON
🔍 Фильтрация логов
{job="varlogs"} |= "error"🔹 Ищет строки, содержащие
"error"{job="varlogs"} != "debug"🔹 Исключает строки с
"debug"📊 Агрегация логов
rate({job="varlogs"}[5m])🔹 Подсчет количества записей за последние 5 минут
count_over_time({job="varlogs"}[10m])🔹 Количество логов за 10 минут
sum by (level) (count_over_time({job="varlogs"}[10m]))🔹 Подсчет логов по уровням (например,
error, info)🛠 4. Управление и отладка
🚀 Перезапуск сервисов
systemctl restart loki
systemctl restart promtail
systemctl restart grafana-server
📂 Просмотр логов
journalctl -u loki -f
journalctl -u promtail -f
journalctl -u grafana-server -f
🔄 Очистка старых логов
rm -rf /var/lib/loki/*
rm -rf /var/lib/promtail/*
📡 Проверка работы Loki API
curl -s "http://localhost:3100/ready"
Ответ: ready ✅
@sysadmin1
🤩2❤1👍1🔥1🎉1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1🎉1
📌Объединение файлов командой cat
Команда
Основные способы объединения файлов
1. Объединение двух и более файлов в один
Формат команды:
Этот вариант соединяет содержимое
2. Добавление содержимого к существующему файлу
Формат команды:
Эта команда добавляет содержимое
3. Объединение всех файлов в директории
Если нужно объединить все текстовые файлы в текущей директории в один файл:
Этот вариант объединяет все файлы с расширением
Практическое применение
1. Лог-файлы: Объединение нескольких логов в один:
2. Конфигурационные файлы: Создание общего файла конфигурации:
3. Архивы данных: Объединение частей архивов или дампов БД:
Проверка результата объединения
После выполнения команды можно проверить содержимое объединённого файла командой:
Или с постраничным просмотром:
@sysadmin1
Команда
cat (сокращение от «concatenate») в Linux и других UNIX-подобных системах широко используется для работы с текстовыми файлами. Одной из её ключевых возможностей является объединение (конкатенация) нескольких файлов в один.Основные способы объединения файлов
1. Объединение двух и более файлов в один
Формат команды:
cat file1.txt file2.txt > result.txt
Этот вариант соединяет содержимое
file1.txt и file2.txt и записывает его в result.txt. Если result.txt уже существует, он будет перезаписан.2. Добавление содержимого к существующему файлу
Формат команды:
cat file1.txt >> result.txt
Эта команда добавляет содержимое
file1.txt в конец result.txt, сохраняя уже имеющуюся информацию.3. Объединение всех файлов в директории
Если нужно объединить все текстовые файлы в текущей директории в один файл:
cat *.txt > all_files_combined.txt
Этот вариант объединяет все файлы с расширением
.txt в all_files_combined.txt.Практическое применение
1. Лог-файлы: Объединение нескольких логов в один:
cat /var/log/syslog.1 /var/log/syslog.2 > syslogs_combined.log
2. Конфигурационные файлы: Создание общего файла конфигурации:
cat config_part1.conf config_part2.conf > full_config.conf
3. Архивы данных: Объединение частей архивов или дампов БД:
cat backup_part1.sql backup_part2.sql > full_backup.sql
Проверка результата объединения
После выполнения команды можно проверить содержимое объединённого файла командой:
cat result.txt
Или с постраничным просмотром:
less result.txt
@sysadmin1
❤1👍1🎉1