Он позволяет автоматически выполнять команды, скрипты или программы в заданное время: ежедневно, еженедельно, с точностью до минуты.
Без него пришлось бы вручную запускать резервное копирование, ротацию логов или обновление кеша.
За расписание отвечает демон crond (cron daemon). Он запускается при старте системы и постоянно работает в фоне. Crond читает конфигурационные файлы — crontab (cron tables) — и в нужный момент выполняет указанные команды.
— Системные — лежат в
/etc/crontab и в каталогах /etc/cron.d/, /etc/cron.daily/, /etc/cron.hourly/ и т.д. Требуют указания пользователя, от которого запускается задача.— Пользовательские — создаются командой crontab -e для каждого пользователя отдельно. Запускаются от имени этого пользователя.
Каждая строка в crontab описывает одно задание и состоит из пяти полей времени и команды:
* * * * * команда
│ │ │ │ │
│ │ │ │ └── день недели (0-7, где 0 и 7 = воскресенье)
│ │ │ └──── месяц (1-12)
│ │ └────── день месяца (1-31)
│ └──────── час (0-23)
└────────── минута (0-59)
—
* — любое значение (каждую минуту, каждый час...)—
*/n — каждые n единиц (например, */5 в поле минут — каждые 5 минут)—
, — перечисление (например, 1,15 в поле дня — 1-й и 15-й дни)—
- — диапазон (например, 9-17 в поле часа — с 9 до 17 включительно)
crontab -e # открыть текущий crontab для редактирования (или создать новый)
crontab -l # показать текущие задания
crontab -r # удалить весь crontab
crontab -u username -l # (от root) посмотреть crontab другого пользователя
Каждый день в 2:30 ночи
30 2 * * * /home/user/backup.sh
Первого числа каждого месяца в полночь
0 0 1 * * /home/user/cleanup.sh
Cron остаётся самым простым и надёжным способом автоматизации в Linux. Один раз настроил — и задачи выполняются годами без участия человека. Главное — не забывать проверять логи и не допускать конфликтов при одновременном запуске тяжёлых заданий.
#линуксятина
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥5👏3❤1
#полезное
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍3👏2
У многих компаний есть резервные копии, прописанные RTO и RPO и даже план аварийного восстановления.
Но в реальном инциденте этого часто оказывается недостаточно: сбои перерастают в катастрофу, а злоумышленники всё чаще атакуют именно бэкапы.
#статья
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍4👏3
Он не запускается как контейнер, а выполняется напрямую в системе как системный сервис (systemd-юнит). Его задача — превратить узел в полноценную единицу кластера, способную выполнять рабочую нагрузку.
1. Регистрация узла — При старте kubelet регистрирует узел в API-сервере, передавая информацию о ресурсах (CPU, память), IP-адресах и метках.
2. Получение заданий — Kubelet постоянно наблюдает за API-сервером. Как только появляется Pod, назначенный на его узел (поле spec.nodeName совпадает с именем узла), он приступает к запуску.
3. Запуск контейнеров — Kubelet не запускает контейнеры напрямую. Он обращается к container runtime (containerd, CRI-O) через CRI (Container Runtime Interface). Runtime создаёт и запускает контейнеры, настраивает изоляцию через namespace и cgroups.
4. Мониторинг и пробы — После запуска kubelet регулярно выполняет:
— livenessProbe — проверяет, живо ли приложение (если нет — перезапускает контейнер);
— readinessProbe — определяет, готов ли под принимать трафик;
— startupProbe — для приложений с долгим стартом.
5. Отчётность — Kubelet собирает состояние контейнеров (Running, Terminated, Waiting) и передаёт его в API-сервер.
#заметкиИнженера
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍3🔥2
— Выбор подов по имени, части имени, регулярному выражению или меткам (labels).
— Цветовое кодирование для каждого пода (по умолчанию 8 цветов, настраивается).
— Объединение логов в хронологическом порядке (как если бы все логи писались в один файл).
— Поддержка мультиконтейнерных подов: можно указать конкретный контейнер или следить за всеми.
— Работа в режиме
tail -f (follow) для непрерывного вывода новых сообщений.— Возможность исключать отдельные поды из выборки.
— Использует стандартный
kubectl logs под капотом — не требует установки дополнительных компонентов в кластер.— Простота использования: достаточно написать
kubetail my-app и получить логи всех подов, имя которых начинается с my-app.— Гибкость: выбор по лейблам (
-l app=my-app,version=v1), регулярным выражениям (-r ^web-), исключение ненужных подов (-E broken-pod).— Не требует привилегий в кластере — работает с текущим контекстом kubectl.
— Лёгкость интеграции в повседневную работу: можно добавить алиас в .bashrc или .zshrc.
— Цвета помогают визуально разделять потоки разных подов, что упрощает отладку.
kubetail превращает разрозненные логи множества микросервисов в единую ленту событий. Это особенно полезно при отладке распределённых транзакций, когда нужно видеть, что происходит в нескольких компонентах одновременно. Инструмент не перегружен лишними функциями, но закрывает 90% потребностей при работе с логами в Kubernetes.
#полезное
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍3👏2
Unit-файлы — это простые текстовые файлы в формате, напоминающем ini.
Они хранятся в каталогах:
—
/etc/systemd/system/ — для пользовательских/локальных юнитов (приоритет выше остальных)—
/lib/systemd/system/ — юниты, установленные пакетами—
/run/systemd/system/ — динамически созданные юниты (например, при монтировании)Каждый unit-файл состоит из секций.
Имя секции заключается в квадратные скобки.
Внутри секции — директивы вида Ключ=Значение. Комментарии начинаются с #.
— [Unit] — присутствует во всех юнитах. Содержит описание, зависимости, порядок загрузки.
— [Service] — только для .service юнитов. Определяет, как запускать, контролировать и останавливать процесс.
— [Install] — используется командой systemctl enable. Указывает, в какие таргеты включать юнит.
— Другие специфические секции: [Socket], [Timer], [Mount], [Path] и т.д.
—
Description — понятное имя юнита (отображается в systemctl status).—
Documentation — список URI с документацией (можно указать несколько через пробел).—
After, Before — управление порядком запуска. Например, After=network.target означает, что этот юнит должен запускаться после network.target (но не гарантирует, что сеть готова).—
Requires — жёсткая зависимость: если указанный юнит не запустится, этот тоже не запустится (или будет остановлен).—
Wants — мягкая зависимость: если указанный юнит не запустится, это не помешает запуску текущего.—
Conflicts — если указанный юнит запущен, текущий будет остановлен (и наоборот).—
Condition... и Assert... — проверки перед запуском (например, ConditionPathExists=/etc/myapp.conf).
[Unit]
Description=Python Application
Documentation=https://python.appdocs.ru/myapp
After=network.target
Wants=network-online.target
ConditionPathExists=/opt/myapp/app.py
[Service]
Type=simple
User=appuser
ExecStart=/usr/bin/python3 /opt/myapp/app.py
Restart=on-failure
[Install]
WantedBy=multi-user.target
—
Description — что это за сервис.—
Documentation — где искать информацию.—
After=network.target — старт после базовой сети.—
Wants=network-online.target — желательно дождаться полной готовности сети (но не критично).—
ConditionPathExists — проверяет наличие файла перед запуском.— Далее идут секции [Service] (параметры запуска) и [Install] (автозагрузка).
Понимание секции [Unit] даёт контроль над тем, когда и при каких условиях запускается ваш сервис. Остальные секции ([Service], [Timer], [Socket] и т.д.) описывают уже конкретную логику работы юнита.
#линуксятина
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍3👏2
Разноцветная корова-предсказательница прямо в терминале
# Ubuntu/Debian
sudo apt install fortune-mod cowsay lolcat
# Fedora
sudo dnf install fortune-mod cowsay lolcat
# Arch/Manjaro
sudo pacman -S fortune-mod cowsay lolcat
# macOS
brew install fortune cowsay lolcat
user@ubuntu:~ $ fortune | cowsay | lolcat
_________________________________________
/ Сегодня великий день. \
| Особенно если ничего не сломается после |
\ обеда. /
-----------------------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
user@ubuntu:~ $ fortune | cowsay | lolcat
_________________________________________
/ Ожидайте перемен. \
| Скорее всего, их принесет коллега с |
\ фразой: «а можно на минутку?» /
-----------------------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
user@ubuntu:~ $ fortune | cowsay | lolcat
_________________________________________
/ Вселенная на твоей стороне. \
| Но просит сначала дочитать документацию.|
-----------------------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
P.S. В примере вольный перевод инженера
Хороших весенних выходных
#rootoffun
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6😁4🔥3❤1
Что уже вступило в силу с 1 марта
— единая система для обмена данными о признаках мошенничества между госорганами, операторами связи, банками и платформами.
Что обсуждается и что вступит в силу с 1 сентября
#ИТиЗАКОН
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1
🌐 18 сетевых портов
Шпаргалка, которая помогает быстро понять, какой сервис работает за тем или иным портом, и куда смотреть, если в сети что-то пошло не так.
⏺️ FTP — 21/TCP
Передача файлов. Сейчас используется реже, потому что без дополнительной защиты считается небезопасным.
⏺️ Удалённый доступ — SSH 22/TCP, Telnet 23/TCP, RDP 3389/TCP
SSH, Telnet и RDP используются для удалённого подключения
SSH — защищённый доступ, Telnet — устаревший протокол без шифрования, RDP — удалённый рабочий стол Windows.
⏺️ Почта — SMPT 25/TCP, POP3 110/TCP, IMAP 143/TCP
SMTP отвечает за отправку писем, POP3 и IMAP — за получение почты. IMAP позволяет работать с письмами на сервере, POP3 — загружать их на устройство.
⏺️ DNS — 53/UDP или TCP
Преобразует доменные имена в IP-адреса.
⏺️ DHCP — 67/UDP и 68/UDP
Автоматически выдаёт устройству IP-адрес и сетевые настройки.
⏺️ Веб-трафик — HTTP 80/TCP и HTTPS 443/TCP
HTTP и HTTPS используются для сайтов и API. HTTPS — тот же веб-трафик, но с шифрованием.
⏺️ NTP — 123/UDP
Синхронизация времени на серверах и рабочих станциях.
⏺️ Базы данных — 1521/TCP, 3306/TCP, 5432/TCP
Стандартные порты Oracle, MySQL и PostgreSQL.
#полезное
Шпаргалка, которая помогает быстро понять, какой сервис работает за тем или иным портом, и куда смотреть, если в сети что-то пошло не так.
Передача файлов. Сейчас используется реже, потому что без дополнительной защиты считается небезопасным.
SSH, Telnet и RDP используются для удалённого подключения
SSH — защищённый доступ, Telnet — устаревший протокол без шифрования, RDP — удалённый рабочий стол Windows.
SMTP отвечает за отправку писем, POP3 и IMAP — за получение почты. IMAP позволяет работать с письмами на сервере, POP3 — загружать их на устройство.
Преобразует доменные имена в IP-адреса.
Автоматически выдаёт устройству IP-адрес и сетевые настройки.
HTTP и HTTPS используются для сайтов и API. HTTPS — тот же веб-трафик, но с шифрованием.
Синхронизация времени на серверах и рабочих станциях.
Стандартные порты Oracle, MySQL и PostgreSQL.
#полезное
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤5🔥3
— 99,9% времени без перебоев. Как обеспечить надёжную работу IT-систем и не разориться
— Пять признаков, что вашей ИТ-инфраструктуре пора в облако
— Публичное, частное, гибридное облако — в чем разница и какое подходит бизнесу?
— Частное облако за 10 минут — что такое Private Cloud и как оно работает
— Облако или свой сервер — где лучше спрятать чувствительные данные
— 5 типичных ошибок при переходе на облачную инфраструктуру и как их избежать
— Конец эпохи VMware: как российскому бизнесу избежать штрафов и простоев
— Как VDI решает проблему с нехваткой кадров в инженерных компаниях
#полезное
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4❤3👍3
Он отвечает за реализацию сервисов (Service) и обеспечивает перенаправление трафика на поды.
— Обеспечивает работу сервисов типов ClusterIP, NodePort, LoadBalancer
— Преобразует виртуальный IP сервиса в IP-адреса целевых подов
— Выполняет балансировку нагрузки на уровне L4 (TCP/UDP/SCTP)
— Отслеживает изменения сервисов и эндпоинтов через Kubernetes API
Kube-proxy следит за API-сервером. При создании, удалении или изменении сервиса он обновляет правила маршрутизации на ноде. Трафик, приходящий на IP сервиса, перенаправляется на один из подов согласно настроенному режиму.
— Генерирует цепочки правил в iptables
— Пакеты перенаправляются напрямую на поды без дополнительных переходов
— Балансировка реализована через случайный выбор правила
— Подходит для большинства кластеров среднего размера
— Использует встроенный балансировщик ядра Linux IPVS
— Выдерживает десятки тысяч сервисов без деградации
— Обеспечивает session affinity (persistence) на уровне ядра
— Прокси работает в пространстве пользователя
— Каждое соединение проходит через kube-proxy
— Используется только в legacy-кластерах
— Работает независимо от container runtime (containerd, CRI-O)
— Запускается на каждой ноде как DaemonSet (или системный сервис)
— Взаимодействует только с сетевым стеком ноды, не влияет на сами поды
— Обновления правил применяются атомарно, без прерывания существующих соединений
Kube-proxy обеспечивает базовую сетевую связность в кластере, превращая динамические IP подов в стабильные точки доступа и равномерно распределяя нагрузку.
#заметкиИнженера
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍4🔥3
Это упрощает сетевую архитектуру кластера и повышает производительность за счёт прямого взаимодействия с ядром Linux через BGP и iptables/ipvs.
— CNI (Container Network Interface) — назначает подам IP-адреса из указанного пула, настраивает маршрутизацию между нодами.
— Замена kube-proxy — обеспечивает реализацию сервисов (ClusterIP, NodePort, LoadBalancer) через iptables или ipvs с возможностью session affinity.
— Сетевые политики — реализует NetworkPolicy (L3/L4) с помощью iptables, не требуя дополнительных контроллеров.
— BGP-маршрутизация — анонсирует IP-адреса подов и сервисов в сеть дата-центра, позволяя внешним маршрутизаторам напрямую направлять трафик на ноды (без наложения overlay).
— Единый агент — один процесс вместо трёх (CNI, kube-proxy, network policy controller), снижающий потребление ресурсов и сложность эксплуатации.
— Гибкая конфигурация — выбор режима работы: только CNI, только kube-proxy, только политики или всё вместе.
— Высокая производительность — работает напрямую с iptables/ipvs и BGP без промежуточных прослоек.
— Поддержка IPv6 и dual-stack.
Kube-router особенно полезен в сценариях, где нужна простота (замена нескольких компонентов одним), интеграция с существующей BGP-инфраструктурой или работа в bare-metal окружениях без overlay.
#полезное
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥2👏2❤1
Systemd-journald — компонент, который пришёл на смену традиционной syslog. Он собирает сообщения от ядра, служб, пользовательских процессов и хранит их в структурированном бинарном формате с индексацией, в система с systemd
💬 Основные команды journalctl
✅ Просмотр логов
✅ Фильтрация по времени
✅ Фильтрация по приоритету
✅ Логи загрузки
💬 Диагностика и очистка
journald даёт быстрый доступ к логам через единый интерфейс с удобной фильтрацией — без необходимости парсить текстовые файлы.
#линуксятина
journalctl # все логи
journalctl -u nginx # логи конкретной службы
journalctl -u nginx -u sshd # нескольких служб
journalctl --since "2026-03-26 08:00:00"
journalctl --since "1 hour ago"
journalctl --since yesterday --until now
journalctl -p err # ошибки и выше (0-3)
journalctl -p warning # предупреждения и выше
journalctl -b # текущая загрузка
journalctl -b -1 # предыдущая загрузка
journalctl --list-boots # список всех загрузок
journalctl --disk-usage # занимаемое место
sudo journalctl --rotate # принудительная ротация
sudo journalctl --vacuum-size=1G # оставить 1 ГБ
sudo journalctl --vacuum-time=2d # логи не старше 2 дней
journald даёт быстрый доступ к логам через единый интерфейс с удобной фильтрацией — без необходимости парсить текстовые файлы.
#линуксятина
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤4🔥2
Во многих компаниях настроены бэкапы, согласованны RTO и RPO и даже есть план аварийного восстановления.
Но в момент инциндента выясняется, что одного факта наличия копий недостаточно: сервисы не поднимаются в срок, каналы не выдерживают нагрузку, а защита рушится в тот момент, когда нужна больше всего.
#статья
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤3🔥3
Помогает разделять трафик, масштабировать приложения, улучшать производительность и доступность
— Round Robin
Запросы отправляются по очереди на разные серверы. Подходит, если узлы одинаковые по мощности, а нагрузка примерно равномерная.
— Weighted Round Robin
Похож на Round Robin, но с учётом веса сервера. Более мощные узлы получают больше запросов, слабые — меньше.
— Least Connections
Новый запрос идёт на сервер с наименьшим числом активных соединений. Полезно, когда нагрузка неравномерная и запросы живут разное время.
— Least Response Time
Трафик направляется туда, где сервер отвечает быстрее. Помогает распределять нагрузку с учётом текущего состояния системы, а не только количества соединений.
— IP Hash
Запросы от одного и того же клиента направляются на один и тот же сервер. Удобно, если важна привязка к сессии.
Важно смотреть, как система ведёт себя под нагрузкой.
Для этого обычно ориентируются на следующие метрики:
#полезное
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍3👏2
— Как настроить резервное копирование и работать без перебоев
— Иллюзия безопасности: почему бэкапы не спасают бизнес
— Сколько стоит час простоя: строим стратегию восстановления данных
— Как избежать потерь: стратегии Disaster Recovery для бизнеса
— Репликация данных в различных СУБД
— Бэкап (backup): как сделать резервное копирование надёжным
— Опыт организации резервного ЦОД для непрерывной работы критичных сервисов
#полезное
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👏4❤2
kube-proxy — компонент Kubernetes, который на каждой ноде реализует сервисы (Service), балансировку нагрузки и перенаправление трафика на поды через режимы iptables, ipvs или userspace.
Cilium — мощный CNI-плагин на базе eBPF и его Network Policies для L3/L4/L7-фильтрации.
Cilium способен полностью заменить kube-proxy, взяв на себя всю обработку Kubernetes-сервисов (ClusterIP, NodePort, LoadBalancer, externalIPs, hostPort) напрямую в ядре Linux.
Cilium использует eBPF-программы, которые загружаются в ядро и обрабатывают пакеты на ранних этапах сетевого стека.
— Вместо генерации тысяч правил в iptables (линейный просмотр) или даже IPVS Cilium хранит маппинги сервисов и эндпоинтов в BPF hash-таблицах;
— При создании/изменении Service Cilium-агент обновляет BPF-мапы. Трафик к ClusterIP мгновенно транслируется в IP пода с балансировкой.
— Direct Server Return (DSR) для снижения latency (ответы идут напрямую от пода к клиенту, минуя лишние хопы)
Это особенно выгодно в production-кластерах с высокой сетевой нагрузкой или большим количеством микросервисов.
Как включить kube-proxy replacement
При установке Cilium через Helm:
kubeProxyReplacement: true
k8sServiceHost: <IP API-сервера>
k8sServicePort: <порт API-сервера>
# Дополнительно для полного функционала:
nodePort:
enabled: true
externalIPs:
enabled: true
hostPort:
enabled: true
bpf:
masquerade: true
Замена kube-proxy на eBPF-реализацию в Cilium — это логичный шаг для тех, кто уже использует Cilium как CNI. Кластер становится быстрее, проще и современнее: меньше оверхеда, лучше наблюдаемость и единый механизм для сети и безопасности.
#заметкиИнженера
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍3🔥2
— Разбивает файлы на блоки фиксированного размера.
— Вычисляет контрольные суммы (rolling checksum + хэш).
— Сравнивает блоки источника и назначения.
— Передаёт только отличающиеся блоки.
— Работает локально, через SSH или собственный rsync-демон.
rsync [параметры] источник назначение
—
-a — архивный режим: сохраняет права, симлинки, таймстампы, рекурсивность. Почти всегда нужен.—
-v — подробный вывод (verbose): показывает, какие файлы копируются.—
-z — сжатие при передаче (полезно по медленным каналам).—
-h — человеко-читаемые размеры (K, M, G).—
-P — комбинация --partial (докачка) и --progress (прогресс-бар).—
--delete — удаляет файлы в назначении, которых нет в источнике. Делает синхронизацию зеркалом.—
-n / --dry-run — тестовый прогон: показывает, что будет сделано, без реальных изменений.—
--exclude — исключает файлы/папки по шаблону (можно несколько).—
-e — указывает удалённую оболочку, например -e ssh.Локальное копирование папки
rsync -avh /home/user/data/ /backup/data/
Отправка на удалённый сервер (push)
rsync -avz -e ssh /local/folder/ user@server:/remote/folder/
Загрузка с сервера (pull)
rsync -avz -e ssh user@server:/remote/folder/ /local/folder/
Тестовый прогон зеркалирование с удалением лишнего
rsync -avn --delete /source/ /dest/
Rsync — незаменимый инструмент в арсенале любого администратора. Быстрый, надёжный, работает везде, где есть Linux (и не только).
#линуксятина
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤4🔥2
Чаще всего даже действительно нужные ИТ-решения сложно провести через бюджет, если они объясняются только техническими терминами.
Для бизнеса аргументом становятся не SLA, RTO или схемы резервирования сами по себе, а понятные цифры в деньгах:
— сколько компания теряет при простое,
— во сколько обойдётся снижение этого риска
— и за счёт каких решений эти вложения окупаются.
#статья
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥3