Sobes.tech
Middle

Kako saznati s kojim fajlovima program trenutno radi u Linuxu?

sobes.tech АИ

Одговор од АИ

Использвайте инструмента lsof (списък на отворените файлове).

# Основна употреба на `lsof` за показване на списък с всички отворени файлове
lsof

За да получите списък с отворени файлове от конкретен процес (по PID):

# Покажи списък с отворени файлове за процес с PID 1234
lsof -p 1234

За да получите списък с отворени файлове от конкретна команда (по име):

# Покажи списък с отворени файлове за всички процеси с името "nginx"
lsof -c nginx

За да получите списък с отворени файлове от конкретен потребител:

# Покажи списък с отворени файлове за потребителя "user1"
lsof -u user1

Допълнителни флагове на lsof:

Флаг Описание
-i Покажи мрежови връзки (сокети)
-n Не преобразува IP адресите в имена на хостове
-P Не преобразува портовете в имена на услуги
-r [N] Рестартира lsof на всеки N секунди

Пример за използване за определяне на процес, който използва конкретен файл:

# Кой процес използва файла /var/log/syslog?
lsof /var/log/syslog

Изходът на lsof включва следните колони:

  • COMMAND: Името на командата, която е стартирала процеса.
  • PID: Идентификатор на процеса.
  • TID: Идентификатор на нишката (ако е приложимо).
  • USER: Името на потребителя, който е стартирал процеса.
  • FD: Дескриптор на файла.
  • TYPE: Тип на възела на файла (DIR, REG, FIFO, CHR, BLK, SOCK, и т.н.).
  • DEVICE: Идентификатор на устройството.
  • SIZE/OFF: Размер на файла или отместване.
  • NODE: Номер на inode.
  • NAME: Името на файла или мрежовият адрес.