GNU/Linux >> Belajar Linux >  >> Linux

Pertanyaan Wawancara Linux :Buka File / Buka Deskriptor File

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
180451
Catatan :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.


Linux
  1. Memindahkan file di Linux tanpa mv

  2. 25 Pertanyaan dan Jawaban Wawancara Linux Teratas

  3. Jumlah maksimum file terbuka terbesar yang diizinkan di Linux

  1. Salin file di terminal Linux

  2. Pindahkan file di terminal Linux

  3. 25 Pertanyaan Wawancara Linux Teratas

  1. Periksa izin file Linux dengan ls

  2. Pertanyaan Wawancara Linux – Izin File dan Direktori Dasar

  3. Pertanyaan Wawancara :Linux Package Manager (RPM)