微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么 jpsjava VM 列表程序在 cygwin 中给出与 cmd.exe 不同的答案?

如何解决为什么 jpsjava VM 列表程序在 cygwin 中给出与 cmd.exe 不同的答案?

当我在 cygwin 中运行 jps 时,我只看到 jps 本身被列出:

$ /cygdrive/c/tools/java/jdk-11.0.9.1+1/bin/jps.exe
10712 Jps

从命令提示符运行相同的命令会显示我当前的所有 java 进程:

C:\>c:\tools\java\jdk-11.0.9.1+1\bin\jps.exe
14864 AdcBridgeApplication
17664 Bootstrap
11876 IgsimulatorApplication
11988 AirWatchSimApplication
22328 Jps
16876 Eclipse

从 Windows cmd 窗口中启动 cygwin 也会阻止我看到完整列表:

C:\>"\tools\java\jdk-11.0.9.1+1\bin\jps.exe"
14864 AdcBridgeApplication
17664 Bootstrap
11876 IgsimulatorApplication
11988 AirWatchSimApplication
21076 Jps
16876 Eclipse

C:\>\tools\cygwin64\Cygwin.bat

wrightm1@NAL10-CP2MP13 ~
$ /cygdrive/c/tools/java/jdk-11.0.9.1+1/bin/jps.exe
12732 Jps

我知道 jps 需要运行 JVM 的权限才能列出它们,大概从 cmd.exe 启动 cygwin 会继承(工作)cmd.exe 进程的任何权限。

解决方法

这种看法不仅限于L。我刚刚在我的 Windows 机器上启动了一个 cygwin 控制台:

jps

当 Windows 正在运行时,肯定还有一些进程正在运行,但它们在 cygwin 中似乎不可见。原因是不同的 Windows 子系统还是其他原因超出了我的知识范围。但是,如https://superuser.com/questions/751688/is-there-a-way-to-show-windows-processes-in-cygwin-constantly

中所述,“cygwin ps 版本”似乎有一个特殊选项

所以我猜 $ ps aux PID PPID PGID WINPID TTY UID STIME COMMAND 1062 1052 1062 16328 pty0 1147632 22:52:00 /usr/bin/ps 1051 1 1051 13556 ? 1147632 22:51:56 /usr/bin/mintty 1052 1051 1052 4512 pty0 1147632 22:51:57 /usr/bin/bash $ 命令根本不支持 cygwin,因此它没有提供这样的选项。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。