Difference between revisions of "Serve.cfg:global:run dir"

From EjudgeWiki
 
Line 35: Line 35:
 
* Подкаталог <tt>report</tt> используется для передачи информации от программы <tt>run</tt> к программе <tt>serve</tt>. В этот каталог программа <tt>run</tt> помещает судейский вариант протокола тестирования. Каталог может использоваться одновременно несколькими программами <tt>run</tt> и одной программой <tt>serve</tt>, но синхронизация доступа ведётся с помощью каталога <tt>status</tt>, поэтому никакой дополнительной синхронизации в каталоге <tt>report</tt> не требуется.
 
* Подкаталог <tt>report</tt> используется для передачи информации от программы <tt>run</tt> к программе <tt>serve</tt>. В этот каталог программа <tt>run</tt> помещает судейский вариант протокола тестирования. Каталог может использоваться одновременно несколькими программами <tt>run</tt> и одной программой <tt>serve</tt>, но синхронизация доступа ведётся с помощью каталога <tt>status</tt>, поэтому никакой дополнительной синхронизации в каталоге <tt>report</tt> не требуется.
  
* Подкаталог <tt>teamreport</tt> используется для передачи информации от программы </tt>run</tt> к программе </tt>serve</tt>. В этот каталог программа <tt>run</tt> помещает пользовательский вариант протокола тестирования, если эта опция включена в конфигурационном файле турнира. Каталог может использоваться одновременно несколькими программами <tt>run</tt> и одной программой <tt>serve</tt>, но синхронизация доступа ведётся с помощью каталога status, поэтому никакой дополнительной синхронизации в каталоге <tt>teamreport</tt> не требуется.
+
* Подкаталог <tt>teamreport</tt> используется для передачи информации от программы <tt>run</tt> к программе <tt>serve</tt>. В этот каталог программа <tt>run</tt> помещает пользовательский вариант протокола тестирования, если эта опция включена в конфигурационном файле турнира. Каталог может использоваться одновременно несколькими программами <tt>run</tt> и одной программой <tt>serve</tt>, но синхронизация доступа ведётся с помощью каталога status, поэтому никакой дополнительной синхронизации в каталоге <tt>teamreport</tt> не требуется.
  
 
* Символическая ссылка <tt><nowiki><номер></nowiki></tt>, где <tt><nowiki><номер></nowiki></tt> — четырёхзначный идентификатор турнира. Эта символическая ссылка создаётся в каталоге, задаваемом переменной <tt>run_dir</tt>, программы <tt>run</tt>, и указывает на каталог, задаваемый переменной <tt>compile_dir</tt>, программы <tt>serve</tt>. Если эти каталоги совпадают, символическая ссылка указывает на каталог, в котором она находится. С помощью этой символической ссылки программа <tt>run</tt> может обслуживать одновременно несколько турниров, записывая результаты тестирования в каталог обмена только соответствующего турнира.
 
* Символическая ссылка <tt><nowiki><номер></nowiki></tt>, где <tt><nowiki><номер></nowiki></tt> — четырёхзначный идентификатор турнира. Эта символическая ссылка создаётся в каталоге, задаваемом переменной <tt>run_dir</tt>, программы <tt>run</tt>, и указывает на каталог, задаваемый переменной <tt>compile_dir</tt>, программы <tt>serve</tt>. Если эти каталоги совпадают, символическая ссылка указывает на каталог, в котором она находится. С помощью этой символической ссылки программа <tt>run</tt> может обслуживать одновременно несколько турниров, записывая результаты тестирования в каталог обмена только соответствующего турнира.

Latest revision as of 09:35, 10 February 2012

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