しばらく前に、tty
別々の端末ウィンドウで複数のセッションを実行する際に問題が発生しました。高価なディスクアクセスコマンドを実行し、そのコマンドが返されるのを待っています。同時に、私はtty
グラフィックデスクトップ環境内の別のウィンドウで別のセッションで作業していました。
誤ってディスクアクセスコマンド(デフォルトではコマンド)を実行している端末に焦点を当て、端末に次のようにcp
入力しました。私は別のウィンドウに入力すると思いました。
↑Enter
に基づいてこの問題私はデータがSTDIN
実行されるとすぐに最初のコマンドが返されるのを待つデータストリームバッファにあることを知っていますcp
。ご存知のように、私はコマンドをもう一度実行するように言いました:/。
質問
時間がかかります(このコマンドを返すのに30分以上かかります)、bashが完了しているプロセスを再実行する前にこれらの文字をバッファからフラッシュする方法はありますかSTDIN
?tty
それとも、別のbashインスタンスのファイルストリームバッファからデータをフラッシュすることに加えて、私が待っているプロセスが完了するとすぐにデータ評価を防ぐ他の方法はありますか?
答え1
あなたのttyに対応するnoflsh
フラグがオフになっている場合は確認できます
stty -a < /dev/pts/whatever | grep -e -noflsh
他のttyで実行されますが、デフォルトではオフになっています。これにより、入力中断、終了、または停止文字が入力キューをフラッシュします。Ctrl-Zしたがって、を入力すると、fg
現在実行中のコマンドが中断され、入力が更新され、次のコマンドが再開されます。
答え2
おそらくbashにSIGSTOPを送信して何もしないようにし、作業が完了したらbashにSIGKILLを送信する必要があります。
SIGSTOPは、bashが操作が完了するのを待つのを防ぎます。それ以外の場合はゾンビ状態になります。 SIGKILLの初期化後、ミッションの規模が再調整され、ゾンビが消えます。