GNU/Linux >> Linux の 問題 >  >> Linux

Linux の df ファイルの削除後に正しい空き領域が表示されない

解決策 1:

ファイル名を削除しても、実際にはファイルは削除されません。他のプロセスがファイルを開いたままにしているために、ファイルが削除されていません。そのプロセスを再起動または強制終了して、ファイルを解放してください。

使用

lsof +L1

削除された (リンクされていない) ファイルを使用しているプロセスを特定します。

解決策 2:

Ignacio が言及しているように、ファイルを削除しても、そのファイルに対して開いているハンドルを持つプロセスを削除するまで、スペースは解放されません。

それでも、プロセスを強制終了せずにスペースを再利用できます。ファイル記述子を削除するだけです。

最初に lsof | を実行します。ファイルを保持しているプロセスを特定するために grep を削除

[[email protected] log]$ /usr/sbin/lsof |grep deleted
java       8859   hudson    1w      REG              253,0 3662503356    7578206 /crucible/data/current/var/log/fisheye.out (deleted)

次に実行します:

cd /proc/PID/fd

次に

[[email protected] fd]$ ls -l |grep deleted
total 0
l-wx------ 1 hudson devel 64 Feb  7 11:48 1 -> /crucible/data/current/var/log/fisheye.out (deleted)

「1」はファイル記述子になります。ここで "> FD" と入力して、そのスペースを再利用します

> 1

ファイルを保持している他のプロセスがある場合は、操作を繰り返す必要がある場合があります。

解決策 3:

1 つの可能性は、削除したファイルがファイルシステム内により多くの参照を持っていることです。ハードリンクを作成した場合、複数のファイル名が同じデータを指し、そのデータ (実際のコンテンツ) は、そのデータへのすべての参照が削除されるまで無料/使用可能としてマークされません。ファイルを削除する前に、それらを stat (Links という名前のエントリ) するか、ファイルに対して ls -l を実行します (2 列目にある必要があります)。

ファイルが他の場所で参照されていることが判明した場合は、ファイルを ls -i して inode-number を見つけてから、-inum で検索を実行して、そのファイルへの他の参照 (同じファイルシステム内にとどまるために -mount も使用したい場合があります)。

解決策 4:

パーティションが root 用にのみディスク領域の特定の部分を予約するように構成されている場合、 df このスペースは利用可能として含まれません。

[[email protected]]# df -h
Filesystem            Size  Used Avail Use% Mounted on
...
/dev/optvol           625G  607G     0 100% /opt
...

ファイル/ディレクトリを削除してスペースが再利用された後でも、root 以外のユーザーは特定のパーティションに書き込むことができません。

root および root 以外のユーザーとしてデバイス上にファイルを作成しようとすることで、それがあなたのケースであるかどうかを簡単に確認できます。

さらに、

を実行してファイルシステム構成を確認できます。
tune2fs -l <device> | egrep "Block count|Reserved block count

実際の % を自分で計算します。

ルートのみの使用のために予約されているディスク % を変更するには、

を実行します。
tune2fs -m <percentage> <device>

解決策 5:

ファイルは、それを開くプロセスによってまだロックされています。スペースを解放するには、次の手順を実行します:

<オール>
  • sudo lsof | grep deleted を実行 ファイルを保持しているプロセスを確認します。結果の例:

    $ sudo lsof | grep deleted
    COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF      NODE NAME
    cron     1623 root    5u   REG   0,21        0 395919638 /tmp/tmpfPagTZ4 (deleted)
    
  • sudo kill -9 {PID} を使用してプロセスを強制終了します .上記のサンプルでは、​​PID は 1623 です。

    $ sudo kill -9 1623
    
  • df を実行 スペースがすでに解放されているかどうかを確認します。まだいっぱいの場合は、数秒待ってからもう一度確認してください。


  • Linux
    1. メディアファイルスペースを節約するための7つのLinuxコマンドラインのヒント

    2. Linuxでdfを使用して空きディスク容量を確認します

    3. Linux – Kali Linuxはインストールされていますが、ブートマネージャーに表示されませんか?

    1. Linuxで削除されたファイルを回復する方法

    2. Linuxデバイスは、サイズ変更後に正しいディスク容量を表示しません

    3. png.h ファイルが見つかりません - Linux

    1. Linux で空きディスク領域を消去するには?

    2. Linuxでハードドライブをいっぱいにする方法

    3. Linux で名前にスペースが含まれるファイルを cat できません