TürkiyeVPS

Полезные команды для администрирования сервера: htop, df/du, journalctl, ufw, rsync, cron

Инструменты, к которым стоит обратиться в первую очередь, когда сервер тормозит, диск переполнен или служба упала. Рассказываем о htop, df/du, journalctl, ufw, rsync и cron на реальных сценариях.

7 мин чтения

Освоив базовые команды 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 по-прежнему самый практичный способ.

Короткий чек-лист

Когда на сервере возникает проблема, чаще всего достаточно действовать в таком порядке:

  1. htop и free -h: состояние процессора и RAM
  2. df -h: заполненность диска
  3. systemctl status servis и journalctl -u servis: состояние службы и сообщение об ошибке
  4. 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 задачу. Большинство проблем вызвано тем, что в команде не указан полный путь или у скрипта нет права на выполнение.