를 사용하면 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
동일한 정보를 제공해야 합니다.