GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana mengatasi statistik penggunaan disk yang tidak menentu dari du (perintah Linux)

Baru-baru ini di kotak server Linux saya, salah satu partisi disk penuh dan harus menghapus 100-an MB file besar untuk mengosongkan ruang. Setelah mengosongkan ruang, partisi masih menunjukkan penuh dan tidak ada ruang kosong untuk menyimpan file saya. Kemudian saya terkejut melihat perbedaan di bawah ini:

Perintah penggunaan disk (du) menunjukkan ruang yang digunakan hanya 11G!

-bash-3.2# du -chs /myhome/
11G     /myhome/
11G     total
-bash-3.2#

Perintah di atas tidak menyertakan file dan direktori titik tersembunyi. Gunakan perintah di bawah ini untuk menemukan penggunaan disk oleh file dan direktori titik tersembunyi juga.

-bash-3.2#du  -sch .[!.]* /myhome/*

Jika Anda masih ingin membuat daftar file yang tepat dan jalur absolutnya, gunakan perintah di bawah ini:

-bash-3.2# du -h -x /myhome/*

Tetapi perintah df ditampilkan sebagai partisi disk /myhome/ sebagai penuh!!!

-bash-3.2$ df -h
Filesystem           	 Size  	Used 	Avail 	Use% 	Mounted on
/dev/cciss/c0d0p8      	20G  	  14G  	4.7G  	75% 	/
/dev/cciss/c0d0p9    	 9.7G 	 1.3G  	8.0G  	14% 	/tmp
/dev/cciss/c0d0p3    	 30G	 4.3G    24G  	16% 	/usr
/dev/cciss/c0d0p10        44G     41G     0G  	100% 	/myhome
/dev/cciss/c0d0p6    	  30G     27G  	670M  	98% 	/var
/dev/cciss/c0d0p5    	  30G     20G  	8.0G  	72% 	/opt
/dev/cciss/c0d0p2   	   78G    21G    54G  	28% 	/export
/dev/cciss/c0d0p1   	  4.9G    173M  4.5G   	4% 	/boot
tmpfs                	 7.9G  	 0  7	.9G   	0% 	/dev/shm
tmpfs              	 491M   61M  	431M  	13% 	/var/lib/ganglia/rrds

Sekarang tantangannya adalah mencari tahu di mana ruang yang tersisa? Apakah itu tersembunyi di suatu tempat?

Gunakan perintah LSOF untuk menemukan file yang dibuka

Anda mungkin telah menghapus beberapa file, tetapi prosesnya akan tetap terbuka. Sampai Anda menutup file-file itu, ruang tidak akan dikosongkan. Di bawah perintah “lsof”  akan memberi tahu Anda file terhapus mana yang masih dibiarkan terbuka!

-bash-3.2# /usr/sbin/lsof | grep deleted |grep /myhome
java      10249            ramya    1u      REG             104,10 45866276291    4645619 /myhome/var/container.log (deleted)
java      10249            ramya    2u      REG             104,10 45866276291    4645619 /myhome/var/container.log (deleted)

Sekarang Anda akan memiliki beberapa petunjuk bukan? Ya, file /myhome/var/container.log yang telah dihapus masih terbuka dengan id proses :10249. Sekarang masuk ke direktori id proses yang sesuai di /proc seperti yang ditunjukkan di bawah ini:

-bash-3.2# cd /proc/10249/fd/

Buat daftar file untuk melihat pengelola file yang menautkan ke file yang dihapus.

-bash-3.2# ls -lrt | grep /myhome/
lrwx------ 1 ramya ramya 64 Feb 13 14:04 2 -> /myhome/var/container.log (deleted)
lrwx------ 1 ramya ramya 64 Feb 13 14:04 1 -> /myhome/var/container.log (deleted)

Sekarang hapus file handler yang sesuai untuk mengosongkan ruang menggunakan perintah di bawah ini:

-bash-3.2# cat /dev/null > /proc/10249/fd/1
-bash-3.2# cat /dev/null > /proc/10249/fd/2

Perhatikan bahwa inode akan tetap terbuka, tetapi sekarang panjangnya 0.

-bash-3.2# /usr/sbin/lsof | grep deleted |grep /myhome
java      10249            ramya    1u      REG             104,10 0    4645619 /myhome/var/container.log (deleted)
java      10249            ramya    2u      REG             104,10 0    4645619 /myhome/var/container.log (deleted)

Sekarang periksa partisi disk untuk membuat Anda tersenyum.

-bash-3.2# df -h |grep /myhome
/dev/cciss/c0d0p10     44G   12G   30G  28% /myhome

Linux
  1. Cara Menghapus Perintah Tertentu Dari Riwayat Bash Di Linux

  2. Bagaimana Cara Mendapatkan Penggunaan Disk Dari Baris Perintah?

  3. Perintah Linux df

  1. Linux – Bagaimana Cara Meminimalkan Penggunaan Ruang Disk?

  2. Bagaimana Memantau Penggunaan Jaringan dengan nload di Linux?

  3. Menentukan penggunaan disk di Linux menggunakan perintah "du"

  1. Cara Memeriksa Penggunaan Ruang Disk di Linux

  2. Cara mengkloning disk dengan perintah Linux dd

  3. Cara Memantau Penggunaan Jaringan dengan nload di Linux