ar
Feedback
Linux: Системный администратор

Linux: Системный администратор

الذهاب إلى القناة على Telegram

Здесь вы найдете полезные советы, практические материалы и интересные инсайты по администрированию Linux. Погружаемся в мир команд, скриптов и серверов вместе! 🚀 Авторский канал действующего админа 👨🏼‍💻

إظهار المزيد
1 929
المشتركون
+124 ساعات
-27 أيام
-1030 أيام
أرشيف المشاركات
🎯 Как быстро очистить лог-файлы, не перезапуская сервис Привет, коллеги! Сегодня хочу показать простой, но очень полезный приём для работы с логами. Иногда лог-файлы разрастаются до гигантских размеров, и хочется их обнулить — но без остановки сервиса, который пишет в этот файл. 🔧 Вот как это сделать:

: > /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

📌 Команда : 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

🧠 Что делает команда 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

🛠 Как узнать, кто перезагрузил сервер? Сегодня покажу вам простой способ выяснить, кто именно инициировал перезагрузку сервера. Иногда бывает так: сервер внезапно ушёл в ребут, и ты не уверен — это был плановый рестарт, баг или кто-то нажал 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

🧰 Проверка сетевых подключений с помощью 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

🛡 Как быстро заблокировать 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

📌 Как увеличить размер каталога /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

🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https://max.ru/bash_srv Bash Советы https://max.ru/sysadminof Книги для админов, полезные материалы https://max.ru/i_odmin_book Библиотека Системного Администратора https://max.ru/i_devops DevOps: Пишем о Docker, Kubernetes и др. https://max.ru/tipsysdmin Типичный Сисадмин 1C разработка 📌 https://max.ru/odin1c_rus Cтатьи, курсы, советы, шаблоны кода 1С Программирование C++📌 https://max.ru/cpp_lib Библиотека C/C++ разработчика Программирование Go📌 https://max.ru/golang_lib Библиотека Go (Golang) разработчика Программирование React📌 https://max.ru/react_lib React Программирование Python 📌 https://max.ru/python_of Python академия. https://max.ru/BookPython Библиотека Python разработчика Java разработка 📌 https://max.ru/bookjava Библиотека Java разработчика GitHub Сообщество 📌 https://max.ru/githublib Интересное из GitHub Базы данных (Data Base) 📌 https://max.ru/database_info Все про базы данных Фронтенд разработка 📌 https://max.ru/frontend_1 Подборки для frontend разработчиков Библиотеки 📌 https://max.ru/programmist_of Книги по программированию https://max.ru/proglb Библиотека программиста https://max.ru/bfbook Книги для программистов Программирование 📌 https://max.ru/bookflow Лекции, видеоуроки, доклады с IT конференций https://max.ru/itmozg Программисты, дизайнеры, новости из мира IT https://max.ru/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻 Шутки программистов 📌 https://max.ru/itumor Шутки программистов Защита, взлом, безопасность 📌 https://max.ru/thehaking Канал о кибербезопасности https://max.ru/xakkep_1 Хакер Free Книги, статьи для дизайнеров 📌 https://max.ru/odesigners Статьи, книги для дизайнеров Математика 📌 https://max.ru/Pomatematike Канал по математике https://max.ru/phismat_1 Обучающие видео, книги по Физике и Математике Вакансии 📌 https://max.ru/progjob Вакансии в IT Мир технологий 📌 https://max.ru/mir_teh Канал для любознательных Бонус 📌 https://max.ru/piterspb_78 Свежие новости Санкт-Петербурга https://max.ru/mockva_life Свежие новости Москвы

📌IPv4 Адресация и Субнеттинг Упрощённо! 1. IPv4-адрес – это 32-битное число, разделённое на 4 октета. Пример: 192.168.1.1. 2
📌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

📌 Полезные флаги команды 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

🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https://max.ru/bash_srv Bash Советы https://max.ru/sysadminof Книги для админов, полезные материалы https://max.ru/i_odmin_book Библиотека Системного Администратора https://max.ru/i_devops DevOps: Пишем о Docker, Kubernetes и др. https://max.ru/tipsysdmin Типичный Сисадмин 1C разработка 📌 https://max.ru/odin1c_rus Cтатьи, курсы, советы, шаблоны кода 1С Программирование C++📌 https://max.ru/cpp_lib Библиотека C/C++ разработчика Программирование Go📌 https://max.ru/golang_lib Библиотека Go (Golang) разработчика Программирование React📌 https://max.ru/react_lib React Программирование Python 📌 https://max.ru/python_of Python академия. https://max.ru/BookPython Библиотека Python разработчика Java разработка 📌 https://max.ru/bookjava Библиотека Java разработчика GitHub Сообщество 📌 https://max.ru/githublib Интересное из GitHub Базы данных (Data Base) 📌 https://max.ru/database_info Все про базы данных Фронтенд разработка 📌 https://max.ru/frontend_1 Подборки для frontend разработчиков Библиотеки 📌 https://max.ru/programmist_of Книги по программированию https://max.ru/proglb Библиотека программиста https://max.ru/bfbook Книги для программистов Программирование 📌 https://max.ru/bookflow Лекции, видеоуроки, доклады с IT конференций https://max.ru/itmozg Программисты, дизайнеры, новости из мира IT https://max.ru/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻 Шутки программистов 📌 https://max.ru/itumor Шутки программистов Защита, взлом, безопасность 📌 https://max.ru/thehaking Канал о кибербезопасности https://max.ru/xakkep_1 Хакер Free Книги, статьи для дизайнеров 📌 https://max.ru/odesigners Статьи, книги для дизайнеров Математика 📌 https://max.ru/Pomatematike Канал по математике https://max.ru/phismat_1 Обучающие видео, книги по Физике и Математике Вакансии 📌 https://max.ru/progjob Вакансии в IT Мир технологий 📌 https://max.ru/mir_teh Канал для любознательных Бонус 📌 https://max.ru/piterspb_78 Свежие новости Санкт-Петербурга https://max.ru/mockva_life Свежие новости Москвы

🔥 Как проверить, какие процессы используют диск в 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

🛠 Оптимизация автозапуска сервисов в 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

🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https://max.ru/bash_srv Bash Советы https://max.ru/sysadminof Книги для админов, полезные материалы https://max.ru/i_odmin_book Библиотека Системного Администратора https://max.ru/i_devops DevOps: Пишем о Docker, Kubernetes и др. 1C разработка 📌 https://max.ru/odin1c_rus Cтатьи, курсы, советы, шаблоны кода 1С Программирование C++📌 https://max.ru/cpp_lib Библиотека C/C++ разработчика Программирование Go📌 https://max.ru/golang_lib Библиотека Go (Golang) разработчика Программирование React📌 https://max.ru/react_lib React Программирование Python 📌 https://max.ru/python_of Python академия. https://max.ru/BookPython Библиотека Python разработчика Java разработка 📌 https://max.ru/bookjava Библиотека Java разработчика GitHub Сообщество 📌 https://max.ru/githublib Интересное из GitHub Базы данных (Data Base) 📌 https://max.ru/database_info Все про базы данных Фронтенд разработка 📌 https://max.ru/frontend_1 Подборки для frontend разработчиков Библиотеки 📌 https://max.ru/programmist_of Книги по программированию https://max.ru/proglb Библиотека программиста https://max.ru/bfbook Книги для программистов Программирование 📌 https://max.ru/bookflow Лекции, видеоуроки, доклады с IT конференций https://max.ru/itmozg Программисты, дизайнеры, новости из мира IT https://max.ru/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻 Шутки программистов 📌 https://max.ru/itumor Шутки программистов Защита, взлом, безопасность 📌 https://max.ru/thehaking Канал о кибербезопасности https://max.ru/xakkep_1 Хакер Free Книги, статьи для дизайнеров 📌 https://max.ru/odesigners Статьи, книги для дизайнеров Математика 📌 https://max.ru/Pomatematike Канал по математике https://max.ru/phismat_1 Обучающие видео, книги по Физике и Математике Вакансии 📌 https://max.ru/progjob Вакансии в IT Мир технологий 📌 https://max.ru/mir_teh Канал для любознательных Бонус 📌 https://max.ru/piterspb_78 Свежие новости Санкт-Петербурга https://max.ru/mockva_life Свежие новости Москвы

🛠 Как проверить производительность диска в 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

🔥 Автоматический перезапуск упавшего сервиса в 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

📌 Как быстро посмотреть историю изменений файла в 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

🖥️ Как проверить, что cron работает корректно? Привет, админы! Сегодня разберём важную тему — как убедиться, что cron действительно выполняет ваши задания. Бывает, что скрипт в crontab прописан, но не работает, и причина может быть неочевидной. 🔎 Проверяем cron пошагово: 1️⃣ Проверяем, работает ли сам демон cron:

systemctl status cron  # Для систем с systemd (Ubuntu, Debian)
service cron status    # Для старых систем
Если он не запущен, запускаем:

systemctl start cron
2️⃣ Смотрим логи cron: На большинстве дистрибутивов логи находятся в /var/log/syslog или /var/log/cron.log:

grep CRON /var/log/syslog
Если сообщений нет, проверьте, включён ли лог cron в rsyslog.conf. 3️⃣ Запускаем задание вручную Скопируйте команду из crontab и выполните в терминале, чтобы убедиться, что скрипт сам по себе работает. 4️⃣ Добавляем вывод в лог Иногда cron просто не видит ошибки. Давайте принудительно записывать их в лог:

* * * * * /path/to/script.sh >> /var/log/mycron.log 2>&1
5️⃣ Проверяем переменные окружения Cron использует ограниченный PATH. Если скрипт использует внешние команды, указываем полный путь:

/usr/bin/python3 /home/user/myscript.py
или задаём PATH в начале crontab:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
6️⃣ Проверяем права и владельца Скрипт может не запускаться из-за прав доступа. Даем права на исполнение:

chmod +x /path/to/script.sh
Если задание в crontab -e, убедитесь, что оно прописано под нужным пользователем. 💡 Бонус: визуальный мониторинг работы cron Если вам надо отслеживать выполнение задач в реальном времени, установите cronitor или healthchecks.io. Эти сервисы сообщат, если задание не отработало. Пользуетесь ли вы чем-то ещё для отладки cron? Делитесь в комментариях! 🚀 #Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin 👉 @linux_odmin

♻️ Как сисадмину легально избавиться от кладбища старого железа и получить за это премию У каждого админа есть своя тайная ко
♻️ Как сисадмину легально избавиться от кладбища старого железа и получить за это премию У каждого админа есть своя тайная комната боли. Тот самый склад, под завязку забитый мертвыми свичами, пухлыми батареями от ИБП, горами старых мониторов и сгоревшими серверами эпохи DDR3. Выкинуть это добро в мусорный контейнер нельзя по закону (экология, штрафы, учет драгметаллов), а чтобы списать официально - нужно пройти семь кругов бюрократического ада с бухгалтерией 🤦‍♂️ Ребята из УтильЭко предлагают решение этой проблемы. Они забирают весь этот зоопарк, сами закрывают вопросы с документами, а вам за организацию процесса выплачивают партнерский бонус. Как это работает на практике: 🟢 Полный легал для бухгалтерии. Работа идет строго по лицензиям. На выходе ваша компания получает полный пакет закрывающих документов (акты утилизации, паспорта отходов) по всем стандартам 2026 года. Бухгалтеры будут счастливы, юристы спокойны. 🟢 Оценка за 48 часов. Просто выгружаете спецификацию (список железа) и скидываете менеджеру. Через двое суток у вас на руках готовый расчет и условия. 🟢 Никакой физической боли. Логистику, заказ пропусков, грузчиков и вывоз берут на себя. Рвать спину, вытаскивая тяжеленные 4U-шасси и ИБП в Газель, вам не придется. 🟢 Двойная выгода. Относительно ликвидное железо (старые ноутбуки, серверы, СХД) они выкупают, принося вашей компании живые деньги. А откровенный неликвид и мусор - легально утилизируют. А теперь самое интересное для тех, кто инициирует процесс. За помощь в организации контракта со своей компанией (или вашими клиентами на аутсорсе) УтильЭко выплачивает ИТ-специалисту 20% от суммы сделки. По сути, вы наводите порядок на собственном складе чужими руками и получаете за это отличную премию к зарплате 💸 Если подсобка уже ломится от древнего легаси, пишите менеджеру для консультации и быстрой оценки спецификации: 📩 @izik30 Подробнее прочитать про ребят можно тут ➡️ УтильЭко - утилизация техники для юридических лиц Реклама. ООО «УТИЛЬЭКО», ИНН: 6685221390, erid: 2VtzqupaZSW

🔐 Как заставить пользователя сменить пароль при следующем входе в Linux Привет, коллеги! Сегодня разберем полезный трюк: как заставить пользователя сменить пароль при следующем входе в систему. Это особенно актуально при создании новых учетных записей или после сброса пароля. 🔸 1. Используем команду passwd Самый простой способ принудительно заставить пользователя сменить пароль — это выполнить команду:

passwd --expire username
🔹 Что делает эта команда? Она устанавливает дату последней смены пароля в 0, что вынуждает пользователя изменить его при следующем входе. 🔸 2. Используем команду chage Команда chage позволяет гибко управлять политикой паролей. Чтобы заставить пользователя сменить пароль при следующем входе:

chage -d 0 username
🔹 Как это работает? Флаг -d 0 сбрасывает дату последней смены пароля, и система требует его обновления при следующем входе. 🔸 3. Политика паролей для всех пользователей Если тебе нужно настроить принудительную смену пароля через определенное время для всех пользователей, используй:

chage -M 30 username
🔹 Что делает этот параметр? Устанавливает срок действия пароля в 30 дней. После истечения этого срока система потребует его смены. 🔸 4. Проверка настроек пароля пользователя Чтобы убедиться, что правило применилось, можно выполнить:

chage -l username
Это покажет дату последней смены пароля, срок его действия и дату истечения. 🔸 5. Блокировка входа без смены пароля Если ты хочешь полностью заблокировать пользователя, пока он не изменит пароль, можешь сначала принудительно истечь срок пароля:

passwd -l username
А затем снова разрешить вход после смены пароля:

passwd -u username
🔥 Итог 🔹 Используй passwd --expire username или chage -d 0 username, чтобы заставить пользователя сменить пароль. 🔹 Проверяй настройки командой chage -l username. 🔹 Настраивай срок действия пароля глобально через chage -M 30 username. 🔹 При необходимости блокируй вход до смены пароля. Применяй эти методы и будь уверен в безопасности системы! 🔒 💬 Делись своим опытом в комментариях! Какие еще трюки используешь для управления паролями? #Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin 👉 @linux_odmin