Подтвердить что ты не робот

Как убить процесс в cygwin?

Привет, у меня есть следующий процесс, который я не могу убить:

The process to be killed.

Я запускаю cygwin в windows xp 32 бит.

Я пробовал выдавать следующие команды:

/bin/kill -f 4760
/bin/kill -9 5000
kill -9 5000
kill 5000

Когда я пишу /bin/kill -f 4760, я получаю сообщение: "kill: не удалось открыть pid 4760".

Когда я пишу /bin/kill -9 5000, я получаю сообщение: "kill: 5000: Нет такого процесса".

Я просто не понимаю, почему этот процесс не может быть убит. Поскольку у него есть WINID, он не должен быть убит /bin/kill -f 4760?

надеюсь, что кто-то может помочь спасибо:)

4b9b3361

Ответ 1

Процесс скорее всего заблокирован из Windows. Ошибка, которую вы получаете, "не может открыть PID XXX" указывает на это. Чтобы подтвердить попытку убить его с помощью windows taskkill

    taskkill /PID 4760

Ответ 2

Как ни странно, в Cygwin работает следующее:

echo PID1 PID2 PID3 | xargs kill -f

Например:

ps -W | grep WindowsPooPoo | awk '{print $1}' | while read line; do echo $line | xargs kill -f; done;

Ответ 3

Различные программы Windows будут обрабатывать сигналы, посылаемые kill по-разному; они никогда не разрабатывались, чтобы справляться с ними так же, как программы Linux/Cygwin.

Единственный надежный способ для убийства программы Windows - использовать специальный инструмент Windows, такой как диспетчер задач или Process Explorer.

Тем не менее, если вы еще этого не сделали, вам может повезти с запуском вашего терминала Cygwin в режиме администратора (щелкните правой кнопкой мыши по ярлыку и выберите "Запуск от имени администратора" ).

Ответ 4

Создайте файл с именем killall.sh с этой строкой

ps -W | grep $1 | awk '{print $1}' | while read line; do echo $line | xargs kill -f; done;

Затем дайте ему разрешения на выполнение.

chmod 777 killall.sh

В вашем .bash_profile добавьте эту строку

alias killall="~/killall.sh"   (point it to the correct location)

Тогда вам просто нужно набрать "killall [name]"

Ответ 5

Метод, представленный @Donal Tobin, верен:

kill -f <pid>

Однако мне не нужно регистрироваться как администратор.

Ответ 6

killall.sh - убить по имени процесса.

#/bin/bash
ps -W | grep "$1" | awk '{print $1}' | xargs kill -f;

Использование:

$ killall <process name>

Ответ 7

Для меня эта команда не работает на Windows 10 в Cygwin:

$ kill -f 15916
bash: kill: (15916) - No such process

Вместо этого вы можете использовать следующие команды:

$ powershell kill -f 15916
$ netstat -ano | grep ':8080' | awk '{print $5}' | xargs powershell kill -f
$ netstat -ano | grep ':8080' | awk '{print $5}' | while read pid; do powershell kill -f $pid; done;
$ netstat -ano | grep ':8080' | awk '{sub(/\r/,"",$5) ; print $5}' | while read pid; do taskkill /F /PID $pid; done;
SUCCESS: The process with PID 15916 has been terminated.