2016-08-15 3 views
1

経由teeコマンドを送信しますは、私は2をホストするためにホスト1から<code>tee</code>コマンドを送信し、SSH

ssh [email protected] '/path/run |& tee myFile.txt' 

私はバイナリの出力がmyFile.txt

問題に追加するために得るように私はteeを使用します私はしばらくしてから、印刷物をたくさん持たずに私のローカルホストのコントロールを取り戻したいと思います。だから私はCtrl + Cを行う。これにより、host2上のプロセスは引き続き実行されますが、それは私が望むものですが、teeプロセス自体を停止するので、ファイルは読み込まれません。

|& tee myFile.txt'2>&1 myFile.txt' &に置き換えようとしましたが、役に立たなかった。

host1のセッションに対する制御を取り戻しながら、ファイルがhost2に引き続き埋め込まれるようにするにはどうすればよいですか?

答えて

1

いくつかのファイルに結果を記録する場合(nohupの内部でIOリダイレクトを使用する場合)、すべてのパイプラインをnohupに囲む必要があります。

ssh [email protected] 'nohup sh -c "/path/run |& tee myFile.txt" &' 

しかしnohupが、それは失敗する可能性があり、コマンドアリから端末を取り外すますのでご注意:引数は唯一COMMANDARGSあるので、それはそうshを使用することが良い方法である、シェル拡張を使用していません。便利なファイルに直接リダイレクトすることです:SO answerから

ssh [email protected] 'nohup sh -c "/path/run &> myFile.txt" &' 

インスピレーション。

0

プロセスをバックグラウンド処理するためのnohup、screenまたはtmuxを使用します。

+0

私は、 'ssh user @ host2 'nohup/path/run |&tee myFile.txt''と' ssh user @ host2' nohup/path/run 2>&1 myFile.txt 'を使ってみましたが、作業。それを起動した後にCtrl + Cを押すと、プロセスはhost2で実行を続けますが、ファイルは出力を記録しません。 – DevShark

+0

'nohup/path/run >> myFile.txt' –

関連する問題