Cara Menggunakan Perintah stat di Linux
Diterbitkan: 2022-01-29 Perintah stat
Linux menunjukkan lebih banyak detail daripada ls
. Intip di balik tirai dengan utilitas informatif dan dapat dikonfigurasi ini. Kami akan menunjukkan cara menggunakannya.
stat Membawa Anda Di Balik Layar
Perintah ls
sangat bagus dalam hal itu—dan melakukan banyak hal—tetapi dengan Linux, tampaknya selalu ada cara untuk masuk lebih dalam dan melihat apa yang ada di bawah permukaan. Dan seringkali, ini bukan hanya kasus mengangkat ujung karpet. Anda dapat merobek papan lantai dan kemudian menggali lubang. Anda dapat mengupas Linux seperti bawang.
ls
akan menunjukkan banyak informasi tentang file, seperti izin mana yang ditetapkan padanya, dan seberapa besar itu, dan apakah itu file atau tautan simbolis. Untuk menampilkan informasi ini, ls
membacanya dari struktur sistem file yang disebut inode.
Setiap file dan direktori memiliki inode. Inode menyimpan metadata tentang file, seperti blok sistem file mana yang ditempati, dan cap tanggal yang terkait dengan file. Inode seperti kartu perpustakaan untuk file. Tapi saya ls
akan menunjukkan beberapa informasi. Untuk melihat semuanya, kita perlu menggunakan perintah stat
.
Seperti ls
, perintah stat
memiliki banyak opsi. Ini menjadikannya kandidat yang bagus untuk penggunaan alias. Setelah Anda menemukan serangkaian opsi tertentu yang membuat stat
memberi Anda output yang Anda inginkan, bungkus dengan alias atau fungsi shell. Ini membuatnya jauh lebih nyaman untuk digunakan, dan Anda tidak perlu mengingat serangkaian opsi baris perintah yang misterius.
TERKAIT: Cara Menggunakan Perintah ls untuk Membuat Daftar File dan Direktori di Linux
Perbandingan Cepat
Mari gunakan ls
untuk memberi kita daftar panjang ( opsi -l
) dengan ukuran file yang dapat dibaca manusia ( opsi -h
):
ls -lh ana.h
Dari kiri ke kanan, informasi yang diberikan ls adalah:
- Karakter pertama adalah tanda hubung “-” dan ini memberi tahu kita bahwa file tersebut adalah file biasa dan bukan soket, symlink, atau jenis objek lainnya.
- Pemilik, grup, dan izin lainnya dicantumkan dalam format oktal.
- Jumlah tautan keras yang menunjuk ke file ini. Dalam hal ini, dan dalam banyak kasus, itu akan menjadi satu.
- Pemilik file adalah dave.
- Pemilik grup adalah dave.
- Ukuran file adalah 802 byte.
- File terakhir diubah pada hari Jumat, 13 Desember 2015.
- Nama filenya adalah
ana.c
.
Mari kita lihat dengan stat
:
stat ana.h
Informasi yang kami dapatkan dari stat
adalah:
- File : Nama file. Biasanya, itu sama dengan nama yang kita berikan ke
stat
pada baris perintah, tetapi bisa berbeda jika kita melihat tautan simbolik. - Ukuran : Ukuran file dalam byte.
- Blocks : Jumlah blok filesystem yang dibutuhkan file, untuk disimpan di hard drive.
- IO Block : Ukuran blok filesystem.
- Jenis file : Jenis objek yang dijelaskan oleh metadata. Jenis yang paling umum adalah file dan direktori, tetapi juga dapat berupa tautan, soket, atau pipa bernama.
- Perangkat : Nomor perangkat dalam heksadesimal dan desimal. Ini adalah ID hard drive tempat file disimpan.
- Inode : Nomor inode. Artinya, nomor ID inode ini. Bersama-sama, nomor inode dan nomor perangkat secara unik mengidentifikasi file.
- Tautan : Angka ini menunjukkan berapa banyak tautan keras yang mengarah ke file ini. Setiap tautan keras memiliki inodenya sendiri. Jadi cara lain untuk memikirkan angka ini adalah berapa banyak inode yang menunjuk ke satu file ini. Setiap kali tautan keras dibuat atau dihapus, nomor ini akan disesuaikan naik atau turun. Ketika mencapai nol, file itu sendiri telah dihapus, dan inode dihapus. Jika Anda menggunakan
stat
pada direktori, angka ini menunjukkan jumlah file dalam direktori, termasuk "." entri untuk direktori saat ini dan entri ".." untuk direktori induk. - Akses : Izin file ditampilkan dalam format oktal dan
rwx
tradisional (format baca, tulis, eksekusi). - Uid : User ID dan nama akun pemilik.
- Gid : ID Grup dan nama akun pemilik.
- Akses : Cap waktu akses. Tidak sesederhana kelihatannya. Distribusi Linux modern menggunakan skema yang disebut
relatime
, yang mencoba mengoptimalkan penulisan hard drive yang diperlukan untuk memperbarui waktu akses. Sederhananya, waktu akses diperbarui jika lebih lama dari waktu yang dimodifikasi. - Modify : Stempel waktu modifikasi. Ini adalah waktu ketika konten file terakhir diubah. (Sepertinya beruntung, konten file ini terakhir diubah empat tahun lalu hingga hari ini.)
- Ubah : Perubahan cap waktu. Ini adalah waktu terakhir kali atribut atau konten file diubah. Jika Anda memodifikasi file dengan mengatur izin file baru, stempel waktu perubahan akan diperbarui (karena atribut file telah berubah), tetapi stempel waktu yang dimodifikasi tidak akan diperbarui (karena konten file tidak diubah).
- Lahir : Dicadangkan untuk menunjukkan tanggal pembuatan asli file, tetapi ini tidak diterapkan di Linux.
Memahami Stempel Waktu
Stempel waktu peka terhadap zona waktu. -0500
di akhir setiap baris menunjukkan bahwa file ini dibuat di komputer dalam zona waktu Waktu Universal Terkoordinasi (UTC) yang lima jam lebih cepat dari zona waktu komputer saat ini. Jadi komputer ini tertinggal lima jam dari komputer yang membuat file ini. Faktanya, file tersebut dibuat di komputer zona waktu Inggris Raya, dan kami melihatnya di sini di komputer dalam zona waktu Standar Timur AS.
Memodifikasi dan mengubah cap waktu dapat menyebabkan kebingungan karena, bagi yang belum tahu, nama mereka terdengar seolah-olah memiliki arti yang sama.
Mari kita gunakan chmod
untuk mengubah hak akses file pada file bernama ana.c
. Kami akan membuatnya dapat ditulisi oleh semua orang. Ini tidak akan memengaruhi konten file, tetapi akan memengaruhi atribut file.
chmod +w ana.c
Dan kemudian kita akan menggunakan stat
untuk melihat stempel waktu:
stat ana.c
Stempel waktu perubahan telah diperbarui, tetapi yang dimodifikasi belum.
Stempel waktu yang dimodifikasi hanya akan diperbarui jika konten file diubah. Stempel waktu perubahan diperbarui untuk perubahan konten dan perubahan atribut.
Menggunakan Stat Dengan Banyak File
Untuk memiliki laporan stat pada beberapa file sekaligus, berikan nama file ke stat
pada baris perintah:
stat ana.h ana.o
Untuk menggunakan stat
pada sekumpulan file, gunakan pencocokan pola. Tanda tanya “?” mewakili karakter tunggal apa pun, dan tanda bintang "*" mewakili string karakter apa pun. Kami dapat memberi tahu stat
untuk melaporkan file apa pun yang disebut "ana" dengan ekstensi satu huruf, dengan perintah ini:
status apa.?
Menggunakan stat untuk Melaporkan pada Sistem File
stat
dapat melaporkan status sistem file, serta status file. Opsi -f
(sistem file) memberi tahu stat
untuk melaporkan sistem file tempat file berada. Perhatikan bahwa kami juga dapat meneruskan direktori seperti "/" ke stat
alih-alih nama file.
stat -f ana.c
stat
informasi yang diberikan kepada kita adalah:
- File : Nama file.
- ID : ID sistem file dalam notasi heksadesimal.
- Namelen : Panjang maksimum yang diizinkan untuk nama file.
- Jenis : Jenis sistem file.
- Ukuran blok : Jumlah data untuk meminta permintaan baca untuk kecepatan transfer data yang optimal.
- Ukuran blok fundamental : Ukuran setiap blok sistem file.
Blok:
- Total : Jumlah total semua blok n sistem file.
- Gratis : Jumlah blok bebas dalam sistem file.
- Tersedia : Jumlah blok gratis yang tersedia untuk pengguna reguler (non-root).
Inode:
- Total : Jumlah total inode dalam sistem file.
- Gratis : Jumlah inode gratis dalam sistem file.
Dereferensi Tautan Simbolik
Jika Anda menggunakan stat
pada file yang sebenarnya merupakan tautan simbolik, itu akan melaporkan tautan tersebut. Jika Anda ingin stat
melaporkan file yang ditunjuk oleh tautan, gunakan opsi -L
(dereference). File code.c
adalah tautan simbolis ke ana.c
. Mari kita lihat tanpa opsi -L
:
kode stat.c
Nama file menunjukkan code.c
menunjuk ke ( ->
) ana.c
. Ukuran file hanya 11 byte. Tidak ada blok yang dikhususkan untuk menyimpan tautan ini. Jenis file terdaftar sebagai tautan simbolik.
Jelas, kami tidak melihat file yang sebenarnya di sini. Mari kita lakukan itu lagi dan tambahkan opsi -L
:
stat -L kode.c
Ini sekarang menunjukkan detail file untuk file yang ditunjuk oleh tautan simbolik. Tetapi perhatikan bahwa nama file masih diberikan sebagai code.c
. Ini adalah nama tautan, bukan file target. Ini terjadi karena ini adalah nama yang kami berikan ke stat
pada baris perintah.
Laporan Singkat
Opsi -t
(singkat) menyebabkan stat
memberikan ringkasan singkat:
stat -t ana.c
Tidak ada petunjuk yang diberikan. Untuk memahaminya—sampai Anda mengingat urutan bidang—Anda perlu melakukan referensi silang output ini ke output stat
penuh.
Format Keluaran Kustom
Cara yang lebih baik untuk mendapatkan kumpulan data yang berbeda dari stat
adalah dengan menggunakan format khusus. Ada daftar panjang token yang disebut urutan format. Masing-masing mewakili elemen data. Pilih yang ingin Anda sertakan dalam output dan buat string format. Saat kita memanggil stat
dan meneruskan string format ke sana, output hanya akan menyertakan elemen data yang kita minta.
Ada kumpulan urutan format yang berbeda untuk file dan sistem file. Daftar filenya adalah:
- %a : Hak akses dalam oktal.
- %A : Hak akses dalam bentuk yang dapat dibaca manusia (
rwx
). - %b : Jumlah blok yang dialokasikan.
- %B : Ukuran dalam byte setiap blok.
- %d : Nomor perangkat dalam desimal.
- %D : Nomor perangkat dalam hex.
- %f : Mode mentah dalam hex.
- %F Jenis file.
- %g : ID grup pemilik.
- %G : Nama grup pemilik.
- %h : Jumlah hard link.
- %i : Nomor inode.
- %m : Titik pemasangan.
- %n : Nama file.
- %N : Nama file yang dikutip, dengan nama file dereferensi jika itu adalah tautan simbolis.
- %o : Petunjuk ukuran transfer I/O yang optimal.
- %s : Ukuran total, dalam byte.
- %t : Jenis perangkat utama dalam hex, untuk file khusus perangkat karakter/blok.
- %T : Jenis perangkat minor dalam hex, untuk file khusus karakter/blok perangkat.
- %u : ID pengguna pemilik.
- %U : Nama pengguna pemilik.
- %w : Waktu kelahiran file, dapat dibaca manusia, atau tanda hubung “-” jika tidak diketahui.
- %W : Waktu kelahiran file, detik sejak Epoch; 0 jika tidak diketahui.
- %x : Waktu akses terakhir, dapat dibaca manusia.
- %X : Waktu akses terakhir, detik sejak Epoch.
- %y : Waktu modifikasi data terakhir, dapat dibaca manusia.
- %Y : Waktu modifikasi data terakhir, detik sejak Epoch.
- %z : Waktu perubahan status terakhir, dapat dibaca manusia.
- %Z : Waktu perubahan status terakhir, detik sejak Epoch.
"Epoch" adalah Unix Epoch, yang berlangsung pada 1970-01-01 00:00:00 +0000 (UTC).
Untuk sistem file urutan formatnya adalah:
- %a : Jumlah blok gratis yang tersedia untuk pengguna reguler (non-root).
- %b : Total blok data dalam sistem file.
- %c : Total inode dalam sistem file.
- %d : Jumlah inode gratis dalam sistem file.
- %f : Jumlah blok kosong dalam sistem file.
- %i : ID sistem file dalam heksadesimal.
- %l : Panjang maksimum nama file.
- %n : Nama file.
- %s : Ukuran blok (ukuran tulisan optimal).
- %S : Ukuran blok sistem file (untuk jumlah blok).
- %t : Jenis sistem file dalam heksadesimal.
- %T : tipe sistem file dalam bentuk yang dapat dibaca manusia.
Ada dua opsi yang menerima string urutan format. Ini adalah --format
dan --printf
. Perbedaan di antara keduanya adalah --printf
menginterpretasikan urutan escape gaya-C seperti baris baru \n
dan tab \t
, dan tidak secara otomatis menambahkan karakter baris baru ke outputnya.
Mari buat string format dan berikan ke stat
. Urutan format yang akan digunakan adalah %n
untuk nama file, %s
untuk ukuran file dan %F
untuk jenis file. Kita akan menambahkan urutan escape \n
ke akhir string untuk memastikan setiap file ditangani pada baris baru. String format kami terlihat seperti ini:
"File %n adalah %s byte, dan merupakan %F\n"
Kami akan meneruskan ini ke stat
menggunakan opsi --printf
. Kami akan meminta stat
untuk melaporkan file bernama code.c
dan sekumpulan file yang cocok dengan ana.?
. Ini adalah perintah lengkapnya. Perhatikan tanda sama dengan “ =
” antara --printf
dan format string:
stat --printf="File %n adalah %s byte, dan merupakan %F\n" code.c ana/ana.?
Laporan untuk setiap file terdaftar di baris baru, yang kami minta. Nama file, ukuran file, dan jenis file disediakan untuk kami.
Format kustom memberi Anda akses ke lebih banyak elemen data daripada yang disertakan dalam output stat
standar.
Kontrol Butir Halus
Seperti yang Anda lihat, ada ruang lingkup yang luar biasa untuk mengekstrak elemen data tertentu yang menarik bagi Anda. Anda mungkin juga dapat melihat mengapa kami merekomendasikan penggunaan alias untuk mantra yang lebih panjang dan lebih kompleks.
Perintah Linux | ||
File | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · ketik · ganti nama · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · konversi · rclone · rusak · srm | |
Proses | alias · layar · atas · bagus · renice · kemajuan · strace · systemd · tmux · chsh · sejarah · di · batch · gratis · yang · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · batas waktu · dinding · ya · bunuh · tidur · sudo · su · waktu · groupadd · usermod · grup · lshw · shutdown · reboot · hentikan · matikan · passwd · lscpu · crontab · tanggal · bg · fg | |
Jaringan | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw |
TERKAIT: Laptop Linux Terbaik untuk Pengembang dan Penggemar