stdoutをファイルにリダイレクトする方法を知っていますが、stdoutをプロセス(Linux環境)にリダイレクトすることは可能ですか?
たとえば、アクティブなSSHセッションを「〜^ Z」を介してバックグラウンドに移動した場合、ローカルホストで別のプログラムを起動し、そのstdoutをSSHセッションにリダイレクトする方法はありますか?
ありがとう!
時々のようなトリック
echo "something" > /proc/pid-of-process/fd/0
動作しますが、疑似端末にリンクされている場合は動作しません。
だから、これがあなたがやりたいことをする一つの方法です。
mkfifo mypipe
)tailを使用してパイプから読み取り、それをSSHプロセスに渡します。例:
tail -f mypipe | ssh -t -t user@somehost.com
sshセッションに参加したいものはすべて、名前付きパイプに送信します。例:
echo "ls -l" > mypipe
したがって、別のプログラムからのものをパイプする必要がある場合は、
./my-program > /path/to/mypipe
完了です。
いくつかのメモ:
-f
オプションが必要です。tail
パイプが閉じるのを防ぐ方法は他にもありますが、これが私の意見では最も簡単です。-t -t
を強制するオプションssh
。そうしないと、stdinがパイプされているため、文句を言います。