web-dev-qa-db-ja.com

du -sh * ls-lahよりもかなり多くの使用済みスペースを表示します

クライアントサーバーの1つのディスクスペースが不足しています。

ls -lahのコマンド/var/lib/mysqlの出力は次のとおりです。

drwx------  2 mysql mysql  16K Dec 30  2015 database_xyz

しかし、コマンドdu -sh *を使用して同じカタログ内のファイルサイズを確認すると、出力には次のように表示されます。

22G     database_xyz

これらのコマンドの出力が2つのまったく異なる結果を示すのはなぜですか?

ドライブに残っているのは2.2GBだけです。

root@jon-cust-lifeincity:/var/lib/mysql# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg-root    49G   44G  2.2G  96% /
tmpfs                1007M     0 1007M   0% /lib/init/rw
udev                 1002M  108K 1002M   1% /dev
tmpfs                1007M     0 1007M   0% /dev/shm
/dev/sda1             228M   16M  200M   8% /boot

編集:

database_xyzは実際にはカタログであり、ファイルではないことがわかりました。だから混乱は私の脳によって埋められました。

4
Orphans

あなたはあなたが言われていることについて誤解しているようです。 ls -lahコマンドは、現在のディレクトリの内容を一覧表示します。この特定のケースでは、それは/var/lib/mysqlです。とりわけあなたはこれを言われました

drwx------  2 mysql mysql  16K Dec 30  2015 database_xyz

あなたはこれがあなたに何を言っているのか誤解しています。

ディレクトリは、ディレクトリエントリのリストを含むフラットファイルのようなものと見なすことができます。 (単に)ディレクトリエントリは、ファイル名と、そのファイルがディスク上に存在する場所へのポインタです。この情報はディスクスペースを占有します。

drwx------  2 mysql mysql  16K Dec 30  2015 database_xyz

/var/lib/mysqldatabase.xyzというディレクトリエントリがあることを示しています。このエントリは、ファイルタイプd用であり、ディレクトリであることを示します。特に、ディレクトリ「file」のサイズは16Kです。

7
user9517

database_xyzファイルのサイズを知るには、次のように入力するだけです。

du -sh database_xyz

あなたは正確な結果を見つけるでしょう

2

lsは、ディレクトリサイズを見つけるための適切なツールではありません。ディレクトリではなくファイルに対してのみ機能します。

ディレクトリの詳細をリストしていることがわかります(最初のd char)

drwx------  2 mysql mysql  16K Dec 30  2015 database_xyz

代わりにduを使用してください。これは 同様の投稿 stackoverflowです。

1
Khaled