Bagaimana cara mengetahui offset file dari file yang dibuka?

26

Masalah saya adalah bahwa dengan lsof -p pid saya dapat mengetahui daftar file yang dibuka dari suatu proses yang id prosesnya adalah pid. Tetapi apakah ada cara untuk mengetahui offset file dari setiap file yang diakses?

Tolong beri saya beberapa saran?

Ta Thanh Dinh
sumber

Jawaban:

38

Di linux, Anda dapat menemukan posisi jumlah file deskriptor Nproses PIDdi /proc/$PID/fdinfo/$N. Contoh:

$ cat /proc/687705/fdinfo/36
pos:    26088
flags:  0100001

File yang sama dapat dibuka beberapa kali dengan posisi berbeda menggunakan beberapa deskriptor file, jadi Anda harus memilih yang relevan jika ada lebih dari satu. Menggunakan:

$ readlink /proc/$PID/fd/$N

untuk mengetahui file apa yang dilampirkan oleh deskriptor file yang sesuai (mungkin bukan file, dalam hal ini symlink menjuntai).

Stéphane Gimenez
sumber
1
Jawaban Anda bagus.
Ta Thanh Dinh
12

lsofdapat melakukan ini, dengan -oopsi.

Di Linux, ia mendapatkan informasinya /proc, sehingga Anda juga bisa mendapatkannya di sana .

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Sudah lama sejak pertanyaan terakhir saya, dan saya belum pernah di sini untuk waktu yang lama. Terima kasih atas jawabannya.
Ta Thanh Dinh
Saya dapat mengkonfirmasi ini juga berfungsi. Offset diberikan sebagai HEX.
Benjamin