Использование lsof для получения информации об открытых файлах

2388
Использование lsof для получения информации об открытых файлах
Использование lsof для получения информации об открытых файлах

lsof позволяет получить список всех открытых файлов и процессов, которые их открывали. Это полезный инструмент, который должен быть в арсенале сисадмина или хакера linux.

Системный администратор

Вот несколько примеров ситуаций, которые покажут вам, насколько полезным он может быть.

Какой процесс использует этот файл?

Это может быть полезно в случае, если вам необходимо выяснить, какой процесс/пользователь ведет запись в данный файл журнала, кто редактирует данный файл и т.д.

[root@www ~]# lsof /var/log/squid/cache.log
COMMAND   PID  USER   FD   TYPE DEVICE SIZE   NODE NAME
squid   18671 squid    5u   REG  253,0 3073 784030 /var/log/squid/cache.log

Или более простой

[root@www ~]# lsof | grep /var/log/squid/cache.log
squid     18671     squid    5u      REG              253,0     3073     784030 /var/log/squid/cache.log

Какой процесс все еще использует этот каталог?

[root@www ~]# lsof +D /var/log/squid
COMMAND   PID  USER   FD   TYPE DEVICE SIZE   NODE NAME
squid   18671 squid    5u   REG  253,0 3073 784030 /var/log/squid/cache.log
squid   18671 squid    8w   REG  253,0 4041 784031 /var/log/squid/store.log

Или более простой

[root@www ~]# lsof | grep /var/log/squid
squid     18671     squid    5u      REG              253,0     3073     784030 /var/log/squid/cache.log
squid     18671     squid    8w      REG              253,0     4041     784031 /var/log/squid/store.log

Куда пишет процесс X?

Вы можете использовать эту команду вместе с некоторыми функциями grep:

[root@www ~]# lsof | grep squid | grep log
squid     18671     squid    5u      REG              253,0     3073     784030 /var/log/squid/cache.log
squid     18671     squid    8w      REG              253,0     4041     784031 /var/log/squid/store.log

Почему после удаления не освободилось место на диске?

[root@www ~]# lsof | grep deleted
httpd      1519      root   25w      REG              253,0   200918     688282 /usr/local/apache/logs/mapping-access_log (deleted)
httpd      9515    apache   25w      REG              253,0   200918     688282 /usr/local/apache/logs/mapping-access_log (deleted)
httpd      9516    apache   25w      REG              253,0   200918     688282 /usr/local/apache/logs/mapping-access_log (deleted)
httpd      9517    apache   25w      REG              253,0   200918     688282 /usr/local/apache/logs/mapping-access_log (deleted)