Serve.cfg:global:run dir

From EjudgeWiki

Навигация: Главная страница/Система ejudge/Использование/Конфигурационные файлы/serve.cfg/Глобальные конфигурационные параметры/run_dir

Имя переменной: run_dir
Содержится в: global
Используется: serve, run
Тип содержимого: путь к каталогу
Может отсутствовать: да
Значение по умолчанию: run
Может повторяться: нет

Описание. Данная переменная задаёт каталоги обмена между программами serve и run. Полный путь к этому каталогу определяется по следующим правилам:

  • Если значение переменной run_dir не задано, используется значение run.
  • Если значение переменной run_dir начинается с символа ’/’, то есть значение переменной задаёт полный абсолютный путь к каталогу скриптов, этот путь используется без изменений.
  • Если значение переменной run_dir не начинается с символа ’/’, полный путь к каталогу скриптов образуется конкатенацией значения переменной var_dir и значения переменной run_dir.

Каталог обмена содержит в себе несколько подкаталогов, назначение которых описывается ниже.

  • Подкаталог queue используется для передачи информации от программы serve к программе run. Программа serve помещает в этот каталог небольшие файлы, содержащие служебную информацию о программе, которую необходимо протестировать (так называемый «пакет задания тестирования»). Программа run периодически просматривает этот каталог и при появлении в нём новых пакетов задания тестирования выполняет их. Этот каталог может использоваться совместно несколькими программами serve, обслуживающими разные турниры, и несколькими программами run, например, работающими на разных компьютерах в сети. Этот каталог имеет специальную структуру, чтобы предотвратить синхронизационные ошибки при одновременном доступенескольких программ.
  • Подкаталог exe используется для передачи информации от программы serve к программе run. Программа serve помещает в этот каталог исполняемый файл программы, которую необходимо протестировать. Исполняемый файл программы имеет то же самое имя, что и пакет задания тестирования для этой программы. Программа run считывает исполняемый файл после файла пакета задания компиляции. Этот каталог может использоваться совместно несколькими программами serve, обслуживающими разные турниры, и несколькими программами run. Синхронизация доступа поддерживается в каталоге queue, поэтому никакой дополнительной синхронизации в каталоге exe не требуется.
  • Подкаталог status используется для передачи информации от программы run к программе serve. В этот каталог программа run помещает небольшой файл с информацией о результате тестирования (так называемый «пакет результата тестирования»). Программа serve периодически просматривает данный каталог и при появлении в нём новых файлов обновляет своё внутреннее состояние. Поскольку каталог может использоваться одновременно несколькими программами run и одной программой serve, он имеет специальную структуру для предотвращения синхронизационных ошибок.
  • Подкаталог report используется для передачи информации от программы run к программе serve. В этот каталог программа run помещает судейский вариант протокола тестирования. Каталог может использоваться одновременно несколькими программами run и одной программой serve, но синхронизация доступа ведётся с помощью каталога status, поэтому никакой дополнительной синхронизации в каталоге report не требуется.
  • Подкаталог teamreport используется для передачи информации от программы run к программе serve. В этот каталог программа run помещает пользовательский вариант протокола тестирования, если эта опция включена в конфигурационном файле турнира. Каталог может использоваться одновременно несколькими программами run и одной программой serve, но синхронизация доступа ведётся с помощью каталога status, поэтому никакой дополнительной синхронизации в каталоге teamreport не требуется.
  • Символическая ссылка <номер>, где <номер> — четырёхзначный идентификатор турнира. Эта символическая ссылка создаётся в каталоге, задаваемом переменной run_dir, программы run, и указывает на каталог, задаваемый переменной compile_dir, программы serve. Если эти каталоги совпадают, символическая ссылка указывает на каталог, в котором она находится. С помощью этой символической ссылки программа run может обслуживать одновременно несколько турниров, записывая результаты тестирования в каталог обмена только соответствующего турнира.

Пример. С помощью задания каталога обмена можно добиться того, что несколько одновременно работающих серверов турнира будут использовать одну программу тестирования run. Для этого создаётся отдельный каталог для программы run, например /var/ejudge/run. Этот каталог указывается в качестве корневого в конфигурационном файле программы run c помощью строки

root_dir = /var/ejudge/run

Программа run запускается в каталоге /var/ejudge/run. Теперь во всех конфигурационных файлах серверов турниров для использования этой программы тестирования достаточно установить переменную run_dir в следующее значение:

run_dir = /var/ejudge/run/var/compile