Мониторинг блокировок файлов, заблокированных с помощью стаи

Я хотел бы получить список pid, которые содержат общую блокировку в /tmp/file . Возможно ли это с помощью простых инструментов командной строки?

  • От man lsof :

    FD – это номер файла дескриптора файла или: за ним следует один из следующих символов, описывающий режим, в котором файл открыт:

      The mode character is followed by one of these lock characters, describing the type of lock applied to the file: R for a read lock on the entire file; W for a write lock on the entire file; space if there is no lock. 

Таким образом, R в 3uR означает, что чтение / совместное блокирование выдается 613 PID.

 #lsof /tmp/file COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME perl 613 turkish 3uR REG 8,2 0 1306357 /tmp/file 

  • Чтение непосредственно из /proc/locks происходит быстрее, чем lsof ,

     perl -F'[:\s]+' -wlanE' BEGIN { $inode = (stat(pop))[1]; @ARGV = "/proc/locks" } say "pid:$F[4] [$_]" if $F[7] == $inode ' /tmp/file 

fuser /tmp/file перечисляет все процессы, у которых файл открыт, включая те, у которых есть блокировка.