Просмотр системной информации и управление процессами из cmd или powershell

Сигналы как часть завершения процесса

Управлять процессами в ОС Linux можно с помощью специальных сигналов. Одновременно с этим, пользователь по мере необходимости завершает ненужный процесс.

Сигналы могут передаваться как со стороны самой системы, так и со стороны пользователя. Во втором случае потребуется введение специальной команды или использование определенного сочетания клавиш в терминале.

Если процессу пришел сигнал о необходимости его завершения, потребуется организовать определенные подготовительные действия. Изначально завершаются дочерние процессы, удаляются временные файлы и сокеты.

Стоит отметить, что процессы в ОС «Линукс» могут реагировать не на все сигналы. Рекомендуется рассмотреть максимально подробно те, которые применяются при завершении процессов:

  • SIGINT. Этот сигнал является самым безобидным. Он будет отправлен процессу, который запущен из терминала путем сочетания клавиш «Ctrl+C». Процесс будет завершен правильно, а управление возвращается к пользователю.
  • SIGQUIT. Такой сигнал также отправляется путём сочетания клавиш, но распространяется на программу, запущенную в самом терминале. Сигнал сообщит ей, что необходимо срочное завершение. В данном случае программа корректно завершится или просто проигнорирует сигнал. Главное отличие от вышеописанного варианта – процесс сопровождается генерированием дампа памяти. Здесь используется сочетание клавиш «Ctrl+/».
  • SIGHUP. Данный сигнал сообщит определенному процессу, что соединение с терминалом управления прервано. Он отправляется не пользователем, а самой системой. Сигнал может возникнуть при закрытии доступа к интернету.
  • SIGTERM. Этот сигнал свидетельствует о немедленном завершении процессов, но обрабатывается с помощью специальных программ. Именно поэтому появляется возможность устранения всех дочерних процессов, освобождения ресурсов.
  • SIGKILL. Такой сигнал также немедленно завершает процессы. Главное отличие от предыдущего варианта – сигнал передаётся не на сам процесс, а на ядро, где в последующем обрабатывается. В этом случае ресурсы и дочерние процессы не завершаются в принудительном порядке.

Пользователь должен быть осведомлён, что все процессы обязаны завершаться максимально корректно. При выполнении такой процедуры закрываются и удаляются временные файлы, освобождаются порты и сокеты.

Через реестр

Модификация реестра на пользовательских машинах ― странный вариант, лишь на случай крайней необходимости. Можно использовать ветки Run или RunOnce. Подробнее о них ― в документации. Сама модификация реестра может проводиться через групповые политики или из командной строки ― например, такой командой:

В зависимости от ветки реестра, процесс будет выполняться или под пользователем, выполнившим вход в систему, или под аккаунтом SYSTEM.

Есть и другие способы, такие как правка ярлыков в папке «Автозагрузка» или добавление в ярлык к популярной программе && script.cmd, но эти методы уже из серии «можно, но не нужно».

Теперь перейдем к новым инструментам.

Способы новые или куда же без PowerShell

PowerShell, оправдывая свое название, может подключаться к удаленным компьютерам при помощи WMI, RPC и WS-Management (WSMan). Использование последнего метода требует предварительной настройки.

Командлеты, не требующие предварительной настройки, как правило, имеют параметр ComputerName, но не имеют параметра Session. Посмотреть список таких командлетов можно командой:

Для настройки WSMan в общем случае достаточно выполнить команду Enable-PSRemoting-Force. Она запустит службу удаленного управления WinRM и пропишет исключения в фаерволе ― в принципе, это можно сделать для всего домена при помощи групповых политик. Подробнее настройка описана в документации.

После того как все компьютеры будут готовы принимать запросы, мы сможем подключаться при помощи соответствующих командлетов PowerShell. Для проверки возможности подключения используется командлет Test-WSMan.

Проверка возможности подключения.

Для того чтобы выполнить определенную команду или скрипт, используется командлет Invoke-Command со следующим синтаксисом:

Где COMPUTER ― имя компьютера, COMMAND ―– имя команды, а USERNAME ― имя пользователя, если оно нужно.

Смотрим содержимое диска С удаленного компьютера.

Если же нам нужно получить полноценную консоль ― не автоматизации ради, а ради управления конкретным компьютером, ― то можно использовать командлет Enter-PSSession.

Работаем в консоли удаленного компьютера.

Напомню, что с помощью JEA можно ограничить доступные подобной сессии командлеты или дать доступ нужным без прав администратора.

Конечно, кроме встроенных средств и небольших утилит, существует множество программ для управления структурой. Помимо взрослых решений, для управления конфигурациями вроде Chef, Ansible и MS SCCM можно использовать и средства мониторинга вроде Zabbix, и даже консоль управления антивирусом Касперского.

В период гетерогенных структур хорошо бы иметь возможность унифицированного управления Windows и Linux. Это можно сделать и с помощью PowerShell, что само по себе достойно отдельной статьи ― стоит такую сделать или уже лишнее?

Кстати, поделитесь вашими способами скрытого и не очень запуска программ на удаленных компьютерах. Ну, за исключением эксплойтов.

Kill With Exact Process Name

In the previous example, we have only provided some part of the process name, not the whole. In some situations, this can not be suitable because of similarly named processes. We can specify the exact name to exactly specify the process. In this example, we have two processes with similar names as we can see below.


Kill With Exact Process Name

Now we only want to kill process  which PID is 3733 . But we do not want to kill  which PID is 3732 . Now we will provide process name with the -e parameter to match the exact name of the process like below.


Kill With Exact Process Name

We check again the running processes and see only  process.

Use the «kill» Command

If your app is unresponsive and the above suggestions don’t work (the GUI might be unresponsive), hit Ctrl + Alt + T to open the Terminal.

Several command line options are available to help you to close your app. Better still, these can be used either on your computer or by connecting over SSH from another device.

How to Set Up SSH on Linux and Test Your Setup: A Beginner’s Guide

Need to access your Linux computer or server remotely? Here’s how to set up and configure SSH on Linux, Windows, and mobile.

The kill command can be used here, but first requires a process ID. You can find this by running a command interrogating the application for its process ID:

The result will display the process ID. This can then be used as follows:

Note that you may need to append the command with sudo.

Другие способы убить программу

Есть еще 5 способов убить приложение Linux, как указано в связанном руководстве.

Однако, чтобы спасти вас от усилий, щелкнув ссылку здесь, это раздел, показывающий, что это за команды, поэтому вы можете использовать эти команды над killall.

Первая из них — команда kill. Команда killall, как вы видели, отлично умеет убивать все версии одной и той же программы. Команда kill предназначена для того, чтобы убивать один процесс за раз и, следовательно, больше нацелена.

Чтобы запустить команду kill, вам нужно знать идентификатор процесса, который вы хотите убить. Для этого вы можете использовать команду ps.

Например, чтобы найти запущенную версию Firefox, вы можете запустить следующую команду:

В конце вы увидите строку данных с командой / usr / lib / firefox / firefox. В начале строки вы увидите свой идентификатор пользователя и номер после идентификатора пользователя ID процесса.

Используя идентификатор процесса, вы можете убить Firefox, выполнив следующую команду:

Другой способ убить программу — это использовать команду xkill. Обычно это используется для того, чтобы убивать неправильные графические приложения.

Чтобы убить такую ​​программу, как Firefox, откройте терминал и выполните следующую команду:

Теперь курсор изменится на большой белый крест. Наведите курсор на окно, которое вы хотите убить, и щелкните левой кнопкой мыши. Программа выйдет немедленно.

Другой способ убить процесс — это использовать верхнюю команду Linux. В верхней команде перечислены все запущенные процессы в вашей системе.

Все, что вам нужно сделать, чтобы убить процесс, это нажать клавишу «k» и ввести идентификатор процесса приложения, которое вы хотите убить.

Ранее в этом разделе команда kill, и вам потребовалось найти процесс, используя команду ps, а затем убить процесс, используя команду kill. Это не самый простой вариант.

С одной стороны, команда ps возвращает массу ненужной информации. Все, что вам нужно, это идентификатор процесса. Вы можете получить идентификатор процесса более просто, выполнив следующую команду:

Результатом вышеуказанной команды является просто идентификатор процесса Firefox. Теперь вы можете запустить команду kill следующим образом:

(Заменить с фактическим идентификатором процесса, возвращаемым pgrep).

Однако на самом деле проще просто указать имя программы для pkill следующим образом:

Наконец, вы можете использовать графический инструмент, такой как тот, который поставляется с Ubuntu под названием «Системный монитор». Для запуска «Системного монитора» нажмите клавишу супер (ключ Windows на большинстве компьютеров) и введите «sysmon» в панель поиска. Когда появится значок системного монитора, щелкните по нему.

Системный монитор отображает список процессов. Чтобы закончить программу чистым способом, выберите ее и нажмите клавишу завершения в нижней части экрана (или нажмите CTRL и E). Если это не сработает, щелкните правой кнопкой мыши и выберите «Убить» или нажмите CTRL и K в процессе, который вы хотите убить.

Команда Runas – запуск программ от имени другого пользователя из командной строки

В Windows есть консольная утилита runas.exe, которая используется для запуска приложений от имени другого пользователя из командной строки. Также команда runas позволяет сохранить пароль пользователя в Windows Credential Manager, чтобы его не приходилось набирать каждый раз.

Откройте командную строку (или окно Выполнить, нажав сочетание клавиш Win+R). Для запуска Блокнота с правами учетной записи admininstrator выполните команду:

Совет. Если имя пользователя содержит пробелы, его нужно взять в кавычки:

В отрывшемся окне появится приглашение «Введите пароль для admin», где нужно набрать пароль и нажать Enter.

Должно открыться ваше приложение. В моем случае это cmd. В заголовке окна указано Запущено от имени :

Можно, например, открыть панель управления под другим пользователем:

Для запуска программы из-под доменного пользователя нужно использовать формат имени или . Например, чтобы с помощью блокнота открыть текстовый файл от имени пользователя домена CORP, используйте команду:

Введите пароль для corp\server_admin:
Попытка запуска C:\Windows\notepad.exe C:\tmp\2871997x64.txt от имени пользователя "corp\server_admin" ...

Иногда нужно запустить программу от имени доменного пользователя с компьютера, который не добавлен в домен AD. В этом случае нужно использовать такую команду (при условии, что в сетевых настройках вашего компьютера указан DNS сервер, который может отрезолвить этот домен):

Если для запуска программы от другого пользователя не нужно загружать его профиль, используйте параметр /noprofile . При этом приложение запускается намного быстрее, но может вызвать некорректную работу программ, которые хранят данные в профиле пользователя.

СинтаксисSyntax

ПараметрыParameters

ПараметрParameter ОписаниеDescription
ключ <computer>/s <computer> Указывает имя или IP-адрес удаленного компьютера (не используйте символы обратной косой черты).Specifies the name or IP address of a remote computer (do not use backslashes). По умолчанию это локальный компьютер.The default is the local computer.
/u <Domain>\<UserName>/u <Domain>\<UserName> Выполняет команду с разрешениями учетной записи пользователя, указанного именем пользователя или Domain \ именем пользователядомена.Runs the command with the account permissions of the user who is specified by UserName or Domain\UserName. параметр /u может быть указан только в том случае, если указан параметр /s ./u can be specified only if /s is specified. По умолчанию заданы разрешения пользователя, который в данный момент вошел в систему компьютера, выполняющего команду.The default is the permissions of the user who is currently logged on to the computer that is issuing the command.
/p <Password>/p <Password> Указывает пароль учетной записи пользователя, указанной в параметре /u .Specifies the password of the user account that is specified in the /u parameter.
/Fi <Filter>/fi <Filter> Применяет фильтр для выбора набора задач.Applies a filter to select a set of tasks. Можно использовать более одного фильтра или использовать подстановочный знак ( \ * ) для указания всех задач или имен изображений.You can use more than one filter or use the wildcard character (\*) to specify all tasks or image names. , операторы и значения см. в следующей таблице.See the following , operators, and values.
/PID <ProcessID>/pid <ProcessID> Указывает идентификатор процесса для завершения процесса.Specifies the process ID of the process to be terminated.
применим <ImageName>/im <ImageName> Указывает имя образа процесса, который должен быть завершен.Specifies the image name of the process to be terminated. Используйте подстановочный знак ( \ * ), чтобы указать все имена изображений.Use the wildcard character (\*) to specify all image names.
/f/f Указывает, что процессы принудительно завершаются.Specifies that processes be forcefully terminated. Этот параметр не учитывается для удаленных процессов; все удаленные процессы принудительно завершаются.This parameter is ignored for remote processes; all remote processes are forcefully terminated.
/t/t Завершает указанный процесс и все его дочерние процессы, запущенные этим процессом.Terminates the specified process and any child processes started by it.

Имена фильтров, операторы и значенияFilter names, operators, and values

Имя фильтраFilter Name Допустимые операторыValid Operators Допустимые значенияValid Value(s)
СостояниеSTATUS eq, neeq, ne ВЫПОЛНЕНИЕ | НЕ ОТВЕЧАЕТ | НЕИЗВЕСТНОRUNNING | NOT RESPONDING | UNKNOWN
IMAGENAMEIMAGENAME eq, neeq, ne Имя образаImage name
ИД процессаPID eq, ne, gt, lt, ge, leeq, ne, gt, lt, ge, le Значение PIDPID value
SESSIONSESSION eq, ne, gt, lt, ge, leeq, ne, gt, lt, ge, le Номер сеансаSession number
CPUtimeCPUtime eq, ne, gt, lt, ge, leeq, ne, gt, lt, ge, le Время ЦП в формате ччммСС, где mm и SS находятся в диапазоне от 0 до 59, а чч — любое число без знакаCPU time in the format HHMMSS, where MM and SS are between 0 and 59 and HH is any unsigned number
мемусажеMEMUSAGE eq, ne, gt, lt, ge, leeq, ne, gt, lt, ge, le Использование памяти в КБMemory usage in KB
USERNAMEUSERNAME eq, neeq, ne Любое допустимое имя пользователя (пользователя или пользователя домена \ User)Any valid user name (User or Domain\User)
ОбслуживаниеSERVICES eq, neeq, ne Имя службыService name
WINDOWTITLEWINDOWTITLE eq, neeq, ne Заголовок окнаWindow title
МОДУЛЕMODULES eq, neeq, ne Имя DLLDLL name

Killing a process

There are various commands you can use to kill a process — , ,  and . We will begin from the simplest one: the  command.

Killing processes with the killall command

The command is one of the easiest ways to kill a process. If you know the exact name of a process, and you know that it’s not running as another user and it is not in the Z or D states, then you can use this command directly; there’s no need to manually locate the process as we described above.

By default,  For example, to kill a process named “firefox”, run:

killall firefox

To forcibly kill the process with SIGKILL, run:

killall -9 firefox

You can also use  instead of .

If you want to kill processes interactively, you can use  like so:

killall -i firefox

If you want to kill a process running as a different user, you can use :

sudo killall firefox

You can also kill a process that has been running for a certain period of time with the  and flags. So, if you want to kill a process that has been running for more than 30 minutes, use:

killall -o 30m <process-name>

If you want to kill a process that has been running for less than 30 minutes, use:

killall -y 30m <process-name>

Similarly, use the following abbreviations for the respective units of time:

s seconds
m minutes
h hours
d days
w weeks
M months
y years

Killing processes with the pkill command

Sometimes, you only know part of a program’s name. Just like ,  allows you to kill processes based on partial matches. For example, if you want to kill all processes containing the name  in the name, run:

pkill apache

If you want to use a SIGKILL instead of a SIGTERM, use:

pkill -9 apache

Again, you can also use  instead of .

Killing processes with the kill command

Using the kill command is straightforward. Once you have found out the PID of the process that you want to kill, you can terminate it using the  command. For example, if you want to kill a process having a PID of 1234, then use the following command:

kill 1234

As we mentioned previously, the default is to use a SIGTERM. To use a SIGKILL, use  or  as we have seen before:

kill -9 1234

Killing processes with the top command

It is very easy to kill processes using the  command. First, search for the process that you want to kill and note the PID. Then, press  while top is running (this is case sensitive). It will prompt you to enter the PID of the process that you want to kill.

After you enter the PID, press enter. Now it will ask which signal you want to use to kill the process. If you want to use SIGTERM(15), then simply press enter as it is the default signal. If you want to use SIGKILL(9), then type 9 and press enter.

If you leave the process ID blank and hit enter directly, it will terminate the topmost process in the list. You can scroll using the arrow keys, and change the process you want to kill in this way.

Как удалить процесс Windows без Диспетчера?

Для того, чтобы удалить процесс, с которым не справляется система, существует хороший аналог без графического интерфейса. Это одна из ремонтных утилит в составе Windows под названием TaskKill. Для её запуска нам понадобится обработчик команд cmd с правами администратора.

Любой из процессов можно остановить, используя его имя из списка, отображаемых в Диспетчере с помощью этой утилитки. К слову, справка по TaskKill, вызываемая

taskkill /help

полностью русифицирована. Можете взглянуть. А мы приступим.

Удалить процесс какой-то конкретно можно командой

taskkill /IM имя_процесса

Например, если мы хотим удалить процесс Internet Explorer:

нажмите, чтобы увеличить

Однако при работе с браузерами и закрытии окна любого из них с множеством открытых вкладок, утилита либо запросит дополнительное разрешение пользователя через интерфейс самого браузера (если он завис, это бесполезное занятие) либо предупредит о принудительном закрытии программы:

Так что можно запомнить команду принудительного (аварийного) закрытия процесса. С помощью этой команды можно остановить зависший проводник Windows:

taskkill /F /IM explorer.exe

Привычный интерфейс пропадёт:

и тут же ввести его снова в работу:

start explorer.exe

Кто заметил – именно добавления флага /F и удаляет дополнительную информацию из окна консоли.

Так каждому процессу присвоен свой идентификатор (в каждой сессии Windows) он свой, удалить процесс можно не по имени, а по номеру. Представим, что Диспетчер заблокирован админом или вирусом. Найти PID процесса поможет та же консоль. Откройте второе окно и наберите команду:

tasklist

Всё на виду. Но теперь команда в терминале Windows принимает вид:

taskkill /PID номер_PID

Хитрости утилиты TaskKill

С помощью этой команды можно удалить процесс, не зная его в лицо. Флаг /FI позволяет убить процесс, пожирающий большое количество памяти. Например, записав в консоли:

taskkill /FI “memusage gt ХХХХ”

Вы остановите все процессы и приложения, которые потребляют более ХХХХ килобайт оперативной памяти. Смотрите:

Кстати, если наберёте команду, указав на принудительное закрытие /F и небольшой объём памяти, скажем, 9000, это приведёт к выключению Windows.

сама консоль при мне, если честно, никогда не зависала, но утилите TaskKill подвластно и это:

taskkill /FI cmd.exe

также одним из самых применяемых флагов команды

tskill /A

Например, если у вас завис документ Word, примените команды в таком виде: вам удасться удалить процесс, запущенный во всех текущих сессиях сеанса. Эта команда применяется на тот, случай, если выхотите, чтобы следы процесса исчезли из системы полностью:

tskill /A winword.exe

утилита работает и на удалённых машинах. Она, скажем, для браузера от Mozill-ы принимает такой вид:

taskkill /s IP_адрес /u домен\имя_пользователя /IM firefox.exe

Пока всё. Успехов.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector