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)