たとえば、実行時間の長い冗長なtar cvf /backup/backup.tar
があります。 画面に大量のテキストを出力するコマンド*。必ずしもすべての出力を常に表示する必要はありません。テキスト出力を停止し、他の処理を行ってから、テキスト出力に戻って「再開」し、バックアッププロセスの進行状況を確認したいと思います。私はそれが次のように動作することを期待していました
/files/big_file_1
/files/big_file_2
/files/big_file_3
# Ctrl+s
# Do other stuff
# Ctrl+q , notice big jump in progress
/home/user/.bash_history
/home/user/small_file_1
/home/user/small_file_2
/home/user/small_file_3
...
Ctrl + sは画面への出力を停止します(そしてCtrl + qは画面への出力を再開します)が、Ctrl + zはプロセスを一時停止し、PS1プロンプトに戻ります。私の質問は、Ctrl + sはコマンドを実行し続けますか?
前述のtar
の間に コマンドを実行すると、最後のファイルTARredを強調表示して、数分間そのままにします。Ctrl+ qを押すと、次のファイルが同じディレクトリにあるか、少なくとも比較的近いディレクトリにあるように見えます。
* WindowsでPuttyを使用しているため、Windows / Unixの標準端末と動作が異なる場合は、お詫び申し上げます。
承認された回答:
私の質問は、Ctrl + sはコマンドを実行し続けますか?
はい、システムバッファがいっぱいになり、プロセスがブロックを開始して端末に書き込めるようになるまでです。したがって、無期限に実行されることはありません。さらに、出力がブロックされているため、同じ端末で他の何かを実行することはできません。
戻ってくることを可能にしながらプログラムから切り替えるには、次の選択肢があります。
- 側面で別の端末を実行します(別のPutty、別のSSH接続)
-
screen
を実行します またはtmux
同じ端末内で複数の「ウィンドウ」を多重化する - 出力をファイルにリダイレクトし、バックグラウンドでコマンドを実行してから、必要に応じてファイルを確認します。
tar cvf ... > /tmp/tar.out &
およびtail /tmp/tar.out