ある端末から別の端末のプロセスを実行する方法

ある端末から別の端末のプロセスを実行する方法

ターミナル(T1)で実行されているプロセスは5つあります。これらのタスクはすべてバックグラウンドで実行されますが、多くの出力が生成されます。

それでは、別の端末(T2)でコマンドを使用してそれらの1つを終了したいと思いますKILL pid。その後、数秒後に60同じプロセスを再起動しようとします(明らかに別のPIDが得られます)。

私のスクリプトは次のとおりです

KILL 1524
sleep 60
myProcess

問題は、それ以降もT2プロセス出力によって端末が使用できなくなることです。同じ操作をやり直すには、別の端末を実行する必要があります。プロセスを強制的に開始することは可能ですかT1

答え1

だからあなたはできる出力が別の端末に表示されるようにしてください - 本当にそれをしたいかどうか疑問です。そのために:

  1. 出力したいターミナルのttyを見つける最も簡単な方法はを実行することですtty。次のように印刷する必要があります/dev/pts/42

  2. 他の端末で以下を実行してくださいcommand > /dev/pts/42 &。 stderrとstdoutの両方を実行するには、次のようにします。command > /dev/pts/42 2>&1 &

これは権限のために同じユーザーにのみ機能し、入力をリダイレクトしません。入力のリダイレクトはシェルと戦うので、実際には機能しません。

より良い解決策は、出力をファイル()にリダイレクトしてからなどをcommand > outfile使用して表示できることですlesstailまたは、端末内で複数のセッションを使用screen/実行します。tmux

関連情報