Полезные команды для администрирования сервера: htop, df/du, journalctl, ufw, rsync, cron
Инструменты, к которым стоит обратиться в первую очередь, когда сервер тормозит, диск переполнен или служба упала. Рассказываем о htop, df/du, journalctl, ufw, rsync и cron на реальных сценариях.
Освоив базовые команды Linux, пора научиться поддерживать сервер в здоровом состоянии. Повседневная работа администратора сервера в основном сводится к поиску ответов на несколько вопросов: почему сервер тормозит? Почему переполнился диск? Почему упала служба? Регулярно ли создаются резервные копии? В этой статье мы на реальных сценариях в Ubuntu 24.04 разберём шесть инструментов, которые отвечают на эти вопросы.
htop: почему сервер тормозит?
top есть в любом Linux, но htop гораздо нагляднее: цветные индикаторы, выбор мышью, удобная сортировка и дерево процессов.
sudo apt install -y htop
htop
В верхней части экрана вы увидите:
- Индикаторы CPU: загрузка каждого ядра. Если все индикаторы постоянно заполнены, процессора может не хватать.
- Mem и Swp: использование RAM и файла подкачки. Если swap постоянно заполнен, оперативной памяти не хватает, и сервер замедляется, записывая данные на диск.
- Load average: средняя нагрузка за последние 1, 5 и 15 минут. Грубо говоря, значения, постоянно превышающие число ядер, означают, что в очереди ждут задачи.
Полезные сочетания клавиш:
| Клавиша | Действие |
|---|---|
F6 или > |
Выбор критерия сортировки (CPU%, MEM% и т. д.) |
F4 |
Фильтр по имени процесса |
F5 |
Дерево процессов (какой процесс какой запустил) |
F9 |
Отправка сигнала выбранному процессу (остановка) |
q |
Выход |
Совет: в столбце CPU% в htop можно увидеть значения выше 100%; это значит, что процесс использует несколько ядер.
Чтобы быстро посмотреть текущее состояние RAM, достаточно и free -h. Столбец available показывает память, которую реально могут использовать приложения; низкое значение в столбце free само по себе не проблема, потому что Linux использует свободную память как кэш.
df и du: почему переполнился диск?
Когда диск заполнен, базы данных не могут записывать данные, журналы обрываются, а сайты начинают выдавать ошибки. Сначала посмотрите на общую картину:
df -h
Если есть раздел, у которого столбец Use% превышает 90%, найдите, что занимает место, с помощью du:
sudo du -h --max-depth=1 / 2>/dev/null | sort -h
Эта команда сортирует папки в корневом каталоге по общему размеру от меньшего к большему. Перейдите в самую большую папку и повторите команду — виновника вы найдёте за несколько шагов:
sudo du -h --max-depth=1 /var | sort -h
sudo du -h --max-depth=1 /var/log | sort -h
Самые частые причины и решения:
sudo journalctl --vacuum-size=200M # systemd günlüklerini 200 MB'a indirir
sudo apt clean # indirilmiş paket önbelleğini siler
docker system df # Docker kullanıyorsanız imaj/volume boyutları
Иногда df сообщает, что диск заполнен, а du не находит столько файлов. Обычно причина — удалённый файл, который всё ещё держит открытым какой-то процесс. Такие файлы можно увидеть командой sudo lsof +L1, а место вернуть, перезапустив соответствующую службу. Если диск не выглядит заполненным, но создать файл не получается, проверьте использование inode командой df -i.
journalctl: почему упала служба?
В Ubuntu большинство служб пишет журналы в систему журналирования systemd. journalctl читает эти записи:
journalctl -u nginx # yalnızca nginx servisinin kayıtları
journalctl -u nginx -n 100 --no-pager # son 100 satır
journalctl -u myapp -f # canlı izleme (tail -f gibi)
journalctl --since "1 hour ago" # son bir saatteki tüm kayıtlar
journalctl -p err -b # bu açılıştan beri yalnızca hatalar
journalctl -b -1 # bir önceki açılışın kayıtları
Если служба не работает, действуйте по порядку: посмотрите её состояние через systemctl status servis-adi, затем прочитайте последние сообщения об ошибках через journalctl -u servis-adi -n 50. Первая строка сообщения об ошибке часто прямо указывает на проблему: отсутствующий файл, занятый порт, неверная строка в настройках.
Nginx и некоторые базы данных также пишут в собственные файлы; они лежат в папках вроде /var/log/nginx/, и за ними можно следить через tail -f.
Чтобы навсегда ограничить объём журналов, добавьте строку SystemMaxUse=500M в файл /etc/systemd/journald.conf и выполните sudo systemctl restart systemd-journald.
ufw: какие порты открыты?
UFW (Uncomplicated Firewall) позволяет управлять файрволом Ubuntu простыми командами.
Важно: до включения UFW обязательно разрешите SSH. Иначе соединение оборвётся, и попасть на сервер можно будет только через консоль в панели.
sudo ufw allow OpenSSH # SSH (22) portuna izin
sudo ufw allow 80,443/tcp # web trafiği
sudo ufw enable
sudo ufw status numbered # kuralları numaralı listeler
Другие часто используемые правила:
sudo ufw allow from 203.0.113.10 to any port 5432 # PostgreSQL'e yalnızca bir IP erişsin
sudo ufw deny 3306/tcp # MySQL portunu dışarıya kapat
sudo ufw delete 3 # 3 numaralı kuralı sil
sudo ufw limit OpenSSH # çok sık bağlantı denemelerini sınırla
Если вы сменили порт SSH, вместо OpenSSH укажите новый номер порта (sudo ufw allow 2222/tcp). Более подробные шаги по защите сервера — в нашем руководстве Безопасность Linux-сервера.
rsync: безопасное копирование и резервные копии
rsync копирует файлы локально или по SSH на другую машину. Главное его преимущество — он передаёт только изменившиеся части, поэтому повторное копирование проходит очень быстро.
rsync -avh /var/www/ /yedek/www/ # yerel kopya
rsync -avh /var/www/ [email protected]:/yedek/www/ # başka sunucuya
rsync -avh --delete /var/www/ /yedek/www/ # kaynakta silineni hedefte de sil
rsync -avh --dry-run --delete /var/www/ /yedek/www/ # önce ne yapacağını göster
Параметры: -a сохраняет права, владельцев и даты; -v выводит подробности; -h показывает размеры в удобочитаемом виде. С помощью --exclude можно исключить ненужные папки:
rsync -avh --exclude 'node_modules' --exclude '.cache' /srv/proje/ /yedek/proje/
Обратите внимание на косую черту в конце: /var/www/ копирует содержимое папки, а /var/www — саму папку. При использовании --delete это различие важно; если не уверены, сначала попробуйте с --dry-run.
Прямое копирование файлов базы данных во время работы службы может дать несогласованную копию. Сначала сделайте дамп через mysqldump или pg_dump, а затем передайте этот файл через rsync.
cron: планирование задач
cron автоматически запускает команды через заданные интервалы. Чтобы отредактировать список задач своего пользователя:
crontab -e
Каждая строка состоит из пяти полей времени и команды: минута, час, день месяца, месяц, день недели.
# Her gece 03:00'te web dosyalarını yedekle
0 3 * * * rsync -a --delete /var/www/ /yedek/www/ >> /var/log/yedek.log 2>&1
# Her 15 dakikada bir betik çalıştır
*/15 * * * * /usr/local/bin/kontrol.sh
# Her pazartesi 09:30'da
30 9 * * 1 /usr/local/bin/haftalik-rapor.sh
Полезные привычки:
- Используйте в командах полные пути: переменная
PATHу cron короче, чем в вашей сессии. - Перенаправляйте вывод в файл (
>> dosya.log 2>&1), иначе ошибки будут теряться бесследно. - Перед записью расписания проверяйте его инструментом вроде crontab.guru.
- Просматривайте текущие задачи командой
crontab -l. Работает ли cron, можно увидеть черезjournalctl -u cron.
В качестве современной альтернативы можно использовать таймеры systemd (timers): их журналы видны в journalctl, и они умеют навёрстывать пропущенные запуски. Тем не менее для простых задач cron по-прежнему самый практичный способ.
Короткий чек-лист
Когда на сервере возникает проблема, чаще всего достаточно действовать в таком порядке:
htopиfree -h: состояние процессора и RAMdf -h: заполненность дискаsystemctl status servisиjournalctl -u servis: состояние службы и сообщение об ошибкеsudo ufw status: правила файрвола, если есть проблема с доступом
В клиентской панели TürkiyeVPS можно также отслеживать использование ресурсов и месячный трафик вашего VPS; вместе с этими инструментами командной строки это облегчает поиск источника проблем.
Часто задаваемые вопросы
Чем htop отличается от top?
Оба показывают запущенные процессы и использование ресурсов. htop цветной и интерактивный: поддерживает выбор мышью, удобную сортировку, фильтрацию и дерево процессов. top же установлен в любой системе.
Почему df и du показывают разные результаты?
df измеряет общую заполненность файловой системы, а du — суммарный размер файлов в папках. Удалённые, но всё ещё открытые файлы продолжают занимать место в df и не видны в du. Перезапуск соответствующей службы возвращает место.
Чем rsync отличается от scp?
scp каждый раз копирует файлы заново. rsync передаёт только изменившиеся части, умеет продолжать прерванную передачу и предлагает параметры синхронизации, такие как удаление и исключение. Для регулярных резервных копий rsync подходит лучше.
Моя задача cron не запускается. Как проверить?
Сначала убедитесь через crontab -l, что задача записана. Затем посмотрите в journalctl -u cron, запускал ли cron задачу. Большинство проблем вызвано тем, что в команде не указан полный путь или у скрипта нет права на выполнение.
Читайте также
Вы впервые подключились к серверу по SSH, и перед вами пустой терминал. С примерами рассказываем о самых употр...
Если посетители вашего сайта в Иране, Турции, на Кавказе или в Ираке, расположение сервера влияет на скорость...
Перенести сайт на новый хостинг так, чтобы посетители не заметили перерыва, вполне возможно. От резервных копи...