多くの場合、数千行までの内容のファイルに対して誤ってcat
コマンドを実行します。
cat
コマンドをkillしてみます Ctrl+ C または Ctrl+Z、しかしどちらもcat
の合計出力がターミナルに表示されて初めて有効になるので、cat
が完全に実行されるまで待つ必要があります。
待機を回避するより良い解決策はありますか?ファイルのサイズが最大で100MBになることもあり、それを待つとイライラするからです。
tcsh
を使用しています。
問題のファイルに本当に大量のデータが含まれている場合、信号を送信すると、終了する前に実際にcat
に到達する可能性があります。実際に観察しているのは、端末の有限の速度です。cat
はデータを端末に送信し、端末がすべてを表示するまでに少し時間がかかります。
通常、出力ウィンドウごとに出力ウィンドウ全体を何らかの方法で再描画する必要があることに注意してください(つまり、ウィンドウの内容を1行上に移動し、次の行を下部に印刷します)。これを簡単な方法で行った場合よりも速くする手法とアルゴリズムはありますが、それでもまだ時間がかかります。
したがって、出力をできるだけ早く削除したい場合は、通常、実際の再描画は行われないため、ターミナルウィンドウを非表示にするです。グラフィカル環境では、これはウィンドウを最小化するか、別の仮想デスクトップに切り替えるか、Linux仮想コンソールで別の仮想デスクトップに切り替えるだけです((Ctrl +)Alt + Fx)。
また、低速のネットワークリンク(GSM接続を介したSSHなど)でこれを実行した場合、cat
が信号によって強制終了される前に、端末の速度が低下するため、出力が大幅に少なくなることにも注意してください。もうボトルネックになることはありません。
これは、バッファリングの問題よりも、ターミナルの設定方法に関係していると思います。 stty -a | grep intr
の出力を確認します。出力行にintr = ^C;
があるはずです。 Ctrl-C tty
/pty
で有効になっています。そうでない場合は、stty intr ^C
を使用して有効にできます。この行を.tcshrc
または.login
に追加して永続化します(または最初に変更する行を削除します!)。
失敗 Ctrl-C、SIGQUIT
を送信してみることもできます Ctrl-\。これが機能しない場合は、もう一度stty -a | grep quit
をチェックして、正しく設定されているかどうかを確認してください。
端末エミュレータの設定(使用している場合)も確認してください。このレベルでショートカットが設定されている可能性があります(コピーなどの場合)。 Ctrl-C pty
レベルに達していません。ショートカットは、デスクトップ環境またはウィンドウシステムの他の場所にも設定できます。
ターミナルエミュレータを使用している場合のLinuxでの良いテストは、Linuxコンソールに切り替えることです(Ctrl-Alt-F1)、そこにログインして、同じ動作が発生するかどうかを確認します。表示されない場合は、ウィンドウシステムまたはターミナルエミュレータに問題があることを示しています。
peterph で示唆されているように、pty
デバイスからデータが読み取られるまでの遅延に問題がある可能性があります。しかし、これが事実であり、実際にデータが表示されるまで数分待たなければならない場合は、端末エミュレータが確実にバッファリングしているwayデータが多すぎる(またはPCが非常に遅い)。答えは、ターミナルエミュレータの設定でそのバッファサイズを減らす方法を見つけるか、別のバッファを使用することです。
追加する価値がある何か;誤ってバイナリファイルをcat
した場合、私は通常、暴走cat
状況に陥ります。これのもう1つの影響は、端末設定を台無しにすることです(バイナリデータがさまざまな端末エスケープコードと一致する場合)。 tput
がインストールされている場合(通常はデフォルトです)、次のコマンドで再起動する必要を回避できます。
tput reset
これがtmux
オプションc0-change-interval
およびc0-change-trigger
用に設計されています。とにかく、再開可能なセッションにはスクリーンマネージャを使用する必要があります。
の Ctrl-O オプションは、110ボー日以来Unixにありました。長いASCIIファイルが遅い出力デバイスでダンプされ、ファイル全体がデバイスドライバーの出力バッファーに配置された場合、catの暴走コマンドは常に問題でした。 Ctrl-O バッファのフラッシュとフォローアップを開始します Ctrl-O フラッシュをオフに切り替えて、猫が通常の速度で読めるようにします。 Ctrl-O と入力すると、ファイル全体がフラッシュされ、すぐにコマンドプロンプトが返されます。
Linuxデバイスドライバーのコーダーがこの機能を引き続き追加する必要性を感じたかどうかは不明です。この機能は、デバイスドライバレベルで追加されました。 Ctrl-S そして Ctrl-Q 実装のみ可能でした。これを使用して、大量の小切手印刷を伴う大規模なデバッグ実行をダンプし、表示する必要がある場所まで下にスクロールしました。