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

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

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

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

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

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

[[email protected] ~]# 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

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

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

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

[[email protected] ~]# 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

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

[[email protected] ~]# 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:

[[email protected] ~]# 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

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

[[email protected] ~]# 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)