Panduan untuk menggunakan perintah 'lsof' untuk suatu proses
Jika Anda sering menggunakan sistem Linux atau Unix, Anda pasti pernah mendengar ungkapan, “Di Linux, semuanya adalah file”. Ini dapat dikategorikan sebagai penyederhanaan konsep namun terbukti sangat membantu untuk memahami bagaimana file dalam sistem Linux bekerja.
Tidak semua yang muncul di lingkungan Linux harus berupa file. Terkadang bisa berupa proses, bisa berupa file khusus yang mewakili informasi perangkat keras, direktori, dan hal lainnya.
Tutorial ini akan memandu Anda dalam menemukan semua file yang terbuka untuk proses tertentu di Linux.
Perkenalan pada lsof
Memerintah
Keindahan sistem Linux adalah Anda dapat mengontrol dan mengelola seluruh sistem Anda melalui terminal, asalkan Anda mengetahui perintahnya dengan baik. Setelah perintah diketahui maka semua tugas di terminal menjadi cakewalk.
lsof
berdiri untuk 'Daftar File yang Terbuka'. Setelah Anda mengetahui versi panjang dari perintah, menjadi sangat mudah bagi Anda untuk memahami dan menggunakan perintah dengan cara yang produktif.
Itu lsof
perintah menampilkan daftar file yang terbuka, soket, dan pipa. Anda dapat dengan mudah mencari file yang terbuka menggunakan perintah ini. Ketika lsof
perintah digunakan tanpa opsi apa pun itu menampilkan semua file yang terbuka sehubungan dengan proses aktif yang sedang berjalan.
Catatan: Pastikan Anda menggunakan sudo
saat menjalankan perintah.
Menggunakan lsof
Memerintah
Kami akan mempelajari output dari lsof
perintah secara rinci. Pelajari perintah berikut.
sudo lsof | lebih sedikit
Catatan: Jika kita langsung menjalankan lsof
perintah, output akan menjadi sangat besar dan mungkin membuat kebingungan untuk melangkah lebih jauh. Oleh karena itu, di sini saya telah menggunakan lsof | lebih sedikit
perintah untuk kenyamanan tutorial.
Keluaran:
gaurav@ubuntu:~$ sudo lsof | less COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NAMA NODE kdevtmpfs 31 root cwd DIR 0,6 4400 2 / kdevtmpfs 31 root rtd DIR 0,6 4400 2 / kdevtmpfs 31 root txt tidak diketahui /proc/31/exe netns 32 root cwd DIR 8,8 4096 2 / netns 32 root rtd DIR 8,8 4096 2 / netns 32 root txt tidak diketahui /proc/32/exe rcu_tasks 33 root cwd DIR 8,8 4096 2 / rcu_tasks 33 root rtd DIR 8,8 4096 2 / rcu_tasks 33 root txt tidak diketahui /proc/33/exe kauditd 34 root cwd DIR 8,8 4096 2 / kauditd 34 root rtd DIR 8,8 4096 2 / kauditd 34 root txt tidak diketahui /proc/34/exe
Berikut ini adalah atribut yang ditampilkan menggunakan lsof
memerintah.
Parameter | Keterangan |
---|---|
Memerintah | Menunjukkan nama perintah yang membuka file. |
PID | Nomor pengidentifikasi proses dari proses yang membuka file. |
TID | Nomor Pengenal Benang. Itu bisa berupa utas atau nomor tugas. |
Pengguna | User ID atau nama pengguna yang merupakan pemilik proses. |
FD | Menampilkan deskriptor file dari file. |
Jenis | Jenis node yang terkait dengan file. |
Perangkat | Menunjukkan nomor perangkat. |
Ukuran/Mati | Menunjukkan ukuran file dalam byte. |
simpul | Menunjukkan nomor inode direktori atau direktori induk. |
Nama | Menunjukkan nama sistem file tempat proses berada. |
Daftar Proses
Pertama dan terpenting, penting bagi Anda untuk mendapatkan proses yang sedang berjalan dan ID prosesnya masing-masing. Linux menyediakan berbagai perintah untuk membuat daftar proses beserta atributnya seperti PID, pengguna, direktori, dll.
Anda dapat menggunakan perintah seperti atas
, ps
, htop
, pstree
untuk membuat daftar proses di terminal.
Sepanjang tutorial, saya akan menggunakan atas
perintah untuk melakukannya. Itu atas
perintah memberikan tampilan real-time dinamis dari sistem yang sedang berjalan. Ini juga menampilkan semua proses dan utas yang saat ini dikelola oleh kernel Linux. Pelajari blok yang diberikan di bawah ini untuk memeriksa output dari atas
memerintah.
Sintaksis:
sudo atas
Keluaran:
gaurav@ubuntu:~$sudo top PID PENGGUNA PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2703 gaurav 20 0 4286124 1.142g 103584 R 88.2 30.5 87:48.08 Konten Web 1173 mongodb 20 0 288536 6776 3428 S 5.9 0.2 2: 34.41 mongod 13765 gaurav 20 0 2931568 131408 47496 S 5.9 3.3 1:42.34 Konten Web 1 root 20 0 225904 6824 4900 S 0.0 0.2 0:27.25 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.05 kthreadd 4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/0:0H 6 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 mm_percpu_wq 7 root 20 0 0 0 0 S 0.0 0.0 0:01.89 ksoftirqd/0 8 root 20 0 0 0 0 I 0.0 0.0 0:22.32 rcu_sched 9 root 20 0 0 0 0 I 0.0 0.0 0:00.00 rcu_bh 10 root rt 0 0 0 0 S 0.0 0.0 0:03.13 migration/0
Di blok di atas, kita dapat melihat semua informasi terkait proses di satu tempat. Dari sini kita dapat menemukan PID
dari proses di mana kita harus menampilkan file yang terbuka menggunakan lsof
memerintah.
Tetapi jika Anda ingin mengetahui ID proses hanya dari proses tertentu dan menghindari proses lain yang tidak diinginkan, gunakan perintah berikut.
Sintaksis:
sudo atas | grep [Nama_Proses]
Contoh:
gaurav@ubuntu:~$ atas | grep terminal 13819 gaurav 20 0 803336 19728 9160 S 0.3 0.5 0:53.63 gnome-terminal- 13819 gaurav 20 0 803336 19728 9160 S 1.0 0.5 0:53.66 gnome-terminal- 13819 gaurav 20 0 803336 19728 9160 S 0.3 0.5 0:53.67 gnome -terminal- gaurav@ubuntu:~$
Di sini kami secara khusus menampilkan ID proses dari proses yang memiliki string 'terminal' dalam nama proses. Metode ini berguna ketika Anda tidak mengetahui nama proses lengkap atau PID.
Menampilkan File Terbuka Terkait Proses Menggunakan PID
Di blok di atas, kami belajar cara mendapatkan informasi terkait proses dengan bantuan perintah teratas. Sekarang kita akan menggunakan PID
sesuai dengan proses apa pun di sistem dan coba tampilkan daftar file terbuka yang terkait dengan proses itu menggunakan lsof
memerintah.
Dari output yang diberikan di atas, mari kita ambil proses yang sesuai dengan PID 1173 yang disorot. Kami akan menggunakan lsof -p [PID]
perintah untuk melakukannya.
Sintaksis:
sudo lsof -p [PID]
Perintah ini mengambil PID dari proses sebagai input dan mencantumkan semua file yang sesuai dengan PID ini.
Keluaran:
gaurav@ubuntu:~$ sudo lsof -p 1173 lsof: PERINGATAN: tidak dapat stat() sistem file fuse.gvfsd-fuse /run/user/1000/gvfs Informasi keluaran mungkin tidak lengkap. COMMAND PID PENGGUNA JENIS FD UKURAN PERANGKAT/MATI NAMA NODE mongod 1173 mongodb cwd DIR 8,8 4096 2 / mongod 1173 mongodb rtd DIR 8,8 4096 2 / mongod 1173 mongodb txt REG 8,8 38379496 2885608 /usr/bin/mongod 1173 mongodb mem REG 8,8 71776 2624380 /lib/x86_64-linux-gnu/libnss_myhostname.so.2 mongod 1173 mongodb mem REG 8,8 101168 2624643 /lib/x86_64-linux-gnu/libresolv-2.27.so mongod 1173 mongodb mem REG 8,8 26936 2624439 /lib/x86_64-linux-gnu/libnss_dns-2.27.so mongod 1173 mongodb mem REG 8,8 10160 2626002 /lib/x86_64-linux-gnu/libnss_mdns4_minimal.so.2 mongod REG 1173 mongodb 8,8 47568 2624441 /lib/x86_64-linux-gnu/libnss_files-2.27.so mongod 1173 mongodb mem REG 8,8 3004224 2909671 /usr/lib/locale/locale-archive mongod 1173 mongodb mem REG 8,8 2030544 2621501 / lib/x86_64-linux-gnu/libc-2.27.so mongod 1173 mongodb mem REG 8,8 144976 2624627 /lib/x86_64-linux-gnu/libpthread-2.27.so mongod 1173 mongodb mem REG 8,8 96616 2624649 /lib/ x86_64-linux-gnu/libgcc_s.so.1 mongod 1173 mongodb saya m REG 8,8 1700792 2622735 /lib/x86_64-linux-gnu/libm-2.27.so mongod 1173 mongodb mem REG 8,8 14560 2621535 /lib/x86_64-linux-gnu/libdl-2.27.so mongod 1173 mongodb mem REG 8,8 31680 2624646 /lib/x86_64-linux-gnu/librt-2.27.so mongod 1173 mongodb mem REG 8,8 2357760 2890079 /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0 gaurav@ubuntu :~$
File yang terbuka untuk proses dengan ID proses 1713 ditampilkan menggunakan lsof
memerintah.
Catatan: Pengguna GNOME mungkin mengalami peringatan di bawah ini. Anda dapat dengan aman mengabaikannya.
lsof: PERINGATAN: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs Informasi keluaran mungkin tidak lengkap.
Mencantumkan File Terbuka Yang Terkait Dengan Proses Menggunakan Nama Proses
Itu lsof
perintah juga memberi Anda opsi untuk membuat daftar file yang terbuka menggunakan nama proses. Nama-nama harus diberikan ke perintah sebagai string input. Lihat sintaks di bawah ini untuk menggunakan opsi ini.
Sintaksis:
sudo lsof -c [Nama proses]
Contoh:
sudo lsof -c mysql
Keluaran:
gaurav@ubuntu:~$ sudo lsof -c mysql lsof: PERINGATAN: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs Informasi keluaran mungkin tidak lengkap. COMMAND PID USER FD TYPE DEVICE SIZE/OFF NAMA NODE mysqld 1266 mysql cwd DIR 8,8 4096 3154135 /var/lib/mysql mysqld 1266 mysql rtd DIR 8,8 4096 2 / mysqld 1266 mysql txt REG 8,8 24691368 2889411 /usr /sbin/mysqld mysqld 1266 mysql mem REG 8,8 6288 5505444 /usr/lib/mysql/plugin/auth_socket.so mysqld 1266 mysql DEL REG 0,18 28127 /[aio] mysqld 1266 mysql DEL REG 0,18 28126 /[ aio] mysqld 1266 mysql DEL REG 0,18 28125 /[aio] mysqld 1266 mysql mem REG 8,8 47568 2624441 /lib/x86_64-linux-gnu/libnss_files-2.27.so mysqld 1266 mem mysql REG 8,8 47576 2624592 / lib/x86_64-linux-gnu/libnss_nis-2.27.so mysqld 1266 mysql mem REG 8,8 39744 2624438 /lib/x86_64-linux-gnu/libnss_compat-2.27.so
Outputnya akan seperti yang digunakan ID Proses alih-alih nama Proses.
Daftar file Dibuka Oleh Koneksi Jaringan
Di Linux, file juga dapat berupa informasi tentang koneksi jaringan Anda, koneksi perangkat keras, dll. Kita dapat menggunakan lsof
perintah untuk membuat daftar file yang dibuka oleh koneksi jaringan. Gunakan metode berikut.
sudo lsof -i
Keluaran:
gaurav@ubuntu:~$ sudo lsof -i COMMAND PID USER FD TIPE UKURAN PERANGKAT/MATI NAMA NODE systemd-r 969 systemd-resolve 12u IPv4 17357 0t0 UDP localhost:domain systemd-r 969 systemd-resolve 13u IPv4 17358 0t0 TCP localhost: domain (DENGARKAN) systemd-r 969 systemd-resolve 15u IPv4 1685575 0t0 UDP ubuntu:48090->_gateway:domain avahi-dae 1028 avahi 12u IPv4 23810 0t0 UDP *:mdns avahi-dae 1028 avahi 13u IPv6 23811 0t0 UDP *:mdns avahi-dae 1028 avahi 14u IPv4 23812 0t0 UDP *:58999 avahi-dae 1028 avahi 15u IPv6 23813 0t0 UDP *:37512 mongod 1173 mongodb 6u IPv4 28149 0t0 TCP localhost:27017 (DENGARKAN) mysqld 1266 TCP localhost: 0t IPv4 25992 TCP localhost mysql (DENGARKAN) apache2 1283 root 4u IPv6 28140 0t0 TCP *:http (DENGARKAN) gaurav@ubuntu:~$
Di sini kita dapat melihat informasi tentang file yang dibuka oleh koneksi jaringan menggunakan lsof -i
memerintah.
Kesimpulan
Dalam tutorial sederhana ini, kita telah mempelajari cara membuat daftar file yang terbuka untuk suatu proses di Linux menggunakan berbagai metode yang mudah digunakan. Untuk lebih banyak kegunaan dari lsof
perintah, lihat lsof
halaman manual.