从命令提示符处杀死wine中运行的进程

时间:2010-12-29 18:37:18

标签: java linux wine

(我不是Linux或Wine专家......他们是由一个IT人员设立的...我只是一个java人) 我正在研究一个在Linux上运行的java应用程序。它产生了几个做同样事情的线程,即产生进程(java.lang.Process),一些Linux,一些Windows通过wine。在葡萄酒电话会议期间,我的一些主题将无限期挂起。

因为我有几个线程调用相同的linux / windows应用程序,我不能只是为了葡萄酒的ps输出并杀死它,因为我可以杀死很好的葡萄酒过程。

做了一些谷歌搜索,并通过反射我能够从过程中得到pid,但它不对应于使用ps的Linux pid,所以我认为这是一个在酒中运行的pid。

(最后问题......) 有没有办法杀死在葡萄酒中运行的进程,引用它的pid?

4 个答案:

答案 0 :(得分:4)

Wine,至少在最近的版本中,确实带有自己的taskmgrtaskkill,类似于Windows上同名的程序。

答案 1 :(得分:1)

要终止所有Wine进程,请使用wineserver -k(所有这些都在同一个WINEPREFIX环境中)。

要杀死特定进程(按winedbg --command "info proc"列出),您可以通过以下方式运行winedbg

然后按以下方式运行winedbg

$ winedbg
Wine-dbg>info proc
 pid      threads  executable (all id:s are in hex)
 0000000d 4        'taskmgr.exe'
 0000000e 4        'services.exe'
 0000001a 3        \_ 'plugplay.exe'
Wine-dbg>attach 13
0x9f68ad05 read$UNIX2003+0x5 in libsystem_kernel.dylib: call    0x9f68b40c _sysenter_trap in libsystem_kernel.dylib
Wine-dbg>kill
Wine-dbg>quit

由于attach接受十进制值,您需要将其pid从十六进制转换,这是Bash shell中的示例:

echo $(( 0x0000000d ))

答案 2 :(得分:0)

如果kill -3 PID其中PID是您感兴趣的Wine进程的id,那么您将在启动该进程的控制台上获得JVM线程转储。此转储将包含具有其当前状态的线程列表,并将包含nid字段,该字段等于ps -ef -T输出中的SPID字段。

答案 3 :(得分:0)

如果您太沮丧,请尝试使用Windows任务管理器。它应该能够将葡萄酒过程视为原生葡萄酒。 (当然它根本不会看到其他的,所以总数不会达到100%)。