【问题标题】:Run lynx -dump in background?在后台运行 lynx -dump?
【发布时间】:2009-05-28 15:56:37
【问题描述】:

我有一个 bash 脚本 mystuff 包含类似的行

lynx -dump http://example.com >tmpfile

并且脚本工作正常,包括这部分,除了,当我以非交互方式运行它时:

$ ./mystuff &
[1] 3712
$ jobs
[1]+ Stopped

作业已停止。我发现猞猁是罪魁祸首。即使直接从 bash 提示符运行此命令也会导致作业立即停止:

$ lynx -dump http://example.com >tmpfile &
[1] 1836
$ jobs
[1]+ Stopped

为什么 lynx 不在后台运行?我该如何解决这个问题?

编辑:

我使用 lynx 是因为我不想解析原始 HTML。 wgetlynx -dump 的区别在于 lynx 会渲染 HTML;它会隐藏所有标签,很好地排列文本等。

【问题讨论】:

    标签: bash background-process lynx job-control


    【解决方案1】:

    Lynx 想与您的终端对话,但不能,因此它会执行 SIGSTP(tty 输入)并等待您将进程置于前台。

    正如 mgb 上面所说:使用 wget。 wget -O tmpfile http://example.com 和上面的 lynx 做的事情一样。

    【讨论】:

    • 有没有办法伪造 tty,或者重定向它?我知道我可以使用 -term=ansi (例如)来强制终端类型。
    • 您必须使用 lynx 有什么特别的原因吗?您是否试图利用 lynx 将以文本模式呈现页面这一事实?在我的系统上w3m -dump 可以正常工作而不会产生 STOP 信号。
    • 我不知道 w3m,谢谢!我已经检查过了,看起来它会起作用。感谢您的解释和解决方法。
    • 根据我的经验,wget -Olynx -dump 并不等同。 wget 保留标记,而 lynx 转换为文本。这可能因平台/版本而异,因此需要注意。
    【解决方案2】:

    不是您要寻找的答案,但您可以改用wget 吗?

    【讨论】:

      【解决方案3】:

      在我的系统上,您的 lynx 命令按原样工作。试试这个,看看会发生什么:

      lynx -dump -term=xterm http://example.com >tmpfile &
      

      【讨论】:

        【解决方案4】:

        我们很幸运地运行了 lynx --source http_setting://whatever|bash。

        以 bash 身份运行允许后台进程绕过使用我的个人凭据运行且没有 tty 差异。

        【讨论】:

        • 谢谢,但这个答案没有抓住重点。 lynx -sourcewget 相同,它提供原始 HTML,然后您必须对其进行解析。我试图利用 lynx 中的 HTML 解析器来获得简化的、人类可读的文本。
        猜你喜欢
        • 1970-01-01
        • 2011-05-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-06
        • 2014-07-13
        • 1970-01-01
        相关资源
        最近更新 更多