【问题标题】:kill a process running in wine from command prompt从命令提示符杀死在 wine 中运行的进程
【发布时间】:2011-06-01 04:56:30
【问题描述】:

(我不是 Linux 或 Wine 专业人士……它们是由 IT 人员设置的……我只是一个 Java 人员) 我正在开发一个在 Linux 上运行的 java 应用程序。它产生了几个做同样事情的线程,即产生进程(java.lang.Process),一些Linux,一些通过wine的Windows。在 wine 调用期间,我的一些线程将无限期挂起。

因为我有多个线程调用相同的 linux/windows 应用程序,所以我不能只是 grep ps 输出的 wine 并杀死它,因为我可以杀死很好的 wine 进程。

做了一些谷歌搜索,通过反射,我能够从进程中获取 pid,但它与使用 ps 的 Linux pid 不对应,所以我认为它是在 wine 中运行的 pid。

(终于有问题了……) 有没有办法杀死在 wine 中运行的进程引用它的 pid?

【问题讨论】:

    标签: java linux wine


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回复。在尝试您的建议时,无法识别 pid。 -bash-3.2$ kill -3 5245 -bash: kill: (5245) - 没有这样的进程虽然这与我在我的 OP 中的评论一致“我能够从进程中获取 pid,但它不对应一个使用 ps 的 Linux pid”,再看一遍我想我可能走错了路。或许还需要更多细节……在进程最初启动后,我生成了另一个线程,该线程使用缓冲区传输进程的输出流。 ...
    • 当进程返回一个结果让我知道它已经完成时,我然后等待执行流传输的线程完成。执行流传输的线程实际上是挂起发生的地方(如果发生的话)。我认为进程输出流以某种方式没有让缓冲区知道它应该完成(通过返回 -1 读取的字节数),因此它在读取操作时被阻塞。这实际上是我想要杀死的,但我发现进程 pid 可能没有指向任何东西,因为进程已经完成。 ...
    • 我假设挂起的流传输会导致进程仍然处于活动状态。我想我又回到了某种 java 解决方案,如果有的话。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        要杀死所有 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 ))
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-11-21
          • 1970-01-01
          • 2014-05-18
          • 1970-01-01
          • 1970-01-01
          • 2011-11-21
          相关资源
          最近更新 更多