Melihat file yang terbuka pada suatu proses(lsof)

February 12th, 2006

Salah satu hal yang unik pada linux dan Unix yaitu segalanya adalah suatu file. Tentunya ada banyak tipe jenis file, termasuk file regular, file direktori dan file devices. Mekanisme pada suatu interproses komunikasi merupakan suatu file juga.

Karena segalanya adalah file, pada sistem yang sedang berjalan tentunya memiliki banyak sekali file yang terbuka. Apakah anda ingin mengetahui file apa saja yang terbuka, file apa saja yang digunakan pada suatu proses, file apa saja yang digunakan pada suatu devices atau file apa yang dibuka oleh seorang user?. untuk melakukannya anda dapat menggunakan List Open Files, atau lsof,. lsof ditulis oleh Victor Abell dan tersedia di http://people.freebsd.org/~abel/. Anda juga dapat menginstall di linux anda dengan perintah :

Debian : apt-get install lsof
Mandrake : urpmi lsof
SuSe : yast -i lsof
Freebsd : pkg_add -r lsof
RedHat : rpm -ivh lsof*.rpm

lsof merupakan tool yang sangat berguna dan handal untuk menampilkan seluruh file yang sedang terbuka/dipakai. Untuk melihat manual nya anda dapat mengetikkan perintah man lsof.

Mengetikkan lsof tanpa opsi akan menampilkan semua file-file yang digunakan seluruh proses yang aktif pada sistem tersebut.

[root@faiz tmp]# lsof
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
init 1 root cwd DIR 3,7 4096 2 /
init 1 root rtd DIR 3,7 4096 2 /
init 1 root txt REG 3,7 28360 1974757 /sbin/init
init 1 root mem REG 3,7 1209384 1436229 /lib/tls/libc-2.3.4.so
init 1 root mem REG 3,7 524936 1436175 /lib/ld-2.3.4.so
init 1 root 10u FIFO 0,12 3126 /dev/initctl
ksoftirqd 2 root cwd DIR 3,7 4096 2 /
ksoftirqd 2 root rtd DIR 3,7 4096 2 /

Contoh sederhana penggunaan lsof

untuk melihat siapa yang menggunakan tvtime, ketik lsof /usr/bin/tvtime

[root@faiz tmp]# lsof /usr/bin/tvtime
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
tvtime 7509 faiz txt REG 3,7 488108 1730630 /usr/bin/tvtime


Untuk melihat proses ID yang digunakan tvtime ketik lsof
-t /usr/bin/tvtime .
[root@faiz tmp]# lsof -t /usr/bin/tvtime
7509

dan untuk melihat file apa saja yang digunakan oleh tvtime, gunakan lsof -c tvtime.

[root@faiz tmp]# lsof -c tvtime
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
tvtime 7509 faiz cwd DIR 3,8 4096 32769 /home/faiz
tvtime 7509 faiz rtd DIR 3,7 4096 2 /
tvtime 7509 faiz txt REG 3,7 488108 1730630 /usr/bin/tvtime
tvtime 7509 faiz mem REG 3,7 85880 1224307 /usr/share/tvtime/tvtimeSansBold.ttf
tvtime 7509 faiz DEL REG 0,7 40697860 /SYSV00000000
tvtime 7509 faiz mem CHR 81,0 10114 /dev/v4l/video0
tvtime 7509 faiz mem REG 3,7 29236 950041 /usr/X11R6/lib/libXrender.so.1.2.2
tvtime 7509 faiz mem REG 3,7 32532 950013 /usr/X11R6/lib/libXcursor.so.1.0.2
tvtime 7509 faiz mem REG 3,7 38280 1436208 /lib/libnss_files-2.3.4.so
tvtime 7509 faiz mem REG 3,7 7140 963018 /usr/X11R6/lib/X11/locale/lib/common/xlcDef.so.2
tvtime 7509 faiz mem REG 3,7 5260 930487 /usr/lib/gconv/ISO8859-1.so
tvtime 7509 faiz mem REG 3,7 178476 947122 /usr/share/locale/ISO-8859-1/LC_CTYPE
tvtime 7509 faiz mem REG 3,7 9508 1436188 /lib/libdl-2.3.4.so
tvtime 7509 faiz mem REG 3,7 1209384 1436229 /lib/tls/libc-2.3.4.so
tvtime 7509 faiz mem REG 3,7 30756 1438236 /lib/libgcc_s-3.4.3.so.1
tvtime 7509 faiz mem REG 3,7 136904 1436231 /lib/tls/libm-2.3.4.so
tvtime 7509 faiz mem REG 3,7 68388 1436240 /lib/libz.so.1.2.2.2
tvtime 7509 faiz mem REG 3,7 84966 1436233 /lib/tls/libpthread-0.10.so
tvtime 7509 faiz mem REG 3,7 825360 933326 /usr/lib/libstdc++.so.6.0.3
tvtime 7509 faiz mem REG 3,7 954572 933706 /usr/lib/libxml2.so.2.6.17
tvtime 7509 faiz mem REG 3,7 16720 950055 /usr/X11R6/lib/libXxf86vm.so.1.0
tvtime 7509 faiz mem REG 3,7 18068 950047 /usr/X11R6/lib/libXtst.so.6.1
tvtime 7509 faiz mem REG 3,7 6672 950031 /usr/X11R6/lib/libXinerama.so.1.0
tvtime 7509 faiz mem REG 3,7 55892 950019 /usr/X11R6/lib/libXext.so.6.4
tvtime 7509 faiz mem REG 3,7 833992 949999 /usr/X11R6/lib/libX11.so.6.2
tvtime 7509 faiz mem REG 3,7 87048 949993 /usr/X11R6/lib/libICE.so.6.3
tvtime 7509 faiz mem REG 3,7 31520 949997 /usr/X11R6/lib/libSM.so.6.0
tvtime 7509 faiz mem REG 3,7 150880 933646 /usr/lib/libpng.so.3.1.2.8
tvtime 7509 faiz mem REG 3,7 443100 933611 /usr/lib/libfreetype.so.6.3.7
tvtime 7509 faiz mem REG 3,7 54 1161695 /usr/share/locale/id_ID/LC_NUMERIC
tvtime 7509 faiz mem REG 3,7 2456 947712 /usr/share/locale/en_US/LC_TIME
tvtime 7509 faiz mem REG 3,7 21499 947121 /usr/share/locale/ISO-8859-1/LC_COLLATE
tvtime 7509 faiz mem REG 3,7 290 1161697 /usr/share/locale/id_ID/LC_MONETARY
tvtime 7509 faiz mem REG 3,7 57 947718 /usr/share/locale/en_US/LC_MESSAGES/SYS_LC_MESSAGES
tvtime 7509 faiz mem REG 3,7 34 1161694 /usr/share/locale/id_ID/LC_PAPER
tvtime 7509 faiz mem REG 3,7 62 1161696 /usr/share/locale/id_ID/LC_NAME
tvtime 7509 faiz mem REG 3,7 127 1161700 /usr/share/locale/id_ID/LC_ADDRESS
tvtime 7509 faiz mem REG 3,7 49 1161693 /usr/share/locale/id_ID/LC_TELEPHONE
tvtime 7509 faiz mem REG 3,7 23 1161698 /usr/share/locale/id_ID/LC_MEASUREMENT
tvtime 7509 faiz mem REG 3,7 302 1161699 /usr/share/locale/id_ID/LC_IDENTIFICATION
tvtime 7509 faiz mem REG 3,7 524936 1436175 /lib/ld-2.3.4.so
tvtime 7509 faiz 0r CHR 1,3 843 /dev/null
tvtime 7509 faiz 1w REG 3,8 2423 32785 /home/faiz/.xsession-errors
tvtime 7509 faiz 2w REG 3,8 2423 32785 /home/faiz/.xsession-errors
tvtime 7509 faiz 3r CHR 10,135 1495 /dev/rtc
tvtime 7509 faiz 4u unix 0xc4dc3c80 118010 socket
tvtime 7509 faiz 5u CHR 81,0 10114 /dev/v4l/video0
tvtime 7509 faiz 6r CHR 14,0 14171 /dev/mixer
tvtime 7509 faiz 7r FIFO 3,7 49016 /tmp/.TV-faiz/tvtimefifo-faiz.net

Untuk melihat file-file yang sedang digunakan oleh user faiz, ketik lsof -u faiz.

[root@faiz tmp]# lsof -u faiz |more
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
starticew 6870 faiz cwd DIR 3,8 4096 32769 /home/faiz
starticew 6870 faiz rtd DIR 3,7 4096 2 /
starticew 6870 faiz txt REG 3,7 655188 832322 /bin/bash
starticew 6870 faiz mem REG 3,7 5260 930487 /usr/lib/gconv/ISO8859-1.so
starticew 6870 faiz mem REG 3,7 178476 947122 /usr/share/locale/ISO-8859-1/LC_CTYPE
starticew 6870 faiz mem REG 3,7 1209384 1436229 /lib/tls/libc-2.3.4.so
starticew 6870 faiz mem REG 3,7 9508 1436188 /lib/libdl-2.3.4.so
starticew 6870 faiz mem REG 3,7 11312 1436163 /lib/libtermcap.so.2.0.8
starticew 6870 faiz mem REG 3,7 54 1161695 /usr/share/locale/id_ID/LC_NUMERIC
starticew 6870 faiz mem REG 3,7 2456 947712 /usr/share/locale/en_US/LC_TIME
starticew 6870 faiz mem REG 3,7 21499 947121 /usr/share/locale/ISO-8859-1/LC_COLLATE
starticew 6870 faiz mem REG 3,7 290 1161697 /usr/share/locale/id_ID/LC_MONETARY
starticew 6870 faiz mem REG 3,7 57 947718 /usr/share/locale/en_US/LC_MESSAGES/SYS_LC_MESSAGES
starticew 6870 faiz mem REG 3,7 34 1161694 /usr/share/locale/id_ID/LC_PAPER
starticew 6870 faiz mem REG 3,7 62 1161696 /usr/share/locale/id_ID/LC_NAME
starticew 6870 faiz mem REG 3,7 127 1161700 /usr/share/locale/id_ID/LC_ADDRESS
starticew 6870 faiz mem REG 3,7 49 1161693 /usr/share/locale/id_ID/LC_TELEPHONE
starticew 6870 faiz mem REG 3,7 23 1161698 /usr/share/locale/id_ID/LC_MEASUREMENT
starticew 6870 faiz mem REG 3,7 302 1161699 /usr/share/locale/id_ID/LC_IDENTIFICATION
starticew 6870 faiz mem REG 3,7 524936 1436175 /lib/ld-2.3.4.so
starticew 6870 faiz 0r CHR 1,3 843 /dev/null
starticew 6870 faiz 1w REG 3,8 2423 32785 /home/faiz/.xsession-errors
starticew 6870 faiz 2w REG 3,8 2423 32785 /home/faiz/.xsession-errors

Untuk melihat file-file yang digunakan oleh PID 5226 (pid untuk cupsd)

[root@faiz tmp]# lsof -p 5226
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
cupsd 5226 root cwd DIR 3,7 4096 2 /
cupsd 5226 root rtd DIR 3,7 4096 2 /
cupsd 5226 root txt REG 3,7 262812 934763 /usr/sbin/cupsd
cupsd 5226 root mem REG 3,7 38280 1436208 /lib/libnss_files-2.3.4.so
cupsd 5226 root mem REG 3,7 1209384 1436229 /lib/tls/libc-2.3.4.so
cupsd 5226 root mem REG 3,7 195188 1438243 /lib/libdbus-1.so.0.0.0
cupsd 5226 root mem REG 3,7 21784 1436186 /lib/libcrypt-2.3.4.so
cupsd 5226 root mem REG 3,7 68496 1436192 /lib/libnsl-2.3.4.so
cupsd 5226 root mem REG 3,7 116096 933741 /usr/lib/libcups.so.2
cupsd 5226 root mem REG 3,7 9508 1436188 /lib/libdl-2.3.4.so
cupsd 5226 root mem REG 3,7 27992 1436247 /lib/libpam.so.0.77
cupsd 5226 root mem REG 3,7 45612 164084 /usr/lib/libslp.so.1.0.0
cupsd 5226 root mem REG 3,7 1038448 933336 /usr/lib/libcrypto.so.0.9.7
cupsd 5226 root mem REG 3,7 198776 933337 /usr/lib/libssl.so.0.9.7
cupsd 5226 root mem REG 3,7 68388 1436240 /lib/libz.so.1.2.2.2
cupsd 5226 root mem REG 3,7 524936 1436175 /lib/ld-2.3.4.so
cupsd 5226 root 0u IPv4 16456 TCP *:ipp (LISTEN)
cupsd 5226 root 1u REG 3,7 851085 1355314 /var/log/cups/error_log
cupsd 5226 root 2u IPv4 16457 UDP *:ipp
cupsd 5226 root 3r FIFO 0,5 16458 pipe
cupsd 5226 root 4w FIFO 0,5 16458 pipe
cupsd 5226 root 6u REG 3,7 362276 1355315 /var/log/cups/access_log
Untuk melihat file-file yang di gunakan di direktori /tmp, ketik lsof +D /tmp

[root@faiz tmp]# lsof +D /tmp
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
xfs 5441 xfs 3u unix 0xcf5c67e0 13347 /tmp/.font-unix/fs-1
xfs 5441 xfs 5u unix 0xcf4cc680 16551 /tmp/.font-unix/fs-1
X 6150 root 4u unix 0xcf5c6060 15336 /tmp/.X11-unix/X0
X 6150 root 11u unix 0xcf4ccb00 16552 /tmp/.X11-unix/X0
X 6150 root 12u unix 0xcf5b1c40 16635 /tmp/.X11-unix/X0
X 6150 root 13u unix 0xca0cb6a0 16754 /tmp/.X11-unix/X0
X 6150 root 14u unix 0xca0cb0a0 16779 /tmp/.X11-unix/X0
X 6150 root 15u unix 0xc98c3cc0 16782 /tmp/.X11-unix/X0
X 6150 root 16u unix 0xc98c39c0 16787 /tmp/.X11-unix/X0
X 6150 root 17u unix 0xc98c3240 27527 /tmp/.X11-unix/X0
X 6150 root 18u unix 0xc8fe7260 27682 /tmp/.X11-unix/X0
X 6150 root 19u unix 0xc8fe7560 32397 /tmp/.X11-unix/X0
X 6150 root 20u unix 0xc2e57b20 110098 /tmp/.X11-unix/X0
X 6150 root 21u unix 0xc4dc3b00 110266 /tmp/.X11-unix/X0
X 6150 root 22u unix 0xc2e573a0 90318 /tmp/.X11-unix/X0
X 6150 root 23u unix 0xc2e570a0 90322 /tmp/.X11-unix/X0
X 6150 root 24u unix 0xc2e57820 78635 /tmp/.X11-unix/X0
X 6150 root 25u unix 0xc5d33e20 118011 /tmp/.X11-unix/X0
ssh-agent 6952 faiz 3u unix 0xca0cbe20 16667 /tmp/ssh-pTTVSL6870/agent.6870
gconfd-2 7021 faiz 13wW REG 3,7 649 1523678 /tmp/gconfd-faiz/lock/ior
wineserve 7331 faiz cwd DIR 3,7 4096 2219553 /tmp/.wine-500/server-84010
wineserve 7331 faiz 3ww REG 3,7 0 424728 /tmp/.wine-500/server-84010/lock
soffice.b 7410 faiz 9u unix 0xc6113040 110102 /tmp/OSL_PIPE_500_SingleOfficeIPC_90bac4d9ff72be4b97a18b4174a9e8f
tvtime 7509 faiz 7r FIFO 3,7 49016 /tmp/.TV-faiz/tvtimefifo-faiz.net

Untuk melihat seluruh socket internet yang terbuka gunakan lsof -i, dan untuk melihat hanya socket yang melayani port 22, gunakan lsof -i:22.

[root@faiz tmp]# lsof -i
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
hpiod 5153 root 0u IPv4 12584 TCP *:1024 (LISTEN)
hpiod 5153 root 2u IPv4 12587 TCP faiz.net:1024->faiz.net:4591 (ESTABLISHED)
python 5166 root 4u IPv4 12598 TCP faiz.net:1025 (LISTEN)
python 5166 root 5u IPv4 12639 TCP faiz.net:4591->faiz.net:1024 (ESTABLISHED)
cupsd 5226 root 0u IPv4 16456 TCP *:ipp (LISTEN)
cupsd 5226 root 2u IPv4 16457 UDP *:ipp
X 6150 root 1u IPv6 15334 TCP *:x11 (LISTEN)
X 6150 root 3u IPv4 15335 TCP *:x11 (LISTEN)
sshd 6160 root 3u IPv6 15188 TCP *:ssh (LISTEN)

[root@faiz tmp]# lsof -i:22
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
sshd 6160 root 3u IPv6 15188 TCP *:ssh (LISTEN)

Contoh diatas merupakan dasar konsep yang sangat berguna. Lalu pada saat bagaimanakah kita memerlukan lsof? Apakah anda pernah mencoba untuk meng’unmount suatu filesystem, namun gagal karena sistem mengatakan device is busy?. Ini berarti satu atau beberapa file sedang dipakai, dan tanpa lsof sangatlah sukar untuk menemukan file apa saja yang harus ditutup.

Untuk melihat seluruh file yang digunakan kecuali yang digunakan oleh user faiz, ketik
lsof -u ^faiz.

[root@faiz tmp]# lsof -u ^faiz
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
init 1 root cwd DIR 3,7 4096 2 /
init 1 root rtd DIR 3,7 4096 2 /
init 1 root txt REG 3,7 28360 1974757 /sbin/init
init 1 root mem REG 3,7 1209384 1436229 /lib/tls/libc-2.3.4.so
init 1 root mem REG 3,7 524936 1436175 /lib/ld-2.3.4.so
init 1 root 10u FIFO 0,12 3126 /dev/initctl
ksoftirqd 2 root cwd DIR 3,7 4096 2 /
ksoftirqd 2 root rtd DIR 3,7 4096 2 /

Anda dapat juga mengkombinasikan beberapa opsi dengan menggunakan boolean AND/OR pada perintah tunggal, contoh:
lsof -u faiz -a /dev/hda1 , akan menampilkan file-file di /dev/hda1 yang digunakan user faiz.

Referensi :

Artikel dari Jeremy G. ( Linuxquestion.org Founder)

Semoga bermanfaat.

Entry Filed under: FreeBSD, Linux

Komentar

Diperlukan

Diperlukan, hidden

Kode HTML yang di izinkan:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>

Track posting ini  |  Berlangganan Komentar ini menggunakan RSS


Kalender

February 2006
M T W T F S S
« Jan   Mar »
 12345
6789101112
13141516171819
20212223242526
2728  

Posting Terakhir