lsof примеры использования утилиты

lsof (от англ. LiSt of Open Files) — утилита, служащая для вывода информации о том, какие файлы используются теми или иными процессами.

lsof - сторонняя программа и не входит в состав утилит ОС по умолчанию. Устанавливается просто apt install lsof.

Она умеет показывать открытые сокеты, сетевые соединения и открытые файлы. Опция -i показывает открытые Интернет-соединения. Без опции -i программа lsof выводит информацию об открытых файлах. Вывод её несколько удобнее, чем у программы fstat, так как включает в себя не только номера inod'ов, но и имена файлов, которые она берёт из кеша ядра.

  • Показать TCP или UDP соединения
    $ lsof -i tcp
    $ lsof -i udp
  • Сколько файлов открыто в текущий момент в системе
    $ lsof | wc -l
    7673
  • Пример 2
    lsof -i -n
    COMMAND    PID     USER   FD   TYPE DEVICE SIZE NODE NAME
    sshd      2477     root    3u  IPv4   5993       TCP *:ssh (LISTEN)
    sshd      2477     root    4u  IPv6   5996       TCP *:ssh (LISTEN)
    nmbd      2511     root    7u  IPv4   6058       UDP *:netbios-ns 
    nmbd      2511     root    8u  IPv4   6059       UDP *:netbios-dgm 
    nmbd      2511     root    9u  IPv4   6061       UDP 192.168.1.15:netbios-ns 
    nmbd      2511     root   10u  IPv4   6062       UDP 192.168.1.15:netbios-dgm 
    smbd      2515     root   20u  IPv4   6133       TCP *:microsoft-ds (LISTEN)
    smbd      2515     root   21u  IPv4   6135       TCP *:netbios-ssn (LISTEN)
    avahi-dae 2801    avahi   14u  IPv4   7052       UDP *:mdns 
    avahi-dae 2801    avahi   15u  IPv4   7053       UDP *:43981 
    cupsd     2825     root    2u  IPv6  21549       TCP [::1]:ipp (LISTEN)
    cupsd     2825     root    3u  IPv4  21550       TCP 127.0.0.1:ipp (LISTEN)
    apache2   3002     root    3u  IPv4   7406       TCP *:www (LISTEN)
    apache2   3081 www-data    3u  IPv4   7406       TCP *:www (LISTEN)
    apache2   3082 www-data    3u  IPv4   7406       TCP *:www (LISTEN)
    apache2   3083 www-data    3u  IPv4   7406       TCP *:www (LISTEN)
    apache2   3084 www-data    3u  IPv4   7406       TCP *:www (LISTEN)
    apache2   3085 www-data    3u  IPv4   7406       TCP *:www (LISTEN)
    smbd      3841     root   24u  IPv4  13363       TCP 192.168.1.15:microsoft-ds->192.168.1.16:1981 (ESTABLISHED)
    firefox   6170 darkfire   20u  IPv4  54924       TCP 192.168.1.15:59666->74.125.87.102:www (ESTABLISHED)
    firefox   6170 darkfire   45u  IPv4  52609       TCP 192.168.1.15:33684->74.125.87.99:www (ESTABLISHED)
    firefox   6170 darkfire   53u  IPv4  54928       TCP 192.168.1.15:47590->206.132.73.21:www (ESTABLISHED)
    firefox   6170 darkfire   54u  IPv4  53605       TCP 192.168.1.15:36558->74.125.87.147:www (ESTABLISHED)
  • Опция -a объединяет несколько условий, например посмотреть все порты открытые процессом:
    lsof -i -a -p 1086
    COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    telegram- 1086  rav   16u  IPv4 797222      0t0  TCP 192.168.43.239:59476->li-in-f105.1e100.net:https (ESTABLISHED)
    telegram- 1086  rav   17u  IPv4 798814      0t0  TCP 192.168.43.239:39734->149.154.175.100:https (SYN_SENT)
    telegram- 1086  rav   29u  IPv4 798815      0t0  TCP 192.168.43.239:41498->196.55.254.176:5764 (SYN_SENT)
    telegram- 1086  rav   38u  IPv4 798807      0t0  TCP 192.168.43.239:58444->149.154.167.51:https (SYN_SENT)
    telegram- 1086  rav   40u  IPv4 798194      0t0  TCP 192.168.43.239:56116->149.154.175.100:http (SYN_SENT)
    telegram- 1086  rav   41u  IPv4 798808      0t0  TCP 192.168.43.239:41484->196.55.254.176:5764 (SYN_SENT)
    telegram- 1086  rav   43u  IPv4 796163      0t0  TCP 192.168.43.239:58450->149.154.167.51:https (SYN_SENT)
    telegram- 1086  rav   44u  IPv4 796164      0t0  TCP 192.168.43.239:41490->196.55.254.176:5764 (SYN_SENT)
    telegram- 1086  rav   48u  IPv4 798191      0t0  TCP 192.168.43.239:43192->149.154.167.51:http (SYN_SENT)
    telegram- 1086  rav   51u  IPv4 796167      0t0  TCP 192.168.43.239:43194->149.154.167.51:http (SYN_SENT)
  • Можно указывать порт в виде числа или же текстового алиаса из файла /etc/services. Две команды ниже идентичны и выводят одинаковую информацию.
    # lsof -i:5353
    # lsof -i:mdns
    COMMAND    PID  USER   FD   TYPE DEVICE SIZE NODE NAME
    avahi-dae 2801 avahi   14u  IPv4   7052       UDP *:mdns
  • lsof и head (без параметров выводит 10 линий)
    lsof -i -n | head -n 7
PQ VPS сервера в 28+ странах.