Можно ли открывать и запускать из нескольких запросов командной строки в одном каталоге? - PullRequest
0 голосов
/ 24 апреля 2020

Я хочу открыть два приглашения командной строки (я использую CMDer) из одного и того же каталога и запускать разные команды одновременно. Будут ли эти две команды прерывать друг друга? Один из них предназначен для компиляции веб-приложения, которое я создаю (на компиляцию уходит около 7 минут), а другой - для просмотра истории команд, которые я выполнил (это нужно сделать быстро).

Спасибо!

1 Ответ

0 голосов
/ 26 апреля 2020

Если предположить, что CMDer не делает ничего другого, кроме как выдавать в операционную систему те же команды, что и стандартная консоль cmd.exe, тогда ответ будет ясным: «Да, они мешают, но это зависит»: D

Разбивка:

Первая часть «Открытие нескольких консолей», безусловно, возможна. Вы можете открыть консоль N windows и в каждом из них без проблем переключаться в один и тот же каталог (за исключением, может быть, ограничений ОЗУ).

Вторая часть "Запускать команды, которые создают или не мешают", - это сложная часть. Если ваша идея заключается в том, что окно консоли представляет собой нечто вроде изолированной среды, в которой вы можете делать все, что вам нравится, и если вы закрываете окно, все возвращается в нормальное состояние, как будто вы никогда ничего не трогали (подумайте о снимке виртуальной машины, который потеря / возврат при закрытии виртуальной машины) - тогда ответ: это не так. Будут наблюдаться кросс-консольные эффекты.

Подумайте об удалении файла в одном окне консоли, а затем об открытии этого файла во втором окне консоли: было бы не очень интуитивно понятно, если бы файл также не исчезал во втором окне консоли.
Однако иногда возникают задержки, пока изменения в файловой системе не будут видны другому окну консоли. Может случиться так, что вы удалите файл в одной консоли и создадите dir там, где файл находится в другой консоли, и по-прежнему увидите этот файл в списке. Но если вы попытаетесь получить к нему доступ, операционная система обязательно выйдет с сообщением об ошибке типа «Файл не найден».

Как правило, вы должны рассматривать консольное окно как «Вид» в вашей системе. Если вы делаете что-то в одном окне, эффект будет присутствовать в другом, потому что вы изменили базовую систему, которая существует только один раз (система - это «Модель» - как в «Шаблоне проектирования модель-представление-контроллер», который вы можете иметь) слышал о).
Исключением из этого могут быть изменения переменных среды. Они копируются из текущего состояния при запуске окна консоли. И если вы измените значение такой переменной, другая консоль windows останется неизменной.

Итак, в вашем сценарии, если вы разрешите выполнение операции сборки / компиляции и во время этого процесса некоторые файлы на вашем Файловая система создана, прочитана (заблокирована), изменена или удалена, что может привести к конфликтной ситуации, если другое окно консоли попытается получить доступ к тем же файлам. Это будет так называемое «состояние гонки», то есть недетерминированный c процесс, состояние файла которого будет актуально для второго окна консоли (или обоих, если второе также изменяет файлы, которые первое хочется работать) Если нет помех на уровне файлов (чтение одних и тех же файлов разрешено, запись в один и тот же файл запрещена), тогда не должно быть проблем с одновременным выполнением обеих задач.

Однако при очень подробном представлении оба процесса могут вмешиваться в то, что им требуются одинаковые ограниченные, но чрезвычайно доступные ресурсы ЦП и ОЗУ вашей системы. Это не должно создавать каких-либо проблем с современной вычислительной мощностью P C, учитывая такие функции, как отдельные ядра X, 16 ГБ ОЗУ, терабайты жесткого диска или быстрые твердотельные накопители и т. Д.
Если нет очень сложных требований, высокопараллелизуемую задачу с высоким приоритетом, которая потребляет, например, 98% процессорного времени. Тогда это может привести к значительному замедлению работы других процессов.
Обычно планировщик операционной системы хорошо справляется с предоставлением каждому процессу пользователя достаточного времени ЦП для завершения sh настолько быстро, насколько это возможно, и в то же время представляет отзывчивость. курсор мыши, проигрывая некоторые музыкальные файлы c в фоновом режиме, позволяя Chrome работать с более чем двумя вкладками;) и загружать новейшие данные телеметрии на некоторые серверы на inte rnet, все одновременно.

Существуют методики, позволяющие сделать файл доступным в виде определенных снимков для данной отметки времени. Ключевое слово будет «Shadow Copy» в Windows. Не вдаваясь в подробности, этот метод позволяет, например, дефрагментировать файл, когда он редактируется в каком-либо приложении, или резервная копия может скопировать (большой) файл, когда операция удаления выполняется в том же файле. Операционная система гарантирует, что время доступа учитывается, когда процесс запрашивает доступ к файлу. Таким образом, ОС может вначале разрешить резервное копирование sh до тех пор, пока не запланирует выполнение операции удаления, поскольку она была запущена после резервного копирования (в этом примере), или может сделать даже более сложные действия для представления состояния синхронизированной файловой системы, даже если это на самом деле меняется в данный момент.

...