Ubuntu Linux Bashでリモートでタスクを実行し(時間がかなり時間がかかる)、ファイルにnohup
リダイレクトしたいと思います。たとえば、次のようになります。stdout
nohup task > out.txt &
場合によっては、出力ファイルを見て作業の進行状況を確認したい場合があります。
cat out.txt
Bashが書き込みのためにファイルを開くたびにファイルの内容が空のように見えるので、私はまだこれを行う方法を見つけることができませんでした。
stdout
だから私の質問は: "共有"リダイレクトを許可するLinuxコマンドはありますか?
ベストアンサー1
Bashが書き込み用にファイルを開くたびに、ファイルの内容は空白のように見えます。
しかし、実際にはそうではありません。実際の状況は、バッファー出力 - 一定時間メモリに蓄積され、チャンクとしてファイルに書き込まれます。メモリバッファのサイズは数キロバイトに固定されています。各ファイル書き込みには比較的高いオーバーヘッドがあるため、これはパフォーマンスのために行われます。したがって、最初はプログラムの出力を見ることはできませんが、少しずつ出力されるのがわかります。これはbashとは関係ありません。
すぐに出力を表示するには、次のようにします。プログラムを開始 unbuffer
(からexpect
ソフトウェアパッケージ)。即時性のためにパフォーマンスを交換します。
2番目の問題は、cat
すでにエクスポートされた出力を表示し、ファイルの終わりに達するとすぐに終了することです。出力の追加中に出力を読み続けるには、次のようにします。tail
フォローモード。
nohup unbuffer task >out.txt &
tail -n +1 -f out.txt
終了するにはCtrl+を押します。代わりに、対応するフォローモードを使用できます(読み取りを中止するには+を押します)。Ctail
tail
less
F
CtrlC