Сначала выясните, сколько работает сам процесс Rust. Надпись «generating map», которая час висит в панели, может означать долгий запуск, череду неудачных запусков или устаревший статус уже завершившегося процесса. Исправления будут разными. Удаление мира до проверки стирает полезные свидетельства и ставит под угрозу прогресс игроков.
Разбираем Rust PC на Ubuntu с установкой из нашего руководства: служба rust, пользователь rust, каталог /srv/rust/game, identity friends, журнал /srv/rust/rust.log. Подставьте свои пути. Инструкция не относится к Console Edition и зависанию экрана загрузки на компьютере игрока.
Проверьте, не запускается ли процесс заново#
До очередного нажатия Restart посмотрите состояние службы и последние сообщения игры:
sudo systemctl show rust -p ActiveState -p SubState -p MainPID -p NRestarts -p ExecMainStartTimestamp
sudo journalctl -u rust --since '-20 minutes' --no-pager
sudo tail -n 100 /srv/rust/rust.log
Позже повторите первую команду. Другой PID или время старта означают, что текущая попытка моложе, чем показывает панель. Растущий счётчик перезапусков помогает обнаружить цикл внутри службы. Внешняя панель или watchdog тоже могут перезапускать процесс, поэтому отдельно проверьте их расписание. Сохраните первую ошибку перед каждым завершением.
Если генерация продвигается, прекратите ручные перезапуски. Проверка доступности, которая слишком рано требует успешного входа игроков, способна постоянно прерывать нормальный запуск. Увеличивать срок ожидания этой проверки стоит после подтверждения прогресса процесса. Постоянное отключение восстановления не решает причину падения.
В старом обсуждении администраторов хорошо видна неоднозначность: один участник советует удалить старые сохранения, другой наблюдает то же поведение на новой установке. Одна надпись в панели не доказывает повреждение мира.
Сопоставьте ход загрузки с состоянием ресурсов#
Сравните две выборки журнала с интервалом в несколько минут: последнюю завершённую стадию, время сообщений и исключения. Универсального правила «генерация обязана закончиться за пять минут» нет. Если есть история успешных запусков, сравнивайте одинаковые параметры карты и сборки сервера.
free -h
df -h /srv/rust
df -i /srv/rust
sudo ps -u rust -o pid,etimes,%cpu,%mem,rss,comm
sudo journalctl -k --since '-30 minutes' --no-pager
В выводе free смотрите прежде всего available: маленькая колонка free сама по себе не означает исчерпание памяти. Работа со swap и медленный ввод-вывод требуют внимания, но занятая память ещё не доказывает утечку. Сообщение ядра о завершении процесса через OOM — более предметное свидетельство нехватки памяти. На общем хосте отделяйте нагрузку Rust от соседних задач.
Свободное место и свободные inode проверяются отдельно: нехватка любого из них мешает записи файлов. Стабильный PID, новые стадии в журнале и работа CPU указывают, что загрузка продолжается. Повторяющееся исключение, OOM, ошибка диска или отсутствие изменений в нескольких наблюдениях дают основание искать конкретный сбой. Низкая загрузка CPU не раскрывает причину: процесс может ждать диск или скачивание.
Сверьте параметры мира перед изменениями#
Проверьте server.identity, тип карты, seed, размер и URL пользовательской карты в действующей команде запуска. Определение службы просматривайте приватно: в аргументах бывает пароль RCON. Настройки карты ниже тоже просматривайте приватно: подписанный URL может содержать токен доступа. Перед передачей вывода удалите такие токены:
sudo sed -n '/^server\.level /p; /^server\.seed /p; /^server\.worldsize /p; /^server\.levelurl /p' /srv/rust/game/server/friends/cfg/server.cfg
Согласно документации Facepunch, значения server.cfg имеют приоритет над аргументами запуска. Если изменить seed в скрипте, оставив другой в файле, результат проверки будет обманчивым. Смена identity тоже может открыть другой каталог и создать впечатление, что прежний мир исчез. Сначала запишите действующие параметры.
Большая процедурная карта требует больше ресурсов. Уменьшение размера у рабочего identity меняет мир, а не просто ускоряет его загрузку. Для сравнения с маленькой чистой картой нужна отдельная установка и identity, другие порты и закрытый доступ игроков. Эксперимент не должен использовать рабочие данные.
Для пользовательской карты сначала разберите ошибки скачивания. Руководство Facepunch требует прямую ссылку на файл, доступную также новым игрокам. Страница входа или HTML-страница с кнопкой скачивания карту не заменяет. Пока проверяете URL и версию ресурса, сохраните файл карты, с которым связан текущий сейв.
До исправления сохраните остановленную установку#
Если наблюдения указывают на необходимость перезапуска или ремонта, объявите обслуживание и приостановите внешние расписания запуска. Остановите службу, проверьте исчезновение основного процесса и убедитесь, что отдельно запущенный Rust не продолжает писать в этот identity:
sudo systemctl stop rust
sudo systemctl show rust -p ActiveState -p SubState -p MainPID
sudo pgrep -u rust -x RustDedicated
При отсутствии совпадений pgrep обычно завершается с кодом 1. Если остался другой процесс записи, сначала разберитесь с ним. Сделайте приватную резервную копию с отметкой времени за пределами /srv/rust: всё дерево установки, определение службы и внешние хранилища плагинов. Проверьте читаемость архива и сохраните копию на другой машине. Копирование меняющегося сейва и журналов баз даёт менее надёжную основу для восстановления, чем остановленный снимок.
Меняйте один пункт, на который указывают свидетельства: доступные ресурсы, права, проблемное скачивание или документированно несовместимое расширение. Сохраните предыдущую конфигурацию и сведения о сборке. Удаление .sav, базы чертежей или всего identity не подходит как универсальное лечение долгой генерации.
Подтвердите загрузку нужного мира#
Запустите службу один раз, наблюдайте журнал и убедитесь, что цикл рестартов прекратился. После окончания старта игрок с подходящей версией Rust PC должен подключиться к игровому адресу и попасть в ожидаемый мир. Наличие слушающего UDP-порта ещё не подтверждает правильную загрузку карты.
Если войти можно, но сервер отсутствует в списке, переходите к проверке обнаружения. Если мир неожиданно пуст, прекратите действия игроков и проверьте identity и выбор карты, прежде чем новое сохранение затронет полезные данные для восстановления. Затем запланированным сохранением и перезапуском подтвердите, что прогресс сохраняется. До этого старый архив нужен для отката.




