【问题标题】:Windows 10, kill child process, can't get correct PIDWindows 10,杀死子进程,无法获得正确的 PID
【发布时间】:2016-12-29 12:19:18
【问题描述】:

如果重要的话,我会在 bash(git) 中使用 win10

我有 SH 脚本:

start node ./e2e-tests/apimocker_runner.js & pid1=$!
start npm run protractor -- --binaryPath=./build/appInstaller/win-unpacked/ & pid2=$!

sleep 10
kill $pid1
kill $pid2

当我尝试通过 pid 杀死进程时出现错误:

bash: kill: (6616) - No such process

据我所知,$! 我们有最后一个子进程 pid,但这不起作用。

因为然后我输入 bash:

start bash & pid=$!
echo $pid

$pid === 1000(例如)

但是如果我输入

echo $$

在上一个命令创建的 bash 中,我有另一个 pid

$$ ==== 1200(例如)

我还发现如果我输入 start bash 这会创建非子进程,但我想创建子进程并像 wait $pid 一样等待它们

我该怎么做?

【问题讨论】:

标签: node.js bash shell cmd terminal


【解决方案1】:

在一个bash 实例中设置的变量在另一个不是其子进程的bash 实例中不可见(只有在父进程通过export variable 将其公开给子进程时)。

【讨论】:

  • 但问题是:我在第一个 bash 中键入 kill -9 $myPid,我确实在其中启动了 bash
  • start bash 启动一个不同的 Bash 实例。 myPid 包含该 Bash 实例的 PID(假设 start 保留 PID;不确定这个细节)。如果那不是您想要的,请描述您真正想要的——没有按照您的预期执行的代码是一种糟糕的方式来解释您执行的预期。
  • 我有 2 个脚本,在另一台计算机上我应该启动 SH 脚本,然后这个脚本使用一些命令调用 2 个 bash 控制台,当我想杀死这 2 个进程 SH:启动节点 ./e2e-tests /... 启动 npm 运行量角器 .. 当我想要 2 杀死这个进程时,我检查,调用 bash 中的 pid,它与我在父 bash 中的 $pid 中的 pid 不同
  • 您正在添加新代码,而不是解释您的问题中的代码。
  • 我问如何 2 杀死进程,然后写下我需要的东西。在 2 bash 中启动脚本并杀死它们
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-12
  • 2019-03-23
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 2017-07-27
  • 1970-01-01
相关资源
最近更新 更多