我想在 Linux 中进行 telnet 会话时重定向我的串行端口。
我有一个嵌入式 Linux 盒子,它有一个串行控制台。对盒子进行 telnet 操作后,我可以输入串行控制台和 telnet 控制台。我想停止串行控制台访问或将其重定向到其他内容。从 telnet 控制台退出后,我应该能够再次访问串行控制台。请问有人可以建议一下吗?
我计划cat /dev/console > /dev/ttyp0
在 telnet 会话开始时放置。它解决了当 telnet 会话控制台打开时无法访问串行控制台,但当我退出 telnet 控制台并在串行控制台上键入某些内容时,对于 shell 命令-/bin/sh: command not found
(Shell 可能未运行?)的问题。
谢谢。
答案1
每个控制台都有一个与其关联的进程。您通常可以很容易地在进程列表中找到它们。在 Ubuntu 上它被称为getty
或agetty
。在其他系统上它可能是login
,或者它可能只是一个 shell 进程。
您所要做的就是禁用该进程来关闭串行端口。你不能杀死它,因为init
只会产生一个新的,但你可以暂停它:
kill -STOP <pid>
你<pid>
在哪里找到ps
.
然后,当您想重新启用它时,请重新启动它:
kill -CONT <pid>
或者,如果您希望它重新开始,请杀死它并让重生发生:
kill -KILL <pid>
当然,在离开telnet之前你要记得重新启动它。如果您想要更简单的东西,这取决于您的系统具有哪些实用程序。如果你有,cron
那么你可以设置一些东西来检查 telnet 是否已经消失(自上次查看以来)并重新启动串行终端。这会有点棘手,但有可能。如果您没有 cron,则启动某种后台进程,该进程会在 SIGHUP 上唤醒并重新启动。这可能更加棘手。