Apa itu file terbuka?
File yang terbuka dapat berupa file biasa, direktori, file khusus blok, file khusus karakter, referensi teks yang dieksekusi, perpustakaan, aliran, atau file jaringan.
Apa itu deskriptor file?
Deskriptor file adalah struktur data yang digunakan oleh program untuk menangani file. Yang paling umum dikenal adalah:
0 for standard in 1 for standard out 2 for standard error
Apakah jumlah file yang terbuka sama dengan jumlah deskriptor file yang terbuka?
Ada perbedaan dalam jumlah file yang terbuka saat ini dan jumlah deskriptor/penangan file saat ini. Meskipun file terbuka, file tersebut mungkin tidak memiliki deskriptor file yang terkait dengannya seperti direktori kerja saat ini, file yang dipetakan memori, dan file teks yang dapat dieksekusi.
Perintah 'lsof' akan memberikan jumlah file terbuka yang terkait dengan suatu proses. Misalnya untuk proses dengan PID 4448:
# lsof | grep -w 2374 pickup 2374 postfix cwd DIR 202,1 4096 8945851 /var/spool/postfix pickup 2374 postfix rtd DIR 202,1 4096 128 / pickup 2374 postfix txt REG 202,1 285112 8945807 /usr/libexec/postfix/pickup pickup 2374 postfix mem REG 202,1 62184 463326 /usr/lib64/libnss_files-2.17.so pickup 2374 postfix mem REG 202,1 155744 758332 /usr/lib64/libselinux.so.1 pickup 2374 postfix mem REG 202,1 15688 125778 /usr/lib64/libkeyutils.so.1.5 pickup 2374 postfix mem REG 202,1 58728 127331 /usr/lib64/libkrb5support.so.0.1 pickup 2374 postfix mem REG 202,1 11384 37284 /usr/lib64/libfreebl3.so ....
# lsof | grep -w 2374 | wc -l 51
Ada total 51 file terbuka yang terkait dengan PID 2374 (postfix).
Untuk menentukan jumlah deskriptor file terbuka yang terkait dengan suatu proses, gunakan yang berikut ini. Untuk proses postfix yang sama, 2374:
# ls -l /proc/2374/fd total 0 lrwx------. 1 root root 64 Nov 18 18:06 0 -> /dev/null lrwx------. 1 root root 64 Nov 18 18:06 1 -> /dev/null l-wx------. 1 root root 64 Nov 18 18:06 10 -> pipe:[28867] lrwx------. 1 root root 64 Nov 18 18:06 2 -> /dev/null lr-x------. 1 root root 64 Nov 18 18:06 3 -> pipe:[18701] l-wx------. 1 root root 64 Nov 18 18:06 4 -> pipe:[18701] lrwx------. 1 root root 64 Nov 18 18:06 5 -> socket:[18631] lrwx------. 1 root root 64 Nov 18 18:06 6 -> socket:[18629] lrwx------. 1 root root 64 Nov 18 18:06 7 -> socket:[28851] lrwx------. 1 root root 64 Nov 18 18:06 8 -> anon_inode:[eventpoll] lr-x------. 1 root root 64 Nov 18 18:06 9 -> pipe:[28867] l-wx------. 1 root root 64 Nov 18 18:06 92 -> pipe:[18702]
# ls -l /proc/2374/fd | wc -l 13
Ada 13 deskriptor file yang terkait dengan PID 2374 (postfix). Kita bisa melihat ada perbedaan antara jumlah file yang terbuka dan jumlah deskriptor file per proses. postfix memiliki 51 file terbuka tetapi hanya 13 deskriptor file yang terkait dengannya. Beberapa file yang terbuka tidak memiliki deskriptor file yang terkait dengannya; misalnya, perpustakaan, direktori kerja saat ini.
Bagaimana cara mendapatkan jumlah maksimum deskriptor file?
Di Linux, jumlah maksimum batas deskriptor file dapat dibaca dari /proc berkas sistem. Untuk mendapatkan batas saat ini pada jumlah deskriptor file untuk seluruh sistem, gunakan perintah berikut.
# cat /proc/sys/fs/file-max 180451Catatan :Parameter /proc/sys/fs/file-max dapat diubah secara dinamis.
Bagaimana cara menghitung jumlah deskriptor file yang saat ini digunakan?
Gunakan perintah berikut.
# cat /proc/sys/fs/file-nr 1344 0 180451 | | |_ Max no. of file descriptors allowed on the system | | | |__ Total free allocated file descriptors | |__ Total allocated file descriptors
Untuk menghitung jumlah deskriptor file yang saat ini digunakan:
1344 - 0 = 1344
Bagaimana cara mendapatkan batas per-proses pada deskriptor file?
Gunakan ‘ulimit -a ' untuk mendapatkan batas per-proses.
# ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 7132 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 4096 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 7132 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited
Bagaimana cara menemukan jumlah deskriptor file terbuka yang digunakan oleh proses tertentu?
Gunakan perintah berikut (Ganti PID Anda)
# ls -l /proc/2374/fd | wc -l 13
Apa saja parameter berguna lainnya?
NR_OPEN = Maximum number of open files per process NR_FILE = Total number of files that can be open in the system at any time FILE-MAX = Kernel parameter refers to maximum number of file descriptors allowed per system FILE-NR = Refers to the number of current file descriptors used at any moment. LSOF = Gives the number of open files.