【问题标题】:Command "jobs" doesnt work on terminal (shell,bash)命令“jobs”在终端上不起作用(shell,bash)
【发布时间】:2012-11-23 15:23:45
【问题描述】:

我只是想制作一个涉及命令“jobs”的简单脚本,但它似乎不起作用,它甚至没有被“man”识别......不知道发生了什么:S。

【问题讨论】:

  • jobs 是一个 shell 内置命令 - man bash 来阅读它。它是如何“不工作”的?您期待什么与您正在观察什么?
  • 它应该向我显示暂停或在第二层的工作状态,或者我的老师说...
  • 不确定“在第二个平面”是什么意思,但我想补充一下 - jobs 将向您显示背景和暂停的作业由这个 shell 实例启动。因此,如果您的脚本没有在后台启动任何内容(即some_command &),则jobs 将没有输出。它不会报告父 shell 启动的内容。
  • 将其作为解决方案发布。就是这样:)

标签: bash shell command jobs


【解决方案1】:

安装 POSIX 手册页。该软件包应命名为“manpages-posix-dev”或类似名称。

【讨论】:

    【解决方案2】:

    我认为没有名为 jobs 的 linux / unix 命令。

    ubuntu 上的 which jobssudo apt-get jobs 都找不到。

    如果它是本地二进制文件,请检查您的 $PATH 以确保它已包含在内。

    【讨论】:

    • type jobs 可能会找到它,这取决于您使用的 shell。
    【解决方案3】:

    您需要运行一个交互式 shell,jobs 命令才能工作 - 这种方式的作业控制由用户使用,而不是由脚本使用。

    您应该能够使用jobs -p 命令获取正在运行的后台任务(作业)的 pid,这可能会完成您正在尝试做的事情。这应该显示子进程的所有 pid,可以单独检查/监控。

    【讨论】:

      【解决方案4】:

      jobs 是一个 bash 内置函数(如果你想一想,拥有一个控制从 shell 启动的作业进程的系统命令实际上并没有什么意义)。您可以通过以下方式找到有关该命令的更多信息:

      【讨论】:

        【解决方案5】:

        jobs 只会报告由运行jobs 的shell 实例产生的后台和/或挂起进程。因此,在脚本中使用它的用处有限(但对于仅向脚本用户报告正在发生的事情应该没问题),因为只有在脚本中较早产生并且以某种其他方式被后台或暂停的东西才会被知道到运行脚本的 shell 实例。

        【讨论】:

          【解决方案6】:

          使用 ps 命令从 shell 脚本中查找您的进程

          【讨论】:

            猜你喜欢
            • 2017-01-12
            • 1970-01-01
            • 1970-01-01
            • 2016-09-15
            • 1970-01-01
            • 2012-11-27
            • 1970-01-01
            • 2021-06-06
            • 2015-03-14
            相关资源
            最近更新 更多