(我怀疑这确实是一个关于 MS-Windows 的问题,但我认为我在这里比在其他 SO 网站上更有可能得到合理的答案)。
在 WSL 中(我正在运行 Ubuntu),如果我启动 MS-Windows 可执行文件,我会在 $! (我可以在ps
等中看到)。然而:
- 这个 PID 在 MS-Windows 进程结束后仍然存在(我发现从 Linux 主机中删除它的唯一方法是kill -KILL)
- 在 Linux 中杀死 PID 对正在运行的 MS-Windows 进程没有影响
我正在编写一个脚本,它将启动 ssh 隧道,然后启动使用该隧道的 MS-Windows 可执行文件。能够检查 MS-Windows 进程是否仍在运行以及能够从 Linux 脚本终止 Windows 进程将具有重大好处。
我怎么做?
答案1
为此,您必须使用 Windows 工具。但好消息是,您可以从以下位置调用它们wsl
:)
只要它们在您的 中$PATH
,您就可以通过调用它(包括其.exe
后缀)来运行任何 Windows 二进制文件。
notepad.exe
要检查名为的进程bash
:
if tasklist.exe | grep notepad.exe > /dev/null ; then echo "notepad running"; fi
并杀死它:
taskkill.exe /F /IM notepad.exe
这假设只有一个进程实例以该名称运行。如果您需要更精细的信息,则必须解析tasklist.exe
输出以获取实际的 Windows PID 等内容。