Serve.cfg:global:run dir
Навигация: Главная страница/Система 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