Comment listr les process de locking du file?

En utilisant flock , plusieurs process peuvent avoir un verrou partagé en même time, ou être en attente d'acquérir un verrou en écriture. Comment get une list de ces process?

C'est-à-dire, pour un file X donné, idéalement pour find l'identifiant de process de chaque process qui soit détient ou attend un verrou sur le file. Ce serait un très bon début, mais juste pour countr le nombre de process en attente d'un verrou.

lslocks , du package util-linux , fait exactement cela.

Dans la colonne MODE , les process en attente d'un verrou seront marqués d'un * .

Deux possibilités: lsof (ma preference) ou lslk (spécifiquement pour les verrous de files):

 [root@policyServer ~]# lslk | grep "master.lock" SRC PID DEV INUM SZ TY M ST WH END LEN NAME master 1650 253,0 12423 33 w 0 0 0 0 0 /var/lib/postfix/master.lock [root@policyServer ~]# lsof | grep "master.lock" master 1650 root 10uW REG 253,0 33 12423 /var/lib/postfix/master.lock 

La sortie de lslk est auto-expansible mais lsof met la description de locking dans la colonne "FD" (qui est 10uW ci-dessus). De la page de manuel:

 The mode character is followed by one of these lock characters, describing the type of lock applied to the file: N for a Solaris NFS lock of unknown type; r for read lock on part of the file; R for a read lock on the entire file; w for a write lock on part of the file; W for a write lock on the entire file; u for a read and write lock of any length; U for a lock of unknown type; x for an SCO OpenServer Xenix lock on part of the file; X for an SCO OpenServer Xenix lock on the entire file; space if there is no lock. 

Donc la colonne "FD" de lsof ci-dessus se décompose en:

10 Le descripteur littéral de ce file ouvert. Qu'est-ce qui est mis en /proc/1650/fd/10 par /proc/1650/fd/10

u file est ouvert pour la lecture et l'écriture

Programme W a un verrou en écriture sur le file.

lsof peut aider à voir la list des files. voici la façon de voir les files verrouillés.

 sudo lsof /var/lib/dpkg/lock