私はnohup
バックグラウンドでリモートサーバーにコマンドを実行し、nohup.out
ファイルを使用して進行状況を確認するために使用します。 1行(最後の標準出力)のみが含まれているため、書き換えるようにnohup
設定できますか?nohup.out
答え1
コメントから、ユーザーは出力ファイルを確認してから再確認する前に空にすることを望むようです。
これを行うには、プログラムを起動して出力ファイルに>>
リダイレクトします。
$ somecommand >>logfile &
logfile
その後、好きなように読んでください。ファイルを空にするには、次を実行します。
$ >logfile
これにより、ファイルは切り捨てられますが、そのまま残ります。次に、プログラムが出力ファイルに書き込むと、ファイルの先頭に書きます。
>>
「追加モード」でファイルを開くために使用します。これは、ファイルへの新しい書き込みが常にファイルの(現在の)最後に発生することを意味します。
ファイルを使用し>
て切り取ると、ファイルの新しい書き込みが元のファイルの場所で発生します。これは、ファイルの先頭と新しいコンテンツの間の領域がヌルバイトで埋められることを意味します。
答え2
nohup
リダイレクトなしで使用すると、nohup.out
ファイルがappend mode
。
これがコマンドの確認後にファイルが切り捨てられる理由です。
> nohup.out
ファイル長を 0 に設定し、プログラムの後続の出力をnohup.out
ファイルの先頭に書き込みます。
上記の質問に対する答えはまさにこれであり、これはうまくいきます。これは、実行の現在の状態を調べた後にファイルの内容が意味を持たない長い出力に役立ちます。
質問が示すように、プログラムの出力は1行だけなので、次のaのrm nohup.out
呼び出しは、> nohup.out
削除後にファイルが存在しないという唯一の違いがある結果を提供します。それ以外の場合は、長さ0のファイルが残ります。
答え3
nohup
外部および/またはシェル固有の実装には、要件を満たすオプションはありません。いくつかの代替アイデア:
リダイレクトを通じてファイルを切り捨てます。それは次のとおりです
nohup firefox 2>&1 > nohup.out &
。通常は同じことですが、手動で行われます。rm
新しいコマンドを開始する前にファイルを保存してください。それは次のとおりです。rm nohup.out; nohup firefox 2>&1 &