Долгая задержка при первом запуске команды в окне DOS

1643
rossmcm

Мы запускаем сервер (Win2k) с несколькими инструментами на нем. Все рабочие станции (XP) имеют свой PATH для включения этой папки.

Когда мы запускаем инструмент (например grep) из окна DOS на рабочей станции, иногда происходит долгая задержка (до минуты), прежде чем инструмент запускается. После задержки все происходит как обычно. Последующие запуски не имеют задержки, даже когда запускаются из другой коробки DOS.

Есть идеи?

* БОЛЬШЕ ДЕТАЛЕЙ *

Этот сценарий всегда производит задержку. Мы работаем над инструментом в определенной папке на сервере. Инструмент редактируется и компилируется на одной рабочей станции в окне DOS, которое располагается в папке, где инструмент построен, а затем запускается, задержка всегда есть. Следующий прогон в порядке. Таким образом, восстановление EXE приводит к задержке.

2
Время уничтожить Прокмона. , , surfasb 12 лет назад 1
Так что, если вы переместите его в другой каталог, задержка больше не будет? Если это так, то мне интересно, может ли задержка быть связана с загрузкой других файлов в первом каталоге (до повторного размещения). Randolf Richardson 12 лет назад 0
Я знаю, это было некоторое время назад, и вы все еще не играете с этим, но в любом случае, в качестве диагностического шага, попробуйте установить путь = затем запустите команду. barlop 11 лет назад 0

3 ответа на вопрос

3
Hand-E-Food

Windows входит на сервер, чтобы увидеть, находится ли нужная команда в этой папке. После первого входа он уже вошел в систему. У нас одна и та же проблема с открытием документов и папок на сервере каждый день.

Вы можете ускорить его (в Windows), выполнив следующую команду во время входа в систему:

Net Use \\ServerName 

Обработка команды займет минуту, но может произойти как фоновая задача, которую пользователь не заметит. Тем не менее, я не знаю, вызовет ли это проблему «слишком много соединений» в вашем случае.

Смотрите дополнительные детали, которые я добавил к вопросу. Путь не задействован, поскольку EXE находится в текущей папке. rossmcm 12 лет назад 0
1
Randolf Richardson

Возможно, в вашем пути находится сетевое местоположение, время которого истекает - при попытке запустить программу из DOS или из опции «Выполнить» в меню «Пуск», если исполняемый файл или файл сценария / пакета сначала не найден в текущий рабочий каталог, затем ищется каждый каталог, указанный в PATH.

Вы можете набрать «PATH» в окне DOS, чтобы увидеть, есть ли что-нибудь вне диска C: в списке. Если нет, то следующие подозреваемые могут быть:

  1. Первая загрузка очень большой программы также может быть проблемой (потому что последующее использование будет происходить из кеша). У вас есть ссылка на инструмент "grep", который вы используете? Если это небольшая отдельная программа, то это не должно быть проблемой

  2. Медленное антивирусное программное обеспечение (очень редко)

  3. Отказы дисков начинают развиваться (получить полную резервную копию как можно скорее)

  4. Чрезмерная фрагментация в вашей файловой системе (ее легко устранить, запустив Disk Defragmenter, который можно найти в: меню «Пуск» -> «Программы» -> «Стандартные» -> «Системные инструменты» -> «Disk Defragmenter»)

Смотрите дополнительные детали, которые я добавил к вопросу. Мы определили путь, но это происходит, когда EXE находится в текущей папке, так что, вероятно, путь не будет задействован. Кажется, это какая-то проблема с кешированием. rossmcm 12 лет назад 0
+1 за антивирус. На сервере запущено антивирусное программное обеспечение? boot13 12 лет назад 0
1
billc.cn

grep это не команда Win32, а команда Unix, поэтому вы, возможно, вызывали подсистему Unix, которая присутствует в более старых версиях Windows.

Специальный системный процесс должен быть запущен для поддержки этих команд Unix, которые могут объяснить начальную задержку. Я не могу вспомнить название процесса, но если вы используете что-то вроде Process Explorer, вы увидите, что он запускается.

Может быть, эта серия TechNet может помочь. Подробную информацию о подсистеме можно найти в книге «Внутренние компоненты Windows».

Смотрите дополнительные детали, которые я добавил к вопросу. Это не unix grep, а Borland. И это не ограничивается grep - это был пример. rossmcm 12 лет назад 0
Тогда это должно быть время, необходимое для поиска и входа на сервер, как предложено @ Hand-E-Food. Вы можете поместить это `net use` в bat-файл, который запускается при запуске, чтобы ускорить будущий доступ. billc.cn 12 лет назад 0
@ Hand-E-Food, billc.cn - это не решило. rossmcm 12 лет назад 0
Согласно документации [CreateProcess ()] (http://msdn.microsoft.com/en-us/library/ms682425.aspx), текущий рабочий каталог запрашивается намного раньше, чем `% PATH%`, поэтому задержка должно быть вызвано чем-то в текущем каталоге. Может быть, это антивирус или истек срок действия сетевого подключения. billc.cn 12 лет назад 0