cp 大容量ファイルを /dev/null として保存し、サイズをゼロに減らします。

cp 大容量ファイルを /dev/null として保存し、サイズをゼロに減らします。

次の提案を見つけました。大きなファイルを削除しようとしていて、プロセスでファイルハンドルが開いている場合は、そのファイルを/ dev / nullにコピーする必要があり、サイズが0に縮小されます。

どのように動作しますか?それともこれが本当に効果があるのでしょうか?

クイック検索の後、「はい、完全に動作します」から「システム全体が爆発します」まで、矛盾する答えを見つけました。誰かが私を実現できますか?

ここでこの質問を見つけました。 https://syedali.net/engineer-interview-questions/

答え1

あなたはアドバイスを誤って読んでいます。大きなファイルをにコピーしないでください/dev/null。これは何らかの方法で影響を与えず、スペースがある場合はキャッシュに入れます。

cp bigfile /dev/null # useless

ファイルを削除してからコピーしないことをお勧めします。これ/dev/nullにより、ソース inode がそのまま残り、プロセスでファイルが開いている間はディスク領域が解放されません。

ファイルの内容を1に置き換えることをお勧めします。これにより、デザインタイムサイズが0/dev/nullの場合、/dev/nullファイルは0バイトに効果的に切り捨てられます。

cp /dev/null bigfile # works

cat /dev/null > bigfile # works

これらのコマンドを実行するためにシェルを使用する場合は必要ありません/dev/null。単純な空のリダイレクトは同じ効果を持ち、より効率的であるため、cat /dev/nullとにかく機能しません。

: > bigfile # better

> bigfile  # even better if the shell used supports it

答え2

短い答えは「いいえ」です。動作しません。

外国Unixには様々な味があります。一部これは役に立ちます。リンクを提供できますか?

これでテストできます。

  1. システムで2つの端末を開きます。
  2. root以外のユーザーへの大容量ファイルのコピー(例 /var/log/messages:)
  3. vi messages最初の端末でvi()を入力してください。
  4. cp messages /dev/null別の側面から。
  5. 最初の出口vi。

messagesそれでもそこにいるはずです。

(viは良い候補ではありません。(rm messages)ファイルを削除するとファイルが削除されます(少なくともUbuntu 16.04では)w.messages.swp

関連情報