次の提案を見つけました。大きなファイルを削除しようとしていて、プロセスでファイルハンドルが開いている場合は、そのファイルを/ 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には様々な味があります。一部これは役に立ちます。リンクを提供できますか?
これでテストできます。
- システムで2つの端末を開きます。
- root以外のユーザーへの大容量ファイルのコピー(例
/var/log/messages
:) vi messages
最初の端末でvi()を入力してください。cp messages /dev/null
別の側面から。- 最初の出口vi。
messages
それでもそこにいるはずです。
(viは良い候補ではありません。(rm messages
)ファイルを削除するとファイルが削除されます(少なくともUbuntu 16.04では)w。.messages.swp