「Ctrl + c」を使わずに「tail -f」モードを終了するには?

「Ctrl + c」を使わずに「tail -f」モードを終了するには?

これを行うときにプロセスを終了せずにtail -f filenameモードを終了するにはどうすればよいですか?Ctrl+c

私が望むものはqtop

プロセスを終了することは何かを終了する良い方法ではないと思うので、この質問は疑問に思います。

答え1

コメントで述べたように、このプロセスCtrl-Cは終了しませんtail。これはSIGTERMまたはSIGKILL信号(悪名高い...)を送信することによって行われます。転送モードを終了して終了するように-9SIGINTを送信します。tail

参考までに、より良いツールは次のとおりです。

less +F filename

では、lessボタンを押してCtrl-C早送りモードを終了し、ファイルをスクロールしてもう一度F押すと早送りモードに戻ります。

気づくless +Fより良い選択肢として、多くの人が擁護tail -f。これら2つのツールの違いと考慮事項については、以下の回答をお読みください。`tail -f`は`less + F`よりも効率的ですか?

答え2

私が望むのは、上のqのような一般的な終了方法です。

それはControlC:)

プロセスを終了することは何かを終了する良い方法ではないと思うので、この質問は疑問に思います。

^C( ControlC) 送る知能を知らせるこのプロセスでは、次のように定義されます。

ユーザーがプロセスを中断しようとすると、プロセスを制御するターミナルはSIGINT信号をプロセスに送信します。

これがあなたがここでやりたいことですtail。 Interrupt 。目的のタスクを実行する他の方法はなく(「クールに」テールを終了)、他の答えは他の方法tailで停止する方法を提供しますが、それほど良くありません。

Press は^CLinux で作業を中断しようとします。これは完全に正常な現象です。プロセスがタスクを実行していてプロセスが終了するようにしていない場合は、「悪い」唯一の側面です。効果はプロセスに残ります。プロセス。たとえば、^Cコマンドの途中にmake部分的にコンパイルされたソフトウェアが残っていますが、大丈夫です。追加の実行makeにより、ソフトウェアはクリーンアップまたは中断された場所から再起動されます。

答え3

tail -fCtrl cファイル名、プロセスを終了せずにモードを終了する方法

あなたはそうすることはできません。たぶんあなたは走りたいかもしれませんtail -f somefile | less

Ctrl c信号はttyサブシステム(およびシェル)によって解釈され送信されます(SIGINT参照信号(7)そして個人有限公司(7)...).バラよりttyが公開されました

答え4

機能があるとしましょう。

function prll(){
..... 
pkill -9 -x tail
}

関数に従って尾を実行するとします。

tail -n 1 -f file | 
pv -l > /dev/null | 
prll file

echo !!done!!

結論として答えはこうです。

pkill -9 -x tail

関連情報