【问题标题】:Not able to exit telnet session from sh shell command prompt无法从 sh shell 命令提示符退出 telnet 会话
【发布时间】:2015-07-30 05:18:20
【问题描述】:

我正在使用“BusyBox v1.22.1 (2015-02-09 13:48:39 IST) 内置外壳 (ash) " 并且我在后台模式下运行了一个脚本,该脚本在连续的 while 循环中运行,但有一些延迟。

然后,我输入了“退出”命令以从我启动了一个脚本的那个会话中退出。

但是,我无法从那次会议中出来。

有没有人知道这种类型的问题,或者busybox中是否需要任何配置来解决这个问题?

【问题讨论】:

  • 如果您准确地说明重现问题所必需的内容以及所发生的事情,将会很有帮助。我的猜测是,您需要在注销之前终止后台进程,使用 kill 或将其拉到前台然后使用 control-C。
  • 但是,我想在后台运行脚本时通过执行“exit”命令退出 telnet 会话。
  • 您希望在会话结束后让启动的脚本在后台继续运行?那么约阿希姆的答案就是要走的路!请注意,输出重定向是特定于 shell 的,因此如果他的方法不起作用,请查看 shell 的文档。

标签: linux sh telnet busybox


【解决方案1】:

这是因为子进程仍然与外壳连接,用于输入和输出。

如果你真的想独立于产生它的父shell运行子进程,那么你需要做两件事:第一是使用nohup命令启动程序,第二是重定向标准输入、输出和错误流。

所以做一些类似的事情,例如

$ nohup ./your_program >/dev/null </dev/null 2>&1 &

重定向运算符的工作方式如下:

  • &gt;/dev/null 将标准输出重定向到 /dev/null 特殊文件,该文件接受所有输出并丢弃它
  • &lt;/dev/null 重定向来自同一个特殊文件的标准输入,这会导致所有读取都给出文件结尾
  • 2&gt;&amp;1 使文件描述符 2(标准错误)与文件描述符 1(标准输出)相同,这意味着所有到标准错误的输出都将使用标准输出并自动重定向到 /dev/null

【讨论】:

    猜你喜欢
    • 2012-07-05
    • 2016-02-23
    • 1970-01-01
    • 2022-05-13
    • 1970-01-01
    • 2017-05-19
    • 2017-11-06
    • 2018-02-22
    • 1970-01-01
    相关资源
    最近更新 更多