Monitorando os bloqueios de arquivos bloqueados usando o flock

4

Gostaria de obter uma lista de pid's que mantêm o bloqueio compartilhado em /tmp/file . Isso é possível usando ferramentas simples de linha de comando?

    
por mpapec 13.09.2013 / 15:04

2 respostas

3
  • De man lsof :

    FD é o número do descritor de arquivo do arquivo ou:               FD é seguido por um desses caracteres, descrevendo o modo sob o qual o arquivo está aberto:

              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.
    

Portanto, R in 3uR significa que o bloqueio de leitura / compartilhamento é emitido por 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
  • Ler diretamente de /proc/locks é mais rápido que lsof ,

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

fuser /tmp/file listará todos os processos que tiverem o arquivo aberto, incluindo aqueles que possuem um bloqueio.

    
por 13.09.2013 / 15:24