GNU/Linux >> Belajar Linux >  >> Linux

Berapa totalnya di baris pertama setelah ls -l?

Anda dapat menemukan definisi baris tersebut di ls dokumentasi untuk platform Anda. Untuk coreutils ls (yang ditemukan di banyak sistem Linux), informasinya dapat ditemukan melalui info coreutils ls :

Untuk setiap direktori yang terdaftar, awali file dengan baris`total BLOCKS', dengan BLOCKS adalah total alokasi disk untuk semua file dalam direktori tersebut.


Rumusnya:Apa itu nomor?

total int =Jumlah dari (physical_blocks_in_use) * physical_block_size/ls_block_size) untuk setiap file.

Di mana:

  • ls_block_size adalah variabel lingkungan arbitrer (biasanya 512 atau 1024 byte) yang bebas dimodifikasi dengan --block-size=<int> bendera pada ls , POSIXLY_CORRECT=1 variabel lingkungan GNU (untuk mendapatkan unit 512-byte), atau -k tandai untuk memaksa satuan 1kB.
  • physical_block_size adalah nilai yang bergantung pada OS dari antarmuka blok internal, yang mungkin terhubung atau tidak ke perangkat keras yang mendasarinya. Nilai ini biasanya 512b atau 1k, tetapi sepenuhnya bergantung pada OS. Itu dapat diungkapkan melalui %B nilai pada stat atau fstat . Perhatikan bahwa nilai ini (hampir selalu) tidak terkait dengan jumlah blok fisik pada modern perangkat penyimpanan.

Mengapa begitu membingungkan?

Angka ini cukup terlepas dari metrik fisik atau bermakna apa pun. Banyak pemrogram junior belum memiliki pengalaman dengan lubang file atau tautan keras/sym. Selain itu, dokumentasi yang tersedia untuk topik khusus ini hampir tidak ada.

Keterpisahan dan ambiguitas istilah "ukuran blok" telah menjadi hasil dari banyak ukuran berbeda yang mudah dibingungkan, dan tingkat abstraksi yang relatif dalam seputar akses disk.

Contoh informasi yang bertentangan:du (atau ls -s ) vs stat

Menjalankan du * dalam folder proyek menghasilkan yang berikut:(Catatan:ls -s mengembalikan hasil yang sama.)

dactyl:~/p% du *
2       check.cc
2       check.h
1       DONE
3       Makefile
3       memory.cc
5       memory.h
26      p2
4       p2.cc
2       stack.cc
14      stack.h

Total :2+2+1+3+3+5+26+4+2+14 =62 Blok

Namun ketika seseorang menjalankan stat kita melihat seperangkat nilai yang berbeda. Menjalankan stat dalam direktori yang sama menghasilkan:

dactyl:~/p% stat * --printf="%b\t(%B)\t%n: %s bytes\n"
3       (512)   check.cc: 221 bytes
3       (512)   check.h: 221 bytes
1       (512)   DONE: 0 bytes
5       (512)   Makefile: 980 bytes
6       (512)   memory.cc: 2069 bytes
10      (512)   memory.h: 4219 bytes
51      (512)   p2: 24884 bytes
8       (512)   p2.cc: 2586 bytes
3       (512)   stack.cc: 334 bytes
28      (512)   stack.h: 13028 bytes

Total: 3+3+1+5+6+10+51+8+3+28 =118 Blok

Catatan: Anda dapat menggunakan perintah stat * --printf="%b\t(%B)\t%n: %s bytes\n"> untuk menampilkan (dalam urutan) jumlah blok, (dalam tanda kurung) ukuran blok tersebut, nama file, dan ukuran dalam byte, seperti yang ditampilkan di atas.

Ada dua hal penting yang bisa diambil:

  • stat melaporkan kedua physical_blocks_in_use dan physical_block_size seperti yang digunakan pada rumus di atas. Perhatikan bahwa ini adalah nilai berdasarkan antarmuka OS.
  • du memberikan apa yang diterima secara umum sebagai perkiraan yang cukup akurat pemanfaatan disk fisik.

Sebagai referensi, berikut adalah ls -l direktori di atas:

dactyl:~/p% ls -l
**total 59**
-rw-r--r--. 1 dhs217 grad   221 Oct 16  2013 check.cc
-rw-r--r--. 1 dhs217 grad   221 Oct 16  2013 check.h
-rw-r--r--. 1 dhs217 grad     0 Oct 16  2013 DONE
-rw-r--r--. 1 dhs217 grad   980 Oct 16  2013 Makefile
-rw-r--r--. 1 dhs217 grad  2069 Oct 16  2013 memory.cc
-rw-r--r--. 1 dhs217 grad  4219 Oct 16  2013 memory.h
-rwxr-xr-x. 1 dhs217 grad 24884 Oct 18  2013 p2
-rw-r--r--. 1 dhs217 grad  2586 Oct 16  2013 p2.cc
-rw-r--r--. 1 dhs217 grad   334 Oct 16  2013 stack.cc
-rw-r--r--. 1 dhs217 grad 13028 Oct 16  2013 stack.h

Itu adalah jumlah total blok sistem file, termasuk blok tidak langsung, yang digunakan oleh file yang terdaftar. Jika Anda menjalankan ls -s pada file yang sama dan jumlahkan angka yang dilaporkan, Anda akan mendapatkan angka yang sama.


Linux
  1. Bash Menimpa Baris Pertama, Ps1 Bash Prompt?

  2. Apa Arti Ampersand Di Akhir Baris Skrip Shell?

  3. Bagaimana cara membagi file dan menyimpan baris pertama di setiap bagian?

  1. Apa yang dilakukan baris '!/bin/sh -e'?

  2. Menghilangkan baris pertama dari keluaran perintah Linux mana pun

  3. Bagaimana membedakan hanya baris pertama dari dua file?

  1. Bagaimana cara mendapatkan baris ke-n setelah yang ditangkap?

  2. Baris perintah untuk kembali ke GUI setelah Ctrl-Alt-F1?

  3. mount -t TYPE / - bagaimana mengetahui apa itu TYPE?