nohup.outをオーバーライドする方法は?

nohup.outをオーバーライドする方法は?

私は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 &

関連情報