Bash 将stdout重定向到正在运行的进程
我知道如何将stdout重定向到文件,但是否可以将stdout重定向到进程(linux环境) 例如,如果我通过“^Z”将一个活动SSH会话移动到后台,是否有办法在本地主机上启动另一个程序并将其标准输出重定向到SSH会话 谢谢 有时像这样的把戏Bash 将stdout重定向到正在运行的进程,bash,redirect,stdout,Bash,Redirect,Stdout,我知道如何将stdout重定向到文件,但是否可以将stdout重定向到进程(linux环境) 例如,如果我通过“^Z”将一个活动SSH会话移动到后台,是否有办法在本地主机上启动另一个程序并将其标准输出重定向到SSH会话 谢谢 有时像这样的把戏 echo "something" > /proc/pid-of-process/fd/0 有效,但如果它们链接到伪终端,则不会 所以,这里有一种方法可以满足你的需求 **将SSH连接配置为使用证书/无密码登录 创建命名管道(例如mkfifomypi
echo "something" > /proc/pid-of-process/fd/0
有效,但如果它们链接到伪终端,则不会
所以,这里有一种方法可以满足你的需求
mkfifomypipe
)tail-f mypipe | ssh-t-tuser@somehost.com
echo“ls-l”>mypipe
所以,如果你需要从另一个程序中导入内容,你只需要这样做
/my program>/path/to/mypipe
tail
的-f
选项对于防止SSH进程在管道为空时接收EOF是必需的。还有其他方法可以防止管道关闭,但我认为这是最简单的方法ssh
的-t-t
选项强制tty分配,否则它会抱怨,因为您的案例中正在通过管道传输stdin李>
最后,几乎肯定有一个更好的方法来做你想做的事情——如果这是严肃的/长期的,你应该考虑找到它。我能想到一些我会尝试使用命名管道玩的奇怪的游戏——但这并不好看。这几乎是不相关的,但我不能充分推荐这篇文章。它解释了下面命名管道解决方案工作的原因。