Telegram Web Link
📌 Как быстро посмотреть историю изменений файла в Linux?

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

🔍 1. stat — метаданные файла
Хотите узнать, когда последний раз изменялся файл? Используйте команду:


stat /etc/nginx/nginx.conf

Вы увидите три временных метки:
- Access (чтение)
- Modify (изменение содержимого)
- Change (изменение метаданных, например, прав)

📝 2. ls -lt — сортировка по времени
Для списка файлов в каталоге по дате изменения:


ls -lt /etc/nginx/


🕵️ 3. diff — сравнение версий
Если у вас есть резервная копия файла, можно сравнить:


diff /etc/nginx/nginx.conf /backup/nginx.conf


📜 4. git — контроль версий
Лучший способ отслеживать изменения в важных файлах — использовать git:


cd /etc/nginx
git init
git add nginx.conf
git commit -m "Initial version"

После изменений проверяем разницу:


git diff nginx.conf


👀 5. auditd — мониторинг изменений
Если нужно следить за изменением файла в реальном времени, добавляем его в аудит:


auditctl -w /etc/nginx/nginx.conf -p wa -k nginx_conf_change

А потом смотрим логи:


ausearch -k nginx_conf_change --start today


📢 Какой способ используете вы? Делитесь в комментариях! 🚀

#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin

👉 @linux_odmin
👍6
🔥 Автоматический перезапуск упавшего сервиса в Linux

Привет, коллеги! Сегодня разберём, как автоматически перезапускать сервис, если он вдруг упал. Это полезно для критичных приложений, которые должны работать 24/7.

📌 Метод 1: systemd (современный способ)
Если ваш сервис управляется systemd, настройте автоматический рестарт:

1️⃣ Открываем юнит-файл сервиса:

sudo nano /etc/systemd/system/имя_сервиса.service


2️⃣ Добавляем или редактируем секцию [Service]:

[Service]
Restart=always
RestartSec=5

🔹 Restart=always – сервис перезапускается при любой ошибке
🔹 RestartSec=5 – задержка 5 секунд перед рестартом

3️⃣ Применяем изменения:

sudo systemctl daemon-reexec
sudo systemctl restart имя_сервиса


📌 Метод 2: Monit (для расширенного контроля)
Если нужен мониторинг с уведомлениями, используем Monit:

1️⃣ Устанавливаем:

sudo apt install monit # Debian/Ubuntu
sudo yum install monit # CentOS


2️⃣ Добавляем правило для сервиса:

sudo nano /etc/monitrc

Пример конфига:

check process nginx with pidfile /run/nginx.pid
start program = "/bin/systemctl start nginx"
stop program = "/bin/systemctl stop nginx"
if 5 restarts within 5 cycles then unmonitor

3️⃣ Перезапускаем Monit:

sudo systemctl restart monit


📌 Метод 3: crontab (самый простой способ)
Если сервис падает редко, можно просто проверять его раз в минуту:

* * * * * pgrep -x nginx > /dev/null || systemctl restart nginx


Вывод: systemd – лучший вариант, Monit подходит для расширенного мониторинга, а cron – для простых случаев.


#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin

👉 @linux_odmin
👍8
🛠 Как проверить производительность диска в Linux?

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

📌 1. Используем hdparm

Если у вас обычный HDD или SSD без файловой системы (например, только подключенный диск), попробуйте:

sudo hdparm -Tt /dev/sdX

Где sdX — ваш диск. Этот тест показывает две вещи:
Кэшированное чтение (-T) — скорость, с которой данные читаются из кэша.
Фактическое чтение (-t) — скорость последовательного чтения с диска.

Пример вывода:

Timing cached reads: 12000 MB in 2.00 seconds = 6000.00 MB/sec
Timing buffered disk reads: 500 MB in 3.00 seconds = 166.67 MB/sec


📌 2. Используем dd

Простой способ протестировать скорость записи и чтения:

Запись файла 1 ГБ:

dd if=/dev/zero of=testfile bs=1M count=1024 oflag=direct

Чтение файла 1 ГБ:

dd if=testfile of=/dev/null bs=1M count=1024 iflag=direct

Опция oflag=direct (для записи) и iflag=direct (для чтения) позволяет избежать кэширования.

📌 3. Используем fio (более продвинутый тест)

Если вам нужны подробные метрики (IOPS, латентность и т. д.), лучше использовать fio:

fio --name=test --size=1G --filename=testfile --rw=read --bs=4k --iodepth=32 --numjobs=1 --time_based --runtime=10 --group_reporting

Этот тест эмулирует случайное чтение файла testfile размером 1 ГБ с блоками по 4K.

🧐 Какой способ вы используете чаще всего? Может, есть свой любимый инструмент? Пишите в комментариях!

#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin

👉 @linux_odmin
👍5
🛠 Оптимизация автозапуска сервисов в Linux: systemd vs rc.local

Привет, коллеги! Сегодня расскажу, как грамотно настраивать автозапуск сервисов в Linux. Многие старые админы привыкли добавлять команды в /etc/rc.local, но в современных дистрибутивах (особенно с systemd) этот метод уже неактуален.

Почему не стоит использовать rc.local?
1️⃣ Отсутствие контроля – трудно мониторить выполнение команд и возможные ошибки.
2️⃣ Не универсально – в некоторых дистрибутивах этот файл просто отсутствует.
3️⃣ Не всегда срабатывает – если что-то пойдет не так, вы даже не узнаете, почему.

Как правильно настроить автозапуск через systemd?
Допустим, у вас есть скрипт /opt/myscript.sh, который нужно запускать при старте системы.

1️⃣ Создаем юнит-файл:

sudo nano /etc/systemd/system/myscript.service

2️⃣ Добавляем содержимое:

[Unit]
Description=Мой скрипт
After=network.target

[Service]
ExecStart=/bin/bash /opt/myscript.sh
Restart=always
User=root

[Install]
WantedBy=multi-user.target

3️⃣ Активируем и запускаем:

sudo systemctl daemon-reload
sudo systemctl enable myscript
sudo systemctl start myscript

Теперь ваш скрипт будет запускаться при загрузке системы и автоматически перезапускаться в случае сбоя!

#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin

👉 @linux_odmin
👍6
🔥 Как проверить, какие процессы используют диск в Linux?

Всем доброо вечера! Сегодня разберёмся с ситуацией, когда диск в системе нагружен, а причина не ясна. Как узнать, какие процессы активно читают/пишут данные?

📌 1. Используем iotop
Это удобная утилита, показывающая процессы, активно работающие с диском. Установить её можно так:

# Для Debian/Ubuntu:
sudo apt install iotop

# Для RHEL/CentOS/AlmaLinux/Rocky:
sudo dnf install iotop

Запускаем команду:

sudo iotop

Можно добавить флаг -o, чтобы показать только активные процессы:

sudo iotop -o


📌 2. Анализируем с pidstat
Утилита pidstat из пакета sysstat поможет увидеть нагрузку на диск со стороны процессов:

sudo pidstat -d 1

Здесь -d — мониторинг I/O, а 1 — обновление раз в секунду.

📌 3. Используем lsof
Чтобы узнать, какие файлы открыты процессами на диске:

sudo lsof +D /путь/к/директории

Например, чтобы посмотреть файлы в /var/log:

sudo lsof +D /var/log


📌 4. fatrace – в реальном времени
Хотите увидеть, какие файлы изменяются? Запустите:

sudo fatrace


#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin

👉 @linux_odmin
👍8
📌 Полезные флаги команды ls, о которых стоит знать

Привет, коллеги! Сегодня давайте поговорим о команде ls. Казалось бы, что тут обсуждать? Все знают, что ls показывает файлы в каталоге. Но есть несколько полезных флагов, которые могут упростить вам жизнь.

🔹 ls -lh – выводит список файлов в удобном для чтения формате (размеры в KB, MB и GB).
🔹 ls -la – показывает все файлы, включая скрытые (. и ..).
🔹 ls -lt – сортирует файлы по дате изменения (сначала самые свежие).
🔹 ls -ltr – тоже самое, но в обратном порядке (старые файлы в начале).
🔹 ls -S – сортировка по размеру (самые большие файлы сверху).
🔹 ls -d */ – покажет только каталоги в текущем пути.
🔹 ls -1 – выводит файлы в одну колонку, удобно для скриптов.

💡 Бонус: если хотите раскрасить вывод ls, добавьте в .bashrc или .zshrc:

alias ls='ls --color=auto'

Теперь файлы и папки будут выделяться цветами!

#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin

👉 @linux_odmin
👍9
📌IPv4 Адресация и Субнеттинг Упрощённо!

1. IPv4-адрес – это 32-битное число, разделённое на 4 октета. Пример: 192.168.1.1.

2. Классы IP-адресов:
- Класс A: 1.0.0.0 - 126.255.255.255 (маска подсети по умолчанию: 255.0.0.0).
- Класс B: 128.0.0.0 - 191.255.255.255 (маска подсети по умолчанию: 255.255.0.0).
- Класс C: 192.0.0.0 - 223.255.255.255 (маска подсети по умолчанию: 255.255.255.0).

3. Маска подсети помогает делить IP-адрес на сеть и хосты:
- Пример: Маска 255.255.255.0 означает, что первые 3 октета — это сеть, а последний — хосты.

4. CIDR (Classless Inter-Domain Routing) используется для гибкого управления подсетями:
- Пример: /24 = 255.255.255.0 (256 адресов, из которых 254 доступны для хостов).

5. Субнеттинг позволяет делить сеть на меньшие подсети:
- Пример: 192.168.1.0/24 → можно разделить на две подсети /25:
- 192.168.1.0 - 192.168.1.127
- 192.168.1.128 - 192.168.1.255.

6. Формулы для расчётов:
- Количество адресов = 2^(32 - префикс CIDR).
- Количество хостов = (2^(32 - префикс CIDR)) - 2 (один для сети, другой для широковещательного).

7. Широковещательный адрес (Broadcast) – последний адрес в подсети.
- Пример: для сети 192.168.1.0/24 широковещательный адрес – 192.168.1.255.

8. Адрес сети – первый адрес в подсети.
- Пример: для сети 192.168.1.0/24 адрес сети – 192.168.1.0.

9. Приватные IP-адреса:
- Класс A: 10.0.0.0 - 10.255.255.255.
- Класс B: 172.16.0.0 - 172.31.255.255.
- Класс C: 192.168.0.0 - 192.168.255.255.

10. Зачем субнеттинг?
- Эффективное использование IP-адресов.
- Сегментация сети для повышения безопасности.
- Управление трафиком и уменьшение широковещательных доменов.

Практический пример:
Сеть: 192.168.10.0/26
Маска подсети: 255.255.255.192
- Количество адресов: 64 (2^6).
- Хосты: 62 (64-2).
- Подсети:
1. 192.168.10.0 - 192.168.10.63
2. 192.168.10.64 - 192.168.10.127

#Сети@linux_odmin #Шпаргалка@linux_odmin

👉 @linux_odmin
🔥4👍2
📌 Как увеличить размер каталога /tmp/ в Linux

Привет, коллеги! Сегодня поговорим об увеличении каталога tmp.


Каталог /tmp/ используется для временных файлов и обычно располагается в RAM (tmpfs) или на диске. Если /tmp/ переполняется, это может вызвать сбои в работе системы. Давайте разберем, как его увеличить.

🔍 Проверка текущего размера /tmp/
Чтобы узнать, как /tmp/ смонтирован и его размер, используем:


df -h /tmp

или

mount | grep /tmp

Если /tmp/ использует tmpfs, то он находится в оперативной памяти.

🔹 Вариант 1: Увеличение tmpfs (в RAM)
Если /tmp/ смонтирован как tmpfs, можно увеличить его размер командой:


mount -o remount,size=4G /tmp

Где 4G — новый размер. Проверяем:

df -h /tmp

⚠️ Это временное изменение! После перезагрузки сбросится.

Чтобы сделать его постоянным, добавляем строку в /etc/fstab:

tmpfs /tmp tmpfs defaults,size=4G 0 0

Затем применяем изменения:

mount -o remount /tmp


🔹 Вариант 2: Использование раздела на диске
Если нужно хранить данные на диске, можно создать отдельный раздел.

1️⃣ Выбираем диск и создаем раздел (например, /dev/sdb1):

mkfs.ext4 /dev/sdb1

2️⃣ Монтируем его:

mount /dev/sdb1 /tmp

3️⃣ Делаем постоянным, добавив в /etc/fstab:

/dev/sdb1 /tmp ext4 defaults 0 0


🔹 Вариант 3: Использование файла-контейнера
Если новый раздел не вариант, можно создать файл и смонтировать его как /tmp/:

1️⃣ Создаем файл (например, 4ГБ):

dd if=/dev/zero of=/swapfile bs=1M count=4096

2️⃣ Форматируем его:

mkfs.ext4 /swapfile

3️⃣ Монтируем его в /tmp/:

mount /swapfile /tmp

4️⃣ Добавляем в /etc/fstab:

/swapfile /tmp ext4 defaults 0 0


🔥 Итог
Быстрое изменение (RAM)mount -o remount,size=4G /tmp
Постоянное изменение (RAM) – правка /etc/fstab
Использование диска – монтирование отдельного раздела
Файл-контейнер – если раздел недоступен

#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin

👉 @linux_odmin
👍5
🛡 Как быстро заблокировать IP через iptables и не забыть про это

Иногда нужно срочно заблокировать IP — скажем, увидели подозрительную активность в логах sshd. Простой способ:


iptables -A INPUT -s 203.0.113.5 -j DROP


Но есть нюанс: при следующей перезагрузке этот IP снова станет "добрым". Чтобы сохранить правило:

1. Для систем на Debian/Ubuntu
Установите iptables-persistent:

apt install iptables-persistent

И сохраните правила:

netfilter-persistent save


2. Для CentOS/RHEL
Используйте iptables-save и iptables-restore:

iptables-save > /etc/sysconfig/iptables


💡 Совет: если часто блокируете IP вручную — сделайте себе алиас в .bashrc:

alias blockip='iptables -A INPUT -s'

Теперь можно будет писать так:

blockip 203.0.113.5 -j DROP


📌 А вы как чаще блокируете IP — через iptables, firewalld, fail2ban или что-то ещё? Напишите в комментах👇

#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin

👉 @linux_odmin
👍8
🧰 Проверка сетевых подключений с помощью ss
Заменим устаревший netstat!

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

🔍 Примеры, которые стоит запомнить:


ss -tuln

Показывает все слушающие TCP/UDP порты без разрешения имён. Часто использую при проверке, какие службы открыты наружу.


ss -tp

Показывает активные TCP-соединения с указанием PID/имени процесса. Очень выручает при отладке приложений, которые что-то "держат".


ss -s

Краткая сводка по соединениям — как netstat -s, но быстрее. Отлично, чтобы быстро глянуть на состояние TCP-стека.

💡 Совет: если у вас в системе много соединений, используйте ss с фильтрами, например:

ss -t state established '( dport = :ssh or sport = :ssh )'

Покажет только установленные SSH-соединения — очень удобно, если сервер используется как bastion.



👨‍💻 А вы уже полностью перешли на ss или ещё пользуетесь netstat по привычке? Делитесь в комментариях своим опытом!

#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin

👉 @linux_odmin
👍5
🛠 Как узнать, кто перезагрузил сервер?

Сегодня покажу вам простой способ выяснить, кто именно инициировал перезагрузку сервера. Иногда бывает так: сервер внезапно ушёл в ребут, и ты не уверен — это был плановый рестарт, баг или кто-то нажал reboot не подумав. Давайте разбираться!

🔍 Шаг 1: Проверяем журнал перезагрузки

last -x | grep reboot

Эта команда покажет дату и время перезагрузки. Но кто?

🔍 Шаг 2: Ищем инициатора в журнале auditd (если он включён)

ausearch -k reboot

или

ausearch -x /sbin/reboot

Это поможет, если у вас включён auditd. Если нет — смотри следующий шаг.

🔍 Шаг 3: Проверка journalctl

journalctl -b -1 | grep -i 'reboot\|shutdown\|poweroff'

Здесь могут быть строки вроде:

systemd-logind[...]: Power key pressed.
systemd-logind[...]: Rebooting system.

или

systemd[1]: Received request to reboot from UID=1000

UID поможет понять, какой пользователь инициировал ребут.

🔍 Шаг 4: Кто был в системе до ребута?

last -F | head

Посмотри, кто был залогинен незадолго до перезагрузки. Возможно, это и есть "виновник".



🧠 Мой совет: Настрой логирование и аудит таких событий заранее — особенно на продакшене. А ещё можешь повесить алерт на неожиданные ребуты через Prometheus + Alertmanager.

Полезно? Делитесь в комментах своими кейсами, когда сервер ушёл в ребут «сам по себе» 😅

#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin

👉 @linux_odmin
👍6
🧠 Что делает команда exec в bash — и зачем она нужна?

Многие слышали о exec, но используют редко. А зря! Это мощный инструмент, особенно в скриптах и системном администрировании.

🔹 Что делает exec?
Она заменяет текущий процесс новым, без создания дочернего. То есть, вместо запуска новой программы — текущий процесс «перевоплощается» в неё.

Простой пример:

exec top

В этом случае оболочка bash будет заменена на top, и когда вы закроете top, сессия завершится.



🛠 Где это может пригодиться:

1. В systemd-юнитах — при запуске сервиса через скрипт:

#!/bin/bash
exec /usr/bin/myapp

Это позволит системе правильно отслеживать основной процесс.

2. В контейнерах (например, Docker) — если вы запускаете скрипт в качестве ENTRYPOINT, используйте exec, чтобы сигналы (например, SIGTERM) корректно передавались вашему приложению.

3. Для перенаправления ввода/вывода:

exec >> /var/log/myscript.log 2>&1

Всё, что будет выведено в stdout и stderr после этой строки — пойдёт в лог.


exec не делает магии, но помогает делать вещи правильно. Особенно там, где важна замена PID и корректная работа сигналов.

А вы используете exec в своих скриптах? Поделитесь опытом 👇

#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin

👉 @linux_odmin
👍5
📌 Команда : xargs — что это, как использовать с find, реальные примеры


Если ты всё ещё пишешь

bash
find . -name "*.log" -exec rm {} \;

— пора познакомиться с xargs.


🔹 Что делает xargs
Простыми словами: берёт вывод одной команды и передаёт его как аргументы другой.
Часто используется в связке с find, grep, ls, cat и т.д.


🔧 Пример 1: удаление файлов

bash
find . -name "*.log" | xargs rm

Быстрее и читаемее, чем -exec.
А если в путях есть пробелы — добавь -print0 и -0:

bash
find . -name "*.log" -print0 | xargs -0 rm



🔧 Пример 2: архивация большого списка файлов

bash
cat filelist.txt | xargs tar -czf archive.tar.gz

Но лучше писать так:

bash
xargs -a filelist.txt tar -czf archive.tar.gz



⚠️ Полезные флаги
- -n N — запускать по N аргументов
- -P N — параллельное выполнение (например, -P 4 для 4 потоков)
- -I {} — подстановка аргументов вручную:

bash
cat urls.txt | xargs -I {} curl -O {}



🧠 Где применять
- Удаление, копирование, перемещение файлов
- Обработка списков (имён, URL, путей)
- Массовый запуск скриптов
- Комбинация с parallel — огонь 🔥


✍️ Итог
xargs — это must-have в наборе админа.
Один раз освоил — и половина баш-магии стала проще.

#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin

👉 @linux_odmin
👍5
🎯 Как быстро очистить лог-файлы, не перезапуская сервис

Привет, коллеги! Сегодня хочу показать простой, но очень полезный приём для работы с логами. Иногда лог-файлы разрастаются до гигантских размеров, и хочется их обнулить — но без остановки сервиса, который пишет в этот файл.

🔧 Вот как это сделать:


: > /var/log/your-log.log


Или, альтернативно:


truncate -s 0 /var/log/your-log.log


📌 Что здесь происходит:

- : > — это no-op команда (:) с перенаправлением вывода в файл, по сути затирает его.
- truncate -s 0 — устанавливает размер файла в 0 байт.

💡 Главное: не удаляйте лог-файл напрямую!
Если вы сделаете rm /var/log/your-log.log, то большинство демонов продолжат писать в уже открытый файловый дескриптор — и вы потеряете лог, не освободив место.

Если лог-файл всё-таки нужно удалить — сделайте это аккуратно:


> /var/log/your-log.log && systemctl reload your-service


Или используйте logrotate — но об этом в одном из следующих постов 😉

#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin

👉 @linux_odmin
👍5
⚙️ Автоматизация рутинных задач с systemd timers

Привет, друзья! Сегодня расскажу, как я заменил cron на более гибкое решение — systemd timers.

Почему это круто?
👉 Логирование, зависимость от сервисов, простая отладка и интеграция в systemctl.

🔧 Пример: бэкап каталога каждый день

1. Создаем сервис-файл:

/etc/systemd/system/backup-home.service

[Unit]
Description=Backup /home to /backup

[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup-home.sh


2. Создаем таймер:

/etc/systemd/system/backup-home.timer

[Unit]
Description=Daily backup of /home

[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true

[Install]
WantedBy=timers.target


3. Активируем:


sudo systemctl daemon-reexec
sudo systemctl enable --now backup-home.timer


📌 Скрипт backup-home.sh можно писать как угодно: rsync, tar, borg, хоть scp.

Плюс: systemd сам выполнит задание при следующей загрузке, если сервер был выключен в 3 ночи (благодаря Persistent=true).

🔥 Используете systemd timers или предпочитаете cron? Расскажите, что автоматизируете!

#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin

👉 @linux_odmin
👍4🔥2
🔐 Сегодня покажу вам, как быстро проверить, какие пользователи могут входить по SSH

Когда нужно быстро провести аудит, кто действительно может зайти на сервер по SSH, поможет вот такой однострочник:


getent passwd | awk -F: '$3 >= 1000 && $7 ~ /bash/ {print $1}' | while read user; do
if [ -f /home/$user/.ssh/authorized_keys ]; then
echo "$user — доступ по ключу"
elif grep -q "^$user:" /etc/shadow && [ "$(awk -F: -v u="$user" '$1 == u {print $2}' /etc/shadow)" != "*" ]; then
echo "$user — может входить с паролем"
fi
done


💡 Что делает скрипт?
- Ищет всех "нормальных" пользователей (UID ≥ 1000 и оболочка bash)
- Проверяет, есть ли у них authorized_keys — значит, ключи
- Если нет — сверяет в /etc/shadow, заблокирован ли пароль

📌 На заметку:
- Подходит для систем с классической схемой пользователей (не LDAP и не sssd)
- UID порог можно подправить под свою среду
- Можно дополнить логированием, например в syslog или файл


А ты проверяешь регулярно, кто может входить на твои сервера? Пиши в комментариях — автоматизировал ли ты аудит SSH-доступа у себя? 👇

#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin

👉 @linux_odmin
👍31🫡1
💡 Как я ускоряю поиск по логам в Linux

Сегодня покажу вам приём, который не раз спасал мне нервы при анализе логов.

Представим, что нужно найти ошибки в большом лог-файле, например /var/log/nginx/access.log. Обычно все начинают с:


cat access.log | grep "500"


Но это медленно. Лучше так:


grep "500" access.log


Ещё лучше — использовать less и внутри него grep-подобный поиск:


less +F access.log


А затем нажать /500 — и перейти по найденным совпадениям. Работает быстро, особенно на больших логах.

А если хочется реального профита, то вот мой любимый трюк:


grep -E "500|502|503" access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head


Что делает эта команда:
- Ищет ошибки 500/502/503
- Извлекает IP-адреса (предположим, это первое поле)
- Считает, сколько раз каждый IP дал ошибку
- Показывает топ атакующих/плохих клиентов

Эта команда — мини-аналитика в одну строку. Часто помогает сразу понять, где проблема.


#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin

👉 @linux_odmin
👍81👎1
👋 Привет, коллеги!

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


🔧 Что обязательно автоматизировать:

1. Резервное копирование (бэкапы)
> Без бэкапов нет продакшена. Это аксиома.

- Автоматизируйте регулярные бэкапы баз данных, конфигов, важных каталогов.
- Используйте rsnapshot, borg, restic, duplicity.
- Настройте оповещения об ошибках и ротацию архивов.


2. Установка и обновление пакетов
> Старое ПО = потенциальная уязвимость.

- unattended-upgrades (Debian/Ubuntu), dnf-automatic (RHEL/AlmaLinux).
- Обновляйте хотя бы критические патчи безопасности.


3. Мониторинг и алерты
> Узнать о проблеме до пользователей — 🔥

- Prometheus + Alertmanager, Zabbix, Netdata, Uptime Kuma.
- Telegram, Email, Slack — что угодно, лишь бы вы не прозевали тревогу.


4. Ротация и очистка логов
> Логи не должны съедать диск.

- logrotate с автоочисткой по размеру или сроку.
- Логи от багов нужны, но не навсегда 😉


5. Автоматический рестарт сервисов
> Упал — поднялся.

- systemd с Restart=on-failure, watchdog-скрипты.
- Плюс мониторинг: жив ли Nginx, работает ли БД.


6. Создание пользователей и SSH-ключей
> Добавлять вручную — долго и скучно.

- Скрипты, шаблоны, Ansible, cloud-init — на выбор.


7. Конфигурации и деплой
> Один конфиг — много серверов.

- Используйте Ansible, SaltStack, Chef, bash-скрипты с шаблонами.

#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin

👉 @linux_odmin
🔥4👍3
🔧 Сегодня покажу вам простой способ ограничить ресурсы для процессов с помощью cgroups v2

Иногда на сервере какой-нибудь процесс начинает «жрать» всё подряд — CPU, память, I/O. Чтобы таких ситуаций избежать, можно использовать cgroups v2.

📦 Пример: ограничим использование CPU и памяти для скрипта


# Создаём директорию cgroup
CGROUP=/sys/fs/cgroup/mylimit
mkdir $CGROUP

# Ограничим память до 200M
echo $((200*1024*1024)) > $CGROUP/memory.max

# Ограничим CPU до 20% от одного ядра
echo 20000 > $CGROUP/cpu.max # 20000 микросекунд из 100000

# Запускаем процесс с этими ограничениями
echo $$ > $CGROUP/cgroup.procs
./your_script.sh


🔍 Проверить потребление можно так:

cat $CGROUP/memory.current
cat $CGROUP/cpu.stat


💡 Советы:
- Работает только если у вас включён cgroup v2 (можно проверить mount | grep cgroup)
- Удобно использовать вместе с systemd, если вы хотите применить это к сервисам (systemctl set-property)

#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin

👉 @linux_odmin
👍2🔥2
🛡 Сегодня расскажу, как быстро проверить безопасность конфигурации SSH-сервера

Открытый SSH — это ворота на сервер. И если конфигурация слабая, то защита — как дверь из картона. Проверим, насколько хорошо у вас настроен sshd.

Вот простой чеклист, что стоит сделать:


# 1. Отключить root-доступ
PermitRootLogin no

# 2. Включить только ключевую авторизацию
PasswordAuthentication no

# 3. Установить ограничение по IP (если возможно)
# Можно использовать firewall или AllowUsers с указанием IP

# 4. Ограничить количество подключений:
MaxAuthTries 3
LoginGraceTime 30
MaxSessions 2

# 5. Изменить порт (не security, но уменьшает шум)
Port 2222


🔍 Проверка: используем ssh-audit


pip install ssh-audit
ssh-audit your.server.com


Он покажет, какие алгоритмы шифрования используются, какие из них устарели, и что можно улучшить.

🛠 А ещё можно включить Fail2Ban или iptables для защиты от перебора паролей, если всё-таки оставляете PasswordAuthentication yes.

#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin

👉 @linux_odmin
👍5
2025/10/21 19:54:03
Back to Top
HTML Embed Code: