Process switching in windows

Управление процессами с помощью командлетов Process Managing Processes with Process Cmdlets

Командлеты Process в Windows PowerShell позволяют управлять локальными и удаленными процессами в Windows PowerShell. You can use the Process cmdlets in Windows PowerShell to manage local and remote processes in Windows PowerShell.

Получение процессов (Get-Process) Getting Processes (Get-Process)

Для получения процессов, запущенных на локальном компьютере, выполните командет Get-Process без параметров. To get the processes running on the local computer, run a Get-Process with no parameters.

Отдельные процессы можно получить, указав их имена или идентификаторы. You can get particular processes by specifying their process names or process IDs. Следующая команда возвращает процесс Idle: The following command gets the Idle process:

То, что в некоторых ситуациях командлеты не возвращают данные, является нормальным. Однако если при указании процесса по его идентификатору Get-Process не находит совпадений, он выдает ошибку, так как стандартной целью является получение известного выполняющегося процесса. Although it is normal for cmdlets to return no data in some situations, when you specify a process by its ProcessId, Get-Process generates an error if it finds no matches, because the usual intent is to retrieve a known running process. Если процесс с указанным идентификатором отсутствует, весьма вероятно, что идентификатор неправильный или нужный процесс уже завершился: If there is no process with that Id, it is likely that the Id is incorrect or that the process of interest has already exited:

Параметр Name командлета Get-Process можно использовать для указания подмножества процессов на основе имени процесса. You can use the Name parameter of the Get-Process cmdlet to specify a subset of processes based on the process name. Параметр Name может принимать несколько имен в виде списка с разделителями-запятыми и поддерживает использование подстановочных знаков, что позволяет задавать шаблоны имен. The Name parameter can take multiple names in a comma-separated list and it supports the use of wildcards, so you can type name patterns.

Например, следующая команда возвращает процессы, имена которых начинаются с «ex.». For example, the following command gets process whose names begin with «ex.»

Поскольку класс System.Diagnostics.Process .NET является основой для процессов Windows PowerShell, он удовлетворяет некоторым соглашениям, используемым System.Diagnostics.Process. Because the .NET System.Diagnostics.Process class is the foundation for Windows PowerShell processes, it follows some of the conventions used by System.Diagnostics.Process. Одно из таких соглашений требует, чтобы имя процесса для исполняемого файла никогда не содержало «.exe» в конце имени этого файла. One of those conventions is that the process name for an executable never includes the «.exe» at the end of the executable name.

Get-Process также принимает несколько значений для параметра Name. Get-Process also accepts multiple values for the Name parameter.

Параметр ComputerName командлета Get-Process можно использовать для получения процессов на удаленных компьютерах. You can use the ComputerName parameter of Get-Process to get processes on remote computers. Например, следующая команда получает процессы PowerShell на локальном (представленным «localhost») и двух удаленных компьютерах. For example, the following command gets the PowerShell processes on the local computer (represented by «localhost») and on two remote computers.

Имена компьютеров в этих данных не указаны, однако они хранятся в свойстве MachineName объектов процесса, возвращаемых Get-Process. The computer names are not evident in this display, but they are stored in the MachineName property of the process objects that Get-Process returns. Следующая команда использует командлет Format-Table для отображения свойств ID, ProcessName и MachineName (ComputerName) объектов процесса. The following command uses the Format-Table cmdlet to display the process ID, ProcessName and MachineName (ComputerName) properties of the process objects.

Эта более сложная команда добавляет в стандартные отображаемые данные Get-Process свойство MachineName. This more complex command adds the MachineName property to the standard Get-Process display.

Читайте также:  Что лучше windows или macbook pro

Остановка процессов (Stop-Process) Stopping Processes (Stop-Process)

Windows PowerShell позволяет гибко выводить списки процессов, но как обстоят дела с остановкой процесса? Windows PowerShell gives you flexibility for listing processes, but what about stopping a process?

Командлет Stop-Process принимает имя или идентификатор, указывающие останавливаемый процесс. The Stop-Process cmdlet takes a Name or Id to specify a process you want to stop. Возможность остановки процессов зависит от ваших разрешений. Your ability to stop processes depends on your permissions. Некоторые процессы остановить нельзя. Some processes cannot be stopped. Например, при попытке остановить неактивный процесс возникает ошибка: For example, if you try to stop the idle process, you get an error:

Можно также принудительно вывести запрос с помощью параметра Confirm . You can also force prompting with the Confirm parameter. Он особенно удобен при использовании подстановочного знака в имени процесса, так как случайно может быть определено соответствие с некоторыми процессами, которые не нужно останавливать: This parameter is particularly useful if you use a wildcard when specifying the process name, because you may accidentally match some processes you do not want to stop:

Сложную обработку процессов можно реализовать с помощью командлетов фильтрации объектов. Complex process manipulation is possible by using some of the object filtering cmdlets. Так как объект Process имеет свойство Responding, которое равно true, если он перестал отвечать, вы можете остановить все неотвечающие приложения с помощью следующей команды: Because a Process object has a Responding property that is true when it is no longer responding, you can stop all nonresponsive applications with the following command:

Аналогичный подход возможен и в других ситуациях. You can use the same approach in other situations. Предположим, например, что приложение дополнительной области уведомлений запускается автоматически при открытии другого приложения. For example, suppose a secondary notification area application automatically runs when users start another application. Эта процедура может работать неправильно в сеансах служб терминалов, однако вам все равно нужно сохранить ее в сеансах, выполняемых в консоли физического компьютера. You may find that this does not work correctly in Terminal Services sessions, but you still want to keep it in sessions that run on the physical computer console. Сеансы, подключенные к рабочему столу физического компьютера, всегда имеют идентификатор сеанса 0, поэтому можно остановить все экземпляры процесса, находящиеся в других сеансах, с помощью Where-Object и SessionId процесса: Sessions connected to the physical computer desktop always have a session ID of 0, so you can stop all instances of the process that are in other sessions by using Where-Object and the process, SessionId :

Командлет Stop-Process не использует параметр ComputerName. The Stop-Process cmdlet does not have a ComputerName parameter. Поэтому для выполнения команды остановки процесса на удаленном компьютере необходимо использовать командлет Invoke-Command. Therefore, to run a stop process command on a remote computer, you need to use the Invoke-Command cmdlet. Например, чтобы остановить процесс PowerShell на удаленном компьютере Server01, введите: For example, to stop the PowerShell process on the Server01 remote computer, type:

Остановка всех остальных сеансов Windows PowerShell Stopping All Other Windows PowerShell Sessions

В некоторых случаях может пригодиться возможность остановки всех выполняющихся сеансов Windows PowerShell, отличных от текущего. It may occasionally be useful to be able to stop all running Windows PowerShell sessions other than the current session. Если сеанс использует слишком много ресурсов или недоступен (он может выполняться удаленно или в другом сеансе), возможно, остановить его напрямую не получится. If a session is using too many resources or is inaccessible (it may be running remotely or in another desktop session), you may not be able to directly stop it. При попытке остановить все выполняющиеся сеансы может быть завершен текущий сеанс. If you try to stop all running sessions, however, the current session may be terminated instead.

Каждый сеанс Windows PowerShell имеет переменную среды PID, содержащую идентификатор процесса Windows PowerShell. Each Windows PowerShell session has an environment variable PID that contains the Id of the Windows PowerShell process. Можно проверить переменную $PID на наличие идентификатора каждого сеанса и завершить только сеансы Windows PowerShell с другим идентификатором. Следующая команда конвейера делает именно это и возвращает список завершенных сеансов (из-за использования параметра PassThru ): You can check the $PID against the Id of each session and terminate only Windows PowerShell sessions that have a different Id. The following pipeline command does this and returns the list of terminated sessions (because of the use of the PassThru parameter):

Читайте также:  Windows loader яндекс диск

Запуск, отладка и ожидание процессов Starting, Debugging, and Waiting for Processes

Windows PowerShell также имеет командлеты для запуска (или перезапуска), отладки процесса и ожидания завершения процесса перед выполнением команды. Windows PowerShell also comes with cmdlets to start (or restart), debug a process, and wait for a process to complete before running a command. Дополнительные сведения об этих командлетах см. в разделах справки по каждому из них. For information about these cmdlets, see the cmdlet help topic for each cmdlet.

Средства для отладки потоков и процессов в Visual Studio Tools to debug threads and processes in Visual Studio

Потоки и процессы — это связанные понятия в вычислительной технике. Threads and processes are related concepts in computer science. Оба представляют из себя последовательность инструкций, которые должны выполняться в определенном порядке. Both represent sequences of instructions that must execute in a specific order. Инструкции в отдельных потоках или процессах, однако, могут выполняться параллельно. Instructions in separate threads or processes, however, can execute in parallel.

Процессы существуют в операционной системе и соответствуют тому, что пользователи видят как программы или приложения. Processes exist in the operating system and correspond to what users see as programs or applications. Поток, с другой стороны, существует внутри процесса. A thread, on the other hand, exists within a process. По этой причине потоки иногда называются облегченными процессами. For this reason, threads are sometimes referred to as light-weight processes. Каждый процесс состоит из одного или более потоков. Each process consists of one or more threads.

Существование нескольких процессов позволяет компьютеру «одновременно» выполнять несколько задач. The existence of multiple processes enables a computer to perform more than one task at a time. Существование нескольких потоков позволяет процессу разделять работу для параллельного выполнения. The existence of multiple threads enables a process to separate work to be performed in parallel. На многопроцессорном компьютере процессы или потоки могут работать на разных процессорах. On a computer with multiprocessors, processes or threads can run on different processors. Это позволяет выполнять реально параллельную работу. This enables true parallel processing.

Абсолютно параллельная обработка не всегда возможна. Perfect parallel processing is not always possible. Потоки иногда должны синхронизироваться. Threads sometimes must be synchronized. Один поток может ожидать результата другого потока, или одному потоку может понадобиться монопольный доступ к ресурсу, который используется другим потоком. One thread may have to wait for a result from another thread, or one thread may need exclusive access to a resource that another thread is using. Проблемы синхронизации являются распространенной причиной ошибок в многопоточных приложениях. Synchronization problems are a common cause of bugs in multithreaded applications. Иногда поток может закончиться, ожидая ресурс, который никогда не будет доступен. Sometimes threads may end up waiting for a resource that never becomes available. Это кончается состоянием, которое называется взаимоблокировкой. This results in a condition called deadlock.

Отладчик Visual Studio Visual Studio предоставляет мощные, но простые в использовании средства отладки потоков и процессов. The Visual Studio Visual Studio debugger provides powerful but easy-to-use tools for debugging threads and processes.

Инструменты и возможности Tools and features

Средства, которые необходимо использовать в Visual Studio Visual Studio , зависят от типа кода, который вы пытаетесь отладить: The tools you need to use in Visual Studio Visual Studio depend on what type of code you are trying to debug:

Основные средства для работы с процессами — это диалоговое окно Присоединение к процессу, окно Процессы и панель инструментов Место отладки. For processes, the primary tools are the Attach to Process dialog box, the Processes window, and the Debug Location toolbar.

Основные средства для отладки потоков — это окно Потоки, маркеры потоков в окнах исходного кода, окно Параллельные стеки, окно Контроль параллельных данных и панель инструментов Место отладки. For threads, the primary tools for debugging threads are the Threads window, thread markers in source windows, Parallel Stacks window, Parallel Watch window, and the Debug Location toolbar.

Читайте также:  Для чего нужен net framework для windows

Для кода, использующего Task в библиотеке параллельных задач (TPL), среду выполнения с параллелизмом (машинный код), основными средствами отладки многопоточных приложений являются окно Параллельные стеки, окно Контроль параллельных данных и окно Задачи (окно Задачи также поддерживает объект promise JavaScript). For code that uses the Task in the Task Parallel Library (TPL), the Concurrency Runtime (native code), the primary tools for debugging multithreaded applications are the Parallel Stacks window, the Parallel Watch window, and the Tasks window (the Tasks window also supports the JavaScript promise object).

Основным средством отладки потоков в GPU является окно Потоки GPU. For debugging threads on the GPU, the primary tool is the GPU Threads windows.

В следующей таблице показаны доступные данные и действия, которые можно выполнять в каждом из этих мест: The following table shows the information available and the actions you can perform in each of these places:

Пользовательский интерфейс User Interface Доступные сведения Information Available Действия, которые можно выполнять Actions You Can Perform
Диалоговое окно Присоединение к процессуAttach to Process dialog box Доступные процессы для присоединения: Available Processes you can attach to:

— Имя процесса (EXE) — Process name (.exe)
— Идентификатор процесса — Process ID number
— Название строки меню — Menubar Title
— Тип (управляемый код (версия 4); управляемый код (версии 2.0, 1.1, 1.0); x86; x64; IA64) — Type (Managed v4.0; Managed v2.0, v1.1, v1.0; x86; x64; IA64)
— Имя пользователя (имя учетной записи) — User Name (account name)
— Номер сеанса — Session number

Выберите процесс для присоединения Select a process to attach to

Выберите удаленный компьютер Select a remote computer

Измените тип транспортного протокола для подключения к удаленным компьютерам Change transport type for connecting to remote computers

Окно процессов Processes window Присоединенные процессы: Attached Processes:

— Имя процесса — Process Name
— Идентификатор процесса — Process ID number
— Путь к процессу EXE — Path to process .exe
— Название строки меню — Menubar Title
— Состояние (прерывание. — State (Break. Работа) Running)
— Отладка (машинный код, управляемый код и т. д.) — Debugging (Native, Managed, and so on.)
— Тип транспортного протокола (по умолчанию используется машинный без проверки подлинности) — Transport type (default, native with no authentication)
— Квалификатор транспортного протокола (удаленный компьютер) — Transport Qualifier (remote computer)

Средства: Tools:

— Присоединить — Attach
— Отсоединить — Detach
— Завершить — Terminate

Контекстное меню: Shortcut menu:

— Присоединить — Attach
— Отсоединить — Detach
— Отсоединить, когда отладка остановлена — Detach when debugging stopped
— Завершить — Terminate

Окно Потоки Threads window Потоки текущего процесса: Threads in current process:

— Идентификатор потока — Thread ID
— Управляемый ИД — Managed ID
— Категория (основной поток, поток интерфейса, обработчик вызова удаленной процедуры или рабочий поток) — Category (main thread, interface thread, remote procedure call handler, or worker thread)
— Имя потока — Thread Name
— Место, где создан поток — Location where thread is created
— Приоритет — Priority
— Маска сходства — Affinity Mask
— Приостановленный счетчик — Suspended Count
— Имя процесса — Process Name
— Индикатор флага — Flag Indicator
— Приостановленный индикатор — Suspended indicator

Средства: Tools:

— Поиск — Search
— Поиск в стеке вызовов — Search Call Stack
— Отметить только мой код — Flag Just My Code
— Пометить выбранные пользовательские модули — Flag Custom Module Selection
— Группировать по — Group by
— Столбцы — Columns
— Развернуть/свернуть стеки вызовов — Expand/Collapse callstacks
— Развернуть или свернуть группы — Expand/Collapse groups
— Заморозить/разморозить потоки — Freeze/Thaw Threads

Контекстное меню: Shortcut menu:

— Показать потоки в исходном коде — Show threads in source
— Переключиться в поток — Switch to a thread
— Заморозить выполняющийся поток — Freeze a running thread
— Разморозить замороженный поток — Thaw a frozen thread
— Пометить поток для дополнительного изучения — Flag a thread for additional study
— Снять отметку потока — Unflag a thread
— Переименовать поток — Rename a thread
— Отобразить и скрыть потоки — Show and hide threads

Оцените статью