ຕົວຢ່າງ ຄຳ ສັ່ງ 10 lsof ໃນ Linux


ນີ້ແມ່ນຊຸດຂອງ ຄຳ ສັ່ງ Linux ທີ່ ກຳ ລັງ ດຳ ເນີນຢູ່ຂອງພວກເຮົາແລະໃນບົດຄວາມນີ້ພວກເຮົາຈະທົບທວນ ຄຳ ສັ່ງ lsof ດ້ວຍຕົວຢ່າງທີ່ໃຊ້ໄດ້. ຄວາມ ໝາຍ ທີ່ວ່າ 'LiSt Open Files' ຖືກໃຊ້ເພື່ອຄົ້ນຫາວ່າມີເອກະສານໃດແດ່ທີ່ເປີດໃຊ້ໂດຍຂະບວນການໃດ. ດັ່ງທີ່ພວກເຮົາທຸກຄົນຮູ້ວ່າ Linux/Unix ຖືວ່າທຸກສິ່ງທຸກຢ່າງແມ່ນແຟ້ມເອກະສານ (ທໍ່, ເຕົ້າ, ປ່ອງ, ໄດເລກະທໍລີ, ອຸປະກອນແລະອື່ນໆ). ຫນຶ່ງໃນເຫດຜົນທີ່ຈະໃຊ້ ຄຳ ສັ່ງ lsof ແມ່ນເມື່ອແຜ່ນບໍ່ສາມາດຖອດໄດ້ຍ້ອນວ່າມັນບອກວ່າໄຟລ໌ ກຳ ລັງຖືກໃຊ້ຢູ່. ດ້ວຍຄວາມຊ່ອຍເຫລືອຂອງ ຄຳ ສັ່ງນີ້ພວກເຮົາສາມາດລະບຸໄຟລ໌ທີ່ ກຳ ລັງໃຊ້ງານໄດ້ງ່າຍ.

ໃນຕົວຢ່າງຂ້າງລຸ່ມນີ້, ມັນຈະສະແດງລາຍຊື່ເອກະສານເປີດຍາວໆບາງສ່ວນຂອງພວກມັນຖືກສະກັດເອົາເພື່ອຄວາມເຂົ້າໃຈດີຂື້ນເຊິ່ງສະແດງຄໍ ລຳ ເຊັ່ນ Command, PID, USER, FD, TYPE ແລະອື່ນໆ.

# lsof

COMMAND    PID      USER   FD      TYPE     DEVICE  SIZE/OFF       NODE NAME
init         1      root  cwd      DIR      253,0      4096          2 /
init         1      root  rtd      DIR      253,0      4096          2 /
init         1      root  txt      REG      253,0    145180     147164 /sbin/init
init         1      root  mem      REG      253,0   1889704     190149 /lib/libc-2.12.so
init         1      root   0u      CHR        1,3       0t0       3764 /dev/null
init         1      root   1u      CHR        1,3       0t0       3764 /dev/null
init         1      root   2u      CHR        1,3       0t0       3764 /dev/null
init         1      root   3r     FIFO        0,8       0t0       8449 pipe
init         1      root   4w     FIFO       0,8       0t0       8449 pipe
init         1      root   5r      DIR       0,10         0          1 inotify
init         1      root   6r      DIR       0,10         0          1 inotify
init         1      root   7u     unix 0xc1513880       0t0       8450 socket

ພາກແລະຄຸນຄ່າຂອງມັນແມ່ນການອະທິບາຍດ້ວຍຕົນເອງ. ເຖິງຢ່າງໃດກໍ່ຕາມ, ພວກເຮົາຈະກວດເບິ່ງຖັນ FD & TYPE ໃຫ້ລະອຽດກວ່າ.

FD - ຫຍໍ້ມາຈາກ File descriptor ແລະອາດຈະເຫັນຄຸນຄ່າບາງຢ່າງຄື:

<

  • cwd ໄດເລກະທໍລີເຮັດວຽກໃນປະຈຸບັນ
  • ບັນທຶກຮາກ rtd
  • txt ຂໍ້ຄວາມຂອງໂປແກຼມ (ລະຫັດແລະຂໍ້ມູນ)
  • mem ຄວາມຊົງ ຈຳ ທີ່ຖືກສ້າງແຜນທີ່
  • ໃນຕົວເລກຖັນ FD ເຊັ່ນ 1u ແມ່ນເຄື່ອງບັນທຶກເອກະສານຕົວຈິງແລະຕິດຕາມດ້ວຍ u, r, w ຂອງຮູບແບບຂອງມັນຄື:

    <

  • r ສຳ ລັບການເຂົ້າເຖິງການອ່ານ.
  • w ສຳ ລັບການເຂົ້າເຖິງການຂຽນ.
  • u ສຳ ລັບການເຂົ້າອ່ານແລະຂຽນ.
  • ປະເພດ - ຂອງແຟ້ມແລະມັນແມ່ນການ ກຳ ນົດ.

    <

  • DIR - ໄດເລກະທໍລີ
  • REG - ເອກະສານປົກກະຕິ
  • CHR - ເອກະສານພິເສດຕົວອັກສອນ.
  • FIFO - ເປັນອັນດັບ ໜຶ່ງ ໃນ First Out
  • ຄໍາສັ່ງຂ້າງລຸ່ມນີ້ຈະສະແດງບັນຊີລາຍຊື່ຂອງແຟ້ມທີ່ເປີດທັງ ໝົດ ຂອງ tecmint ຂອງຜູ້ໃຊ້.

    # lsof -u tecmint
    
    COMMAND  PID    USER   FD   TYPE     DEVICE SIZE/OFF   NODE NAME
    sshd    1838 tecmint  cwd    DIR      253,0     4096      2 /
    sshd    1838 tecmint  rtd    DIR      253,0     4096      2 /
    sshd    1838 tecmint  txt    REG      253,0   532336 188129 /usr/sbin/sshd
    sshd    1838 tecmint  mem    REG      253,0    19784 190237 /lib/libdl-2.12.so
    sshd    1838 tecmint  mem    REG      253,0   122436 190247 /lib/libselinux.so.1
    sshd    1838 tecmint  mem    REG      253,0   255968 190256 /lib/libgssapi_krb5.so.2.2
    sshd    1838 tecmint  mem    REG      253,0   874580 190255 /lib/libkrb5.so.3.3

    ເພື່ອຊອກຫາທຸກຂັ້ນຕອນການເຮັດວຽກຂອງພອດສະເພາະ, ພຽງແຕ່ໃຊ້ ຄຳ ສັ່ງຕໍ່ໄປນີ້ກັບຕົວເລືອກ -i. ຕົວຢ່າງຂ້າງລຸ່ມນີ້ຈະລາຍຊື່ທຸກຂັ້ນຕອນທີ່ ກຳ ລັງແລ່ນຂອງພອດ 22.

    # lsof -i TCP:22
    
    COMMAND  PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    sshd    1471    root    3u  IPv4  12683      0t0  TCP *:ssh (LISTEN)
    sshd    1471    root    4u  IPv6  12685      0t0  TCP *:ssh (LISTEN)

    ໃນຕົວຢ່າງຂ້າງລຸ່ມນີ້ສະແດງໃຫ້ເຫັນເອກະສານເຄືອຂ່າຍ IPv4 ແລະ IPv6 ເທົ່ານັ້ນທີ່ເປີດດ້ວຍ ຄຳ ສັ່ງແຍກຕ່າງຫາກ.

    # lsof -i 4
    
    COMMAND    PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    rpcbind   1203     rpc    6u  IPv4  11326      0t0  UDP *:sunrpc
    rpcbind   1203     rpc    7u  IPv4  11330      0t0  UDP *:954
    rpcbind   1203     rpc    8u  IPv4  11331      0t0  TCP *:sunrpc (LISTEN)
    avahi-dae 1241   avahi   13u  IPv4  11579      0t0  UDP *:mdns
    avahi-dae 1241   avahi   14u  IPv4  11580      0t0  UDP *:58600
    
    # lsof -i 6
    
    COMMAND    PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    rpcbind   1203     rpc    9u  IPv6  11333      0t0  UDP *:sunrpc
    rpcbind   1203     rpc   10u  IPv6  11335      0t0  UDP *:954
    rpcbind   1203     rpc   11u  IPv6  11336      0t0  TCP *:sunrpc (LISTEN)
    rpc.statd 1277 rpcuser   10u  IPv6  11858      0t0  UDP *:55800
    rpc.statd 1277 rpcuser   11u  IPv6  11862      0t0  TCP *:56428 (LISTEN)
    cupsd     1346    root    6u  IPv6  12112      0t0  TCP localhost:ipp (LISTEN)

    ເພື່ອລາຍຊື່ທຸກຂັ້ນຕອນທີ່ ກຳ ລັງແລ່ນຂອງແຟ້ມທີ່ເປີດຂອງພອດ TCP ຕັ້ງແຕ່ 1-1024.

    # lsof -i TCP:1-1024
    
    COMMAND  PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    rpcbind 1203     rpc   11u  IPv6  11336      0t0  TCP *:sunrpc (LISTEN)
    cupsd   1346    root    7u  IPv4  12113      0t0  TCP localhost:ipp (LISTEN)
    sshd    1471    root    4u  IPv6  12685      0t0  TCP *:ssh (LISTEN)
    master  1551    root   13u  IPv6  12898      0t0  TCP localhost:smtp (LISTEN)
    sshd    1834    root    3r  IPv4  15101      0t0  TCP 192.168.0.2:ssh->192.168.0.1:conclave-cpp (ESTABLISHED)
    sshd    1838 tecmint    3u  IPv4  15101      0t0  TCP 192.168.0.2:ssh->192.168.0.1:conclave-cpp (ESTABLISHED)
    sshd    1871    root    3r  IPv4  15842      0t0  TCP 192.168.0.2:ssh->192.168.0.1:groove (ESTABLISHED)
    httpd   1918    root    5u  IPv6  15991      0t0  TCP *:http (LISTEN)
    httpd   1918    root    7u  IPv6  15995      0t0  TCP *:https (LISTEN)

    ນີ້, ພວກເຮົາໄດ້ຍົກເວັ້ນຜູ້ໃຊ້ຮາກ. ທ່ານສາມາດຍົກເວັ້ນຜູ້ໃຊ້ສະເພາະໃດ ໜຶ່ງ ໂດຍໃຊ້ '^' ພ້ອມ ຄຳ ສັ່ງດັ່ງທີ່ສະແດງຢູ່ຂ້າງເທິງ.

    # lsof -i -u^root
    
    COMMAND    PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    rpcbind   1203     rpc    6u  IPv4  11326      0t0  UDP *:sunrpc
    rpcbind   1203     rpc    7u  IPv4  11330      0t0  UDP *:954
    rpcbind   1203     rpc    8u  IPv4  11331      0t0  TCP *:sunrpc (LISTEN)
    rpcbind   1203     rpc    9u  IPv6  11333      0t0  UDP *:sunrpc
    rpcbind   1203     rpc   10u  IPv6  11335      0t0  UDP *:954
    rpcbind   1203     rpc   11u  IPv6  11336      0t0  TCP *:sunrpc (LISTEN)
    avahi-dae 1241   avahi   13u  IPv4  11579      0t0  UDP *:mdns
    avahi-dae 1241   avahi   14u  IPv4  11580      0t0  UDP *:58600
    rpc.statd 1277 rpcuser    5r  IPv4  11836      0t0  UDP *:soap-beep
    rpc.statd 1277 rpcuser    8u  IPv4  11850      0t0  UDP *:55146
    rpc.statd 1277 rpcuser    9u  IPv4  11854      0t0  TCP *:32981 (LISTEN)
    rpc.statd 1277 rpcuser   10u  IPv6  11858      0t0  UDP *:55800
    rpc.statd 1277 rpcuser   11u  IPv6  11862      0t0  TCP *:56428 (LISTEN)

    ຕົວຢ່າງຂ້າງລຸ່ມນີ້ສະແດງໃຫ້ຜູ້ໃຊ້ tecmint ກຳ ລັງໃຊ້ ຄຳ ສັ່ງເຊັ່ນ ping ແລະ/etc directory.

    # lsof -i -u tecmint
    
    COMMAND  PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    bash    1839 tecmint  cwd    DIR  253,0    12288   15 /etc
    ping    2525 tecmint  cwd    DIR  253,0    12288   15 /etc

    ຄຳ ສັ່ງຕໍ່ໄປນີ້ທີ່ມີຕົວເລືອກ '-i' ສະແດງລາຍຊື່ຂອງການເຊື່ອມຕໍ່ເຄືອຂ່າຍທັງ ໝົດ 'ການຟັງ & ການສ້າງຕັ້ງ'.

    # lsof -i
    
    COMMAND    PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    rpcbind   1203     rpc    6u  IPv4  11326      0t0  UDP *:sunrpc
    rpcbind   1203     rpc    7u  IPv4  11330      0t0  UDP *:954
    rpcbind   1203     rpc   11u  IPv6  11336      0t0  TCP *:sunrpc (LISTEN)
    avahi-dae 1241   avahi   13u  IPv4  11579      0t0  UDP *:mdns
    avahi-dae 1241   avahi   14u  IPv4  11580      0t0  UDP *:58600
    rpc.statd 1277 rpcuser   11u  IPv6  11862      0t0  TCP *:56428 (LISTEN)
    cupsd     1346    root    6u  IPv6  12112      0t0  TCP localhost:ipp (LISTEN)
    cupsd     1346    root    7u  IPv4  12113      0t0  TCP localhost:ipp (LISTEN)
    sshd      1471    root    3u  IPv4  12683      0t0  TCP *:ssh (LISTEN)
    master    1551    root   12u  IPv4  12896      0t0  TCP localhost:smtp (LISTEN)
    master    1551    root   13u  IPv6  12898      0t0  TCP localhost:smtp (LISTEN)
    sshd      1834    root    3r  IPv4  15101      0t0  TCP 192.168.0.2:ssh->192.168.0.1:conclave-cpp (ESTABLISHED)
    httpd     1918    root    5u  IPv6  15991      0t0  TCP *:http (LISTEN)
    httpd     1918    root    7u  IPv6  15995      0t0  TCP *:https (LISTEN)
    clock-app 2362   narad   21u  IPv4  22591      0t0  TCP 192.168.0.2:45284->www.gov.com:http (CLOSE_WAIT)
    chrome    2377   narad   61u  IPv4  25862      0t0  TCP 192.168.0.2:33358->maa03s04-in-f3.1e100.net:http (ESTABLISHED)
    chrome    2377   narad   80u  IPv4  25866      0t0  TCP 192.168.0.2:36405->bom03s01-in-f15.1e100.net:http (ESTABLISHED)

    ຕົວຢ່າງຂ້າງລຸ່ມນີ້ສະແດງໃຫ້ເຫັນວ່າ PID ແມ່ນໃຜ 1 [ໜຶ່ງ].

    # lsof -p 1
    
    COMMAND PID USER   FD   TYPE     DEVICE SIZE/OFF   NODE NAME
    init      1 root  cwd    DIR      253,0     4096      2 /
    init      1 root  rtd    DIR      253,0     4096      2 /
    init      1 root  txt    REG      253,0   145180 147164 /sbin/init
    init      1 root  mem    REG      253,0  1889704 190149 /lib/libc-2.12.so
    init      1 root  mem    REG      253,0   142472 189970 /lib/ld-2.12.so

    ບາງຄັ້ງທ່ານອາດຈະຕ້ອງຂ້າທຸກຂັ້ນຕອນ ສຳ ລັບຜູ້ໃຊ້ສະເພາະ. ຄໍາສັ່ງຂ້າງລຸ່ມນີ້ຈະຂ້າທຸກຂະບວນການຂອງຜູ້ໃຊ້ tecmint.

    # kill -9 `lsof -t -u tecmint`

    ໝາຍ ເຫດ: ນີ້ມັນບໍ່ສາມາດຍົກຕົວຢ່າງຂອງຕົວເລືອກທີ່ມີຢູ່ທັງ ໝົດ, ຄຳ ແນະ ນຳ ນີ້ແມ່ນພຽງແຕ່ສະແດງວິທີການໃຊ້ ຄຳ ສັ່ງ lsof. ທ່ານອາດຈະອ້າງເຖິງ ໜ້າ man ຂອງ ຄຳ ສັ່ງ lsof ເພື່ອຈະຮູ້ກ່ຽວກັບມັນ. ກະລຸນາແບ່ງປັນມັນຖ້າທ່ານເຫັນວ່າບົດຂຽນນີ້ມີປະໂຫຍດຜ່ານກ່ອງ ຄຳ ເຫັນຂອງພວກເຮົາຂ້າງລຸ່ມນີ້.