“bash:这个shell中没有作业控制”是什么意思?

新手上路,请多包涵

我认为它与创建新子进程的父进程有关,并且没有 tty。谁能解释引擎盖下的细节?即bash、进程创建等相关的工作模型?

这可能是一个非常广泛的主题,因此也非常感谢指向帖子的指针。我用谷歌搜索了一段时间,所有结果都是关于非常具体的案例,没有一个是关于幕后故事的。为了提供更多上下文,下面是导致“bash:此 shell 中没有作业控制”的 shell 脚本。

 #! /bin/bash

while [ 1 ]; do
    st=$(netstat -an |grep 7070 |grep LISTEN -o | uniq)
    if [ -z $st ]; then
        echo "need to start proxy @$(date)"
        bash -i -c "ssh -D 7070 -N user@my-ssh.example.com > /dev/null"
    else
        echo "proxy OK @$(date)"
    fi
    sleep 3
done

这一行:

bash -i -c "ssh -D 7070 -N user@my-ssh.example.com > /dev/null"

是“bash:no job control in this shell”的来源。

原文由 luanjunyi 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 715
1 个回答

您可能需要启用作业控制:

 #! /bin/bash
set -m

原文由 Marian 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题