ターミナル(T1
)で実行されているプロセスは5つあります。これらのタスクはすべてバックグラウンドで実行されますが、多くの出力が生成されます。
それでは、別の端末(T2
)でコマンドを使用してそれらの1つを終了したいと思いますKILL pid
。その後、数秒後に60
同じプロセスを再起動しようとします(明らかに別のPIDが得られます)。
私のスクリプトは次のとおりです
KILL 1524
sleep 60
myProcess
問題は、それ以降もT2
プロセス出力によって端末が使用できなくなることです。同じ操作をやり直すには、別の端末を実行する必要があります。プロセスを強制的に開始することは可能ですかT1
?
答え1
だからあなたはできる出力が別の端末に表示されるようにしてください - 本当にそれをしたいかどうか疑問です。そのために:
出力したいターミナルのttyを見つける最も簡単な方法はを実行することです
tty
。次のように印刷する必要があります/dev/pts/42
。他の端末で以下を実行してください
command > /dev/pts/42 &
。 stderrとstdoutの両方を実行するには、次のようにします。command > /dev/pts/42 2>&1 &
これは権限のために同じユーザーにのみ機能し、入力をリダイレクトしません。入力のリダイレクトはシェルと戦うので、実際には機能しません。
より良い解決策は、出力をファイル()にリダイレクトしてからなどをcommand > outfile
使用して表示できることですless
。tail
または、端末内で複数のセッションを使用screen
/実行します。tmux