Answers:
您也可以使用Windows的WMI服务在没有Process Explorer的情况下进行操作。从命令提示符处运行以下命令:
WMIC path win32_process get Caption,Processid,Commandline
如果要将输出转储到文件中(使其更易于阅读),请使用/ OUTPUT开关:
WMIC /OUTPUT:C:\Process.txt path win32_process get Caption,Processid,Commandline
也可以通过使用任务管理器来实现。
打开任务管理器(通过CTRL-SHIFT-ESC,CTRL-ALT-DELETE或任何其他方法)。
对于Windows 7(可能是Windows XP):
对于Windows 8:
一列“命令行”将添加到当前显示的列中。
使用PowerShell进行救援。
找:
Get-WmiObject Win32_Process -Filter "name = 'perl.exe'" | where {$_.CommandLine -eq '"C:\strawberry\perl\bin\perl.exe" t/Server_PreFork.t'}
并杀死作为奖励:
Get-WmiObject Win32_Process -Filter "name = 'perl.exe'" | where {$_.CommandLine -eq '"C:\strawberry\perl\bin\perl.exe" t/Server_PreFork.t'} | ForEach-Object { Invoke-WmiMethod -Path $_.__Path –Name Terminate }
您可以直接从powershell或ps1(如果已进行系统设置)运行它。我详细介绍了我使用Powershell以及其他PowerShell技巧杀死僵尸时不受限制的脚本设置...
如果该进程已经在运行并且不会很快终止,那么使用先前的答案是很好的。但是,如果您需要这样做(就像我一样),可能进程会多次启动和/或迅速终止,或者可能会在较长时间内记录日志,因此可以使用Process Monitor来实现。
基本上,它记录了系统中的各种事件,在这种情况下,我们可以只过滤“ Process Start”事件和我们要监视的进程的名称,如下所示:
然后,只需保持进程监视器运行,然后执行所有操作以使要记录的进程运行即可。您可以在“详细信息”列或“命令行”列中(取决于配置方式)看到命令行参数。例如:
当然,通过这种方式,您可以提取更多相关信息,例如什么是工作目录,在流程中传递了哪些环境变量等。此外,也很容易将结果导出到文件中。
使用CygWin时,如果我启动Python进程,这是命令行的示例:
c:\CygWin\bin\python2.7.exe /usr/local/bin/sudoserver.py
但是Process Explorer仅看到主要的exe文件:
(请注意“路径:[错误打开过程消息]”(请参阅EDIT-1))。的结果相同tasklist
:
C:\>tasklist | find "python" /i
python2.7.exe 5740 Console 1 15.312 KB
因此,到目前为止我唯一知道的技巧是通过CygWin Bash shell 找到它pgrep
:
Luis@Kenobi /cygdrive/c/
$ pgrep -f -l server.py
5740 /usr/bin/python2.7 /usr/local/bin/sudoserver.py
只要在Windows中CygWin不会出现任何问题,知道这一点很有用,并且您可以使用它运行许多POSIX和Python程序。
编辑:在Windows中,您似乎不需要管理员权限来访问任务列表。在CygWin中,您将需要他们能够查看管理员的进程(在我看来,这更合乎逻辑:完整的命令行中可能包含诸如密码之类的一些参数),因此我们必须在提升的管理员模式下运行CygWin Bash 。
EDIT-1:如果您以管理员身份运行Process Explorer,则不会发生此问题。感谢您的指点,@ Pacerier。
[Error opening process message]