Командная строка Windows. TaskList и TaskKill
Иногда возникают ситуации, когда обычные средства управления операционной системой Windows дают сбои. Например, известный, пожалуй, каждому пользователю, «Диспетчер задач» вдруг отказывается запускаться. В этой ситуации можно воспользоваться консолью Windows (Пуск->Выполнить в поле «Открыть» набираем cmd и нажимаем кнопку «ОК») Получаем чёрное окошко консоли с заголовком «С:\Windows\system32\cmd.exe», а внутри будет ссылка на профиль пользователя в ОС Windows, например «C:\Documents and Settings\aeelistratov>». Консольных команд достаточно много, и описать их в рамках одной статьи не представляется возможным. Сегодня речь пойдёт о двух командах, позволяющих управлять процессами, запущенными в системе Windows.
Первая команда — tasklist, запущенная без параметров выводит в окно консоли список запущенных процессов в системе. Полный список параметров можно получить, запустив tasklist /? (параметры передаются через знак слеш «/», опции задаются с помощью дефиса «-«).
В заголовке списка мы увидим поля: Имя образа, PID (ProcessID), Имя сессии (актуально при работе с удалённым компьютером), № сеанса (так же для удалённой работы), Память.
Имя образа — как правило, совпадает с именем исполняемого файла приложения, службы или процесса. Например, для блокнота имя образа будет Notepad.exe, а для MS Word — WINWORD.exe.
PID — идентификационный номер процесса в системе, он позволяет идентифицировать конкретный процесс, а в нашем примере снять зависшую задачу, конкретную зависшую задачу, не заморачиваясь вводом имени образа.
Имя сессии и номер сеанса мы рассматривать не будем, т.к. для локальной системы имя сессии всегда будет «Console«, а номер сеанса равным нулю.
Память — это количество памяти, выделенной системой для того или иного процесса.
Итак, чтобы закрыть зависшее приложение (зная его название), мы даём команду tasklist, таким образом, узнаём идентификатор процесса (PID). Далее мы используем команду taskkill /PID <ID Процесса> или же команду taskkill /IM <Имя образа>
Варианты действий с парой команд tasklist и taskkill:
Вариант 1. Мы знаем, какое приложение является причиной зависания системы:
Например, у нас намертво повис Word. Мы знаем, что называется он winword.exe. Завершить работу зависшего word’a мы можем двумя путями: используя taskkill /PID <ID Процесса>, предварительно узнав ID процесса с помощью команды tasklist или же используя tasklist с параметром /IM: tasklist /IM winword.exe.
Вариант 2. Мы не знаем, какое приложение является причиной зависания системы:
В этом варианте нам понадобятся полные сведения о процессах, запущенных в системе. Чтобы вывести полные сведения о процессах, необходимо задать параметр /V в команде tasklist. В таком варианте команда возвращает нам расширенную таблицу, с дополнительными сведениями о процессах. К пяти предыдущим колонкам добавляются ещё 4:
Статус — Имеет два возможных значения «Работает» и «Не отвечает»
Пользователь — Имя пользователя, запустившего процесс (Тут могут быть как системные пользователи вроде NT AUTHORITY\SYSTEM , и пользователи <домен>\<имя пользователя>, пока на этом не будем останавливаться)
Время ЦП — отображает время, затраченное процессором на обработку данного процесса (своеобразный показатель нагрузки на процессор)
Заголовок окна — в заголовке окна приложения частенько выводится имя открытого документа, что позволяет идентифицировать процесс.
В расширенном списке нас интересуют два поля — это статус и заголовок окна. По этим двум полям мы можем точно определить, какое из запущенных приложений зависло, определив его имя (образа) и Идентификатор процесса (PID). Далее, как и в первом варианте с помощью команды taskkill мы закрываем зависшее приложение.
В чём разница между применением параметра /PID и /IM?
Когда мы снимаем процесс с помощью параметра /PID — мы даём команду, завершающую конкретный процесс по идентификатору. Когда мы используем параметр /IM — мы даём команду, завершающую ВСЕ процессы, с соответствующим именем образа.
Что ещё необходимо знать?
0. Любой инструмент требует бережного обращения.
1. Закрывая приложение, с помощью команды taskkill вы теряете все несохранённые данные приложения. А в случае применения параметра/IM — все не сохранённые данные всех копий приложения!
2. При закрытии процессов, относящихся к системным службам, Вы можете нарушить работу системы, что приведёт к её перезагрузке. Выяснить, какие процессы относятся к системным службам, можно дав команду tasklist /SVC.
Навскидку, системные процессы это svchost.exe, lsass.exe, services.exe, winlogon.exe, smss.exe, csrss.exe, spool.exe, FrameworkService.exe, их завершение может привести к перезагрузке системы и потере данных. Если Вам нужно остановить какую-либо службу, то лучше это делать через служебную консоль Windows или командой net stop, о которой пойдёт речь в одном из следующих ликбезов.
3. С помощью данных команд можно управлять процессами на удалённом компьютере в сети, но для этого у Вас должны быть соответствующие привилегии (права администратора), тогда через ключ /S можно указать имя удалённой системы. Например, tasklist /S somecomp – вернёт список процессов, запущенных на компьютере с сетевым именем somecomp, a taskkill /S somecomp /IM notepad.exe – принудительно закроет на удалённом компьютере все процессы блокнота.
но есть просьба добавить есть ли возможность запустить новый системный процесс из под командной строки?
Запустить какой процесс? Если системный — достаточно набрать в командной строке его название, например notepad.exe — запустит блокнот, calc.exe — калькулятор, taskmgr — диспетчер задач, regedit — редактор реестра. Если речь о программе, то к ней надо указать полный путь, например C:\Program Files\7-Zip\7zFM.exe.
Если вас интересует запуск службы, она запускается командой NET START Имя_службы.