Как убить процесс, запущенный в нескольких сеансах, используя скрипт bash или powershell?
3 ответа
На Windows-машинах с установленным PowerShell вы можете просто сделать это:
get-process PROCESS_NAME | stop-process
Альтернатива Bash
pgrep killus | while read p; do kill -9 $p; done
убивает все процессы с именем killus
Вы хотите автоматизировать это или просто иметь инструмент, позволяющий вручную уничтожать несколько экземпляров процесса по имени, независимо от того, в каком пользовательском сеансе выполняется какой-либо экземпляр? Я предполагаю последнее, и следующее должно выполнить это.
В Windows вы не можете победить утилиту Sysinternals "pskill". Получите пакет SysInternals, распакуйте его и в командной строке просто используйте pskill theprocessname
для глубокой шестерки всех экземпляров соответствующего исполняемого файла.
Следующий скрипт bash обеспечит аналогичную функциональность в Linux; Я оставлю это пользователю, чтобы выяснить, как его зациклить, пока не будет больше экземпляров:
#!/bin/bash
if [ $1 -eq ""]; then
echo "Usage : ./pkill.sh <process name>"
else
get_proc=`ps -e -o pid,command | grep $1`
echo $get_proc > get_it
get_pid=`gawk -F" " '{ print $1 }' get_it`
kill -9 $get_pid
fi
(Скрипт взят непосредственно с http://www.linuxweblog.com/kill-process-name, но здесь он вставлен для потомков, потому что я ненавижу находить мертвые ссылки в ответах на сайтах StackExchange.)
Надеюсь это поможет!