파일을 잠그는 프로세스를 나열하는 방법은 무엇입니까?

파일을 잠그는 프로세스를 나열하는 방법은 무엇입니까?

를 사용하면 flock여러 프로세스가 동시에 공유 잠금을 보유하거나 쓰기 잠금을 획득할 때까지 기다릴 수 있습니다. 이러한 프로세스 목록을 어떻게 얻을 수 있나요?

즉, 주어진 파일 X에 대해 이상적으로는 파일 잠금을 보유하거나 대기 중인 모든 프로세스의 프로세스 ID를 찾습니다. 잠금을 기다리는 프로세스 수를 계산하는 것만으로도 매우 좋은 시작이 될 수 있습니다.

답변1

lslocks, 에서유틸리티 리눅스 패키지, 정확히 그렇습니다.

MODE열에서는 잠금을 기다리는 프로세스가 표시됩니다 *.

답변2

두 가지 가능성: ( lsof내 취향) 또는 lslk(특히 파일 잠금):

[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

lslk의 출력은 설명이 필요 없지만 lsof"FD" 열(위 10uW)에 잠금 설명을 넣습니다. 매뉴얼 페이지에서:

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.

따라서 위의 "FD" 열은 lsof다음과 같이 분류됩니다.

10이 열린 파일에 대한 리터럴 설명자입니다. 무엇에 연결할까/proc/1650/fd/10

u파일이 읽기 및 쓰기용으로 열려 있습니다.

W프로그램에 파일에 대한 쓰기 잠금이 있습니다.

답변3

lsof는 파일 목록을 보는 데 도움이 될 수 있습니다. 잠긴 파일을 보는 방법은 다음과 같습니다.

sudo lsof /var/lib/dpkg/lock 

답변4

lsof이 정보가 시스템에 누락된 경우 ls /proc/*/fd/* | grep LOCK_FILE_NAME동일한 정보를 제공해야 합니다.

관련 정보