Как я могу получить Windows PPID процессов, работающих на Cygwin? - PullRequest
0 голосов
/ 26 августа 2018

Мне нужно убить процессы Windows, которые были запущены программой, вызываемой из cygwin.

Вот что я делаю:

${wccoaDirNix}/bin/WCCILpmon.exe -proj ${projName} -user root: &

Этот процесс создает другой процесс Windows:

$ ps -W
      PID    PPID    PGID     WINPID   TTY         UID    STIME COMMAND
     1960       1    1960       1960  ?         197609 19:21:57 /usr/bin/mintty
     7316       0       0       7316  ?              0 19:21:57 C:\Windows\System32\conhost.exe
     1700    1960    1700       1576  pty1      197609 19:21:57 /usr/bin/bash
I   10760    9840   10760       7560  pty0      197609 19:25:47 /usr/bin/bash
       32   10760   10760         32  pty0      197609 19:26:28 /cygdrive/c/Siemens/Automation/WinCC_OA/3.14/bin/WCCILpmon
     6264       0       0       6264  ?              0 19:26:28 C:\Siemens\Automation\WinCC_OA\3.14\bin\WCCILpmon.exe
     8420       0       0       8420  ?              0 19:26:29 C:\Siemens\Automation\WinCC_OA\3.14\bin\WCCILdata.exe
     6336       0       0       6336  ?              0 19:26:29 C:\Windows\System32\conhost.exe
     2808       0       0       2808  ?              0 19:26:30 C:\Siemens\Automation\WinCC_OA\3.14\bin\WCCILevent.exe
     6784       0       0       6784  ?              0 19:26:30 C:\Windows\System32\conhost.exe
     2972       0       0       2972  ?              0 19:26:30 C:\Siemens\Automation\WinCC_OA\3.14\bin\WCCOActrl.exe
    11004       0       0      11004  ?              0 19:26:30 C:\Windows\System32\conhost.exe
     9536       0       0       9536  ?              0 19:26:31 C:\Siemens\Automation\WinCC_OA\3.14\bin\WCCILsim.exe
     7372       0       0       7372  ?              0 19:26:31 C:\Windows\System32\conhost.exe
     9128       0       0       9128  ?              0 19:26:31 C:\Siemens\Automation\WinCC_OA\3.14\bin\WCCOAui.exe
     3964       0       0       3964  ?              0 19:27:48 C:\Siemens\Automation\WinCC_OA\3.14\bin\WCCILdatabg.exe

Как я могу их убить?

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

ps -W | grep "WCC" | awk '{print $1}' | xargs kill -f;

Но это не работает должным образом, оно убивает все процессыв имени которого есть буквы WCС, и мне нужно завершить только дочерние процессы WCCILpmon.exe

Я также прочитал вопрос в cygwinlist об этой же проблеме

Иэто расстроило меня, нет ли способа это реализовать?

1 Ответ

0 голосов
/ 26 августа 2018

Поскольку вам нужно убить процесс НЕ cygwin, лучше использовать программу, специфичную для Windows.

Один из примеров:

https://docs.microsoft.com/en-us/sysinternals/downloads/pskill

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...