Mengapa perintah "df" dan "du" menunjukkan penggunaan disk yang berbeda?

26

Saya tidak dapat mengakses sistem ubuntu di pc saya, pesan kesalahan: " sistem sedang berjalan dalam mode grafis rendah " dan saya mencoba beberapa perintah yang saya cari dari internet.

Saya menemukan masalah sepertinya tidak ada ruang disk yang tersedia. Saya menggunakan perintah " df " dan " du " untuk memeriksa, hasilnya adalah sebagai berikut:

du -j --max-depth=1
23G  ./home
3.3G ./usr 
...... 
28G

dan

df -Th 
filesystem   Type   size    used   available   use%    mounted on 
/dev/sda5    ext4   68G     68G    0           100%    /

bagaimana saya membersihkan sistem untuk ruang disk lebih banyak?

pengguna2068965
sumber
Pertanyaan dalam judul dan di akhir badan pertanyaan sangat berbeda. Beberapa jawaban terkait dengan satu pertanyaan, beberapa ke yang lain. Anda harus mengklarifikasi kebutuhan aktual Anda dan mungkin menerima jawaban juga.
Melebius

Jawaban:

50

Anda mungkin tahu bahwa Anda dapat menghapus file yang masih digunakan oleh beberapa aplikasi dan untuk aplikasi ini tetap tersedia. Itu karena file descriptor di / proc / filesystem disimpan terbuka.

Jadi jika ada deskriptor terbuka untuk file yang sudah dihapus, ruang yang ditempati oleh mereka dianggap sebagai digunakan oleh df(dan dfbenar), tetapi mereka tidak dapat diperhitungkan oleh dukarena tidak ada lagi nama file yang terkait dengan mereka.

Anda dapat menemukan semua file terbuka yang tidak ditautkan tetapi ditahan dengan:

# lsof | grep '(deleted)'
Dmitry Alexandrov
sumber
7
Ini baru saja menyelamatkan saya. Tidak tahu mengapa disk saya penuh, tetapi du mengatakan itu kosong. Pegangan file terbuka untuk file 8GB
Cheyne
5
Bagaimana saya bisa menghapus tautan?
Vikas Hardia
1
Terkadang Anda perlu menjalankan ini sebagai root untuk melihat file yang dihapus terbuka oleh proses pengguna lain.
Envek
1
Penyebab utama ini bagi saya pada akhirnya adalah spesifikasi file log yang salah di salah satu /etc/logrotate.dfile saya . Entri yang buruk tidak memiliki rutin postrotate, yang menyebabkan proses daemon saya tidak melepaskan file yang diputar / dihapus.
Dale Anderson
bagaimana saya bisa menghapus file-file yang tidak terhubung tetapi membuka?
zx1986
14

Bagaimana saya bisa menghapus tautan? - Vikas Hardia 22 Agustus '14 pada 5:46

Anda harus menemukan proses yang menangani pegangan file. Gunakan perintah Dmitry Alexandrov, di sana Anda melihat proses dan pid. Dalam kasus kami dan file log pernis "lama" adalah pembunuh ruang angkasa.

# lsof | grep '(deleted)'
[...]
varnishlo 13978       varnishlog    3w      REG              252,1 318448027646    5926973 /var/log/varnish/varnish.log.1 (deleted)
apache2   16801         www-data    2w      REG              252,1        64550   13110120 /var/log/apache2/error.log.1 (deleted)
[...]
# service varnishlog stop
[or if there is no service script]
# kill -11 13978 (the second number of the lsof command is the pid)
[or may be] 
# kill -9 13978

Jangan lupa untuk memulai layanan atau proses lagi jika itu adalah iblis atau layanan lain di komputer Anda. Jika Anda bisa, cukup reboot komputer;)

Octeny
sumber
9

Oke, mari kita periksa halaman manual:

df - laporkan penggunaan ruang disk sistem file

dan

du - memperkirakan penggunaan ruang file

Kedua alat itu dimaksudkan untuk proposal yang berbeda. Sedangkan dfuntuk menunjukkan penggunaan sistem file, duadalah untuk melaporkan penggunaan ruang file. dubekerja dari file saat dfbekerja pada level filesystem, melaporkan apa yang dikatakan kernel telah tersedia. Lanjutkan membaca halaman dumanual mendukung ini:

Ringkas penggunaan disk masing-masing FILE , secara rekursif untuk direktori.

katanya duberfungsi dengan file.

dfmenampilkan jumlah ruang disk yang tersedia pada sistem file yang berisi setiap argumen nama file. Jika tidak ada nama file yang diberikan, ruang yang tersedia di semua sistem file yang dipasang saat ini ditampilkan.

di sini mengatakan bahwa dftidak peduli dengan file tetapi filesystem itu sendiri.

Braiam
sumber
du penggunaan dapat dimodifikasi dengan karakter -x, untuk mengatakannya hanya menghitung file pada sistem file yang diberikan.
macetw
1

Cukup dikatakan:

Anda berlari dutanpa izin root. Sehingga tidak dapat memeriksa ruang yang tersedia di /proc, /mnt, dll, folder.

df menunjukkan total ruang yang digunakan & kosong masing-masing.

Jadi ketika Anda memeriksa sistem file root Linux, ambil dulaporan sebagai final.

Sekra Invos
sumber
0
df

Ringkas ruang disk kosong

Ini menampilkan jumlah ruang disk yang tersedia.

du

Ringkas penggunaan disk.

Ini menampilkan jumlah ruang disk yang digunakan.

Mitch
sumber
ya, tetapi dalam hasil "df -T", itu menunjukkan 68G digunakan. hari ini pagi ketika saya mencoba mengakses sistem ubuntu, masih memberikan pesan "sistem sedang berjalan dalam mode grafis rendah", tetapi ketika saya memeriksa penggunaan memori, perintah "df" dan "du" menunjukkan hasil yang masuk akal. Tapi apa masalahnya dengan "mode grafis rendah"?
user2068965
Lihatlah ini .
Mitch
0

tidak ada yang membingungkan: Di sini terlihat: =

1) du == Penggunaan Disk
Berapa banyak ruang disk yang digunakan oleh file-file ini?

2) df == Disk Gratis
Berapa banyak ruang disk yang kita miliki?

Juga untuk sistem berjalan dalam mode grafis rendah 'di sini '

Avani badheka
sumber
0

aku melakukannya
sudo du -hxa / | egrep '^[[:digit:]]{1,1}G[[:space:]]*'

Itu persis menyumbang perbedaan besar 21GB yang saya lihat!
File yang dimaksud adalah / swap file jika 21GB !!

pengguna727981
sumber