【问题标题】:Stopping Firefox process fails as PID is not present?由于 PID 不存在,停止 Firefox 进程失败?
【发布时间】:2019-11-09 18:07:26
【问题描述】:

目前有大约 50 个 URL,我们需要定期在工作中的壁挂式电视上随机查看这些 URL,还有 6 个 URL,它们必须始终处于可用状态。计划是从 50 个列表中随机选择一个 URL 并在 Firefox 中显示 30 秒,然后终止该进程并选择另一个 URL 在其前身位置自动打开,但始终在后台保持其他 6 个 Firefox 实例。 我遇到的问题是 PowerShell 代码显示了新 Firefox 实例的 PID,但 PID 不存在于任务管理器中,因此不会关闭,我们最终打开了太多页面。 不知道如何解决这个问题,欢迎提出任何想法,但首选与 Powershell 相关的解决方案。

标签旋转器无法工作,因为我们打开了太多标签。尝试实现一个基于时间的脚本,因此任何超过 30 秒但不到 1 分钟的 Firefox 实例都会被杀死,但这似乎总是会杀死所有 Firefox 实例,包括必须始终可用的 6 个实例。

部分 PowerShell 代码如下:

$bb = 1

$app = Get-Content $importPath |
       Get-Random -Count $bb |
       ForEach-Object {Start-Process -PassThru $_}

Wait-Process $app.Id

Write-Host $app.Id

Start-Sleep -Seconds 30

Stop-Process $app

当前脚本向我显示了 ISE 中“Write-Host $app.Id”的 PID,但是任务管理器中不存在该 PID,因此想知道这是否是与 POSH 相对的 Firefox 相关问题。 预期的结果是 PS 会终止显式 PID,并在 Firefox 中生成一个新的随机 URL。

【问题讨论】:

  • 我并不特别了解 Firefox,但是浏览器可执行文件简单地激活一个预先存在的进程甚至生成另一个进程并将工作异步委派给它并不少见,这意味着手头的进程是非常短暂,并不代表完成工作的实际过程。另外,请format your code and sample input/output properly
  • 对于您的用例,我会 [1] 使用 selenium 和其中一个 powershell 模块,或者 [2] 使用 AutoIT 或 AutoHotKey 来自动化每个 firefox 实例的 GUI。
  • 感谢您的建议,非常感谢。

标签: powershell firefox pid


【解决方案1】:

您可以尝试强制它在单独的进程中打开,方法是为 Firefox 的脚本旋转实例指定一个配置文件,并为您的 6 个页面指定一个单独的配置文件:Is there a way to force Firefox to launch in a new process?

这包括使用 -p 指定配置文件,并且显然单独的配置文件实例将是单独的进程。

使用 -P 手动创建一个类似“脚本”的配置文件和另一个类似“AlwaysOn”的配置文件,然后使用 -p 脚本 从您的脚本启动。使用 -p AlwaysOn 启动 6 个后台选项卡,看看这是否使进程分开。

【讨论】:

    猜你喜欢
    • 2022-06-25
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    • 2018-11-15
    • 1970-01-01
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    相关资源
    最近更新 更多