Ubuntu 16.04에서 inotify 시계의 사용자 제한에 도달


43

방금 Ubuntu 16.04를 설치 했으며 SmartGit을 시작할 때이 경고가 표시됩니다 .

IOException: User limit of inotify watches reached

또한이 경고가 시작됩니다 tail -f.

tail: inotify resources exhausted 

tail: inotify cannot be used, reverting to polling

우분투 14.04 에서이 오류가 발생하지 않으며 새로운 우분투에서 사용중인 응용 프로그램과 파일은 이전 버전에서 사용했던 것과 동일합니다.

유일한 관련 차이점은 PC에 추가 하드 디스크를 추가하고 Ubuntu의 백업 도구를 구성했다는 것입니다. 이 문제가 두 번째 디스크 또는 백업 도구와 관련이있을 수 있습니까?


답변:


76

Xenial의 현재 기본값은 8192입니다 (커널 소스의 fs / notify / inotify / inotify_user.c 참조). stdout에 파일을 인쇄하여이를 확인할 수 있습니다.

cat /proc/sys/fs/inotify/max_user_watches
8192

예를 들어 다음을 사용하여 숫자를 16384로 두 배로 늘릴 수 있습니다.

echo 16384 | sudo tee /proc/sys/fs/inotify/max_user_watches

inotify 시계는 메모리를 소비한다는 것을 명심하십시오 .64 비트 시스템에서 시계 당 약 160 바이트라고 생각합니다.

이를 영구적으로 설정하려면 다음과 같이 /etc/sysctl.conf에 항목을 추가하십시오.

echo fs.inotify.max_user_watches=16384 | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

.. 또는 수동 편집 /etc/sysctl.conf(업데이트하려면 루트 권한이 필요함)sudo sysctl -p


네 감사합니다. 나는 그것을 두 배로했으며 이제는 더 이상 경고가 없습니다. 16.384 시계에 얼마나 많은 메모리 (최대)가 소비됩니까? 내 계산에 따라 2.5MB가 다소 줄어 듭니다 . 맞아?
Andrea

그 순서의 무언가와 약간의 오버 헤드; 그것은 대단한 계획에서 너무 크지 않습니다.
Colin Ian King

다음은 (사용 된) 시계 askubuntu.com/questions/154255/의
michael

11

위의 답변은 훌륭하게 작동하지만 완전한 답변을 얻으려는 시도를 여기에서 찾고있는 이유는 설명하지 않습니다.

왜?

dropbox, git 등과 같은 파일을 동기화하는 프로그램은 inotify를 사용하여 파일 시스템의 변경 사항을 확인합니다. 한계는-로 볼 수 있습니다

cat /proc/sys/fs/inotify/max_user_watches

나를 위해, 그것은 100000 보여줍니다 . 이 한계가 디렉토리 내의 모든 파일을 모니터하기에 충분하지 않으면이 오류가 발생합니다.


inotify 감시자의 양 늘리기 (짧은 버전) :

당신이 실행하는 경우 데비안, 레드햇, 또는 다른 유사한 리눅스 배포판 의 터미널에서 다음을 실행합니다 :

echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

ArchLinux 를 실행 중인 경우 다음 명령을 대신 실행하십시오 (이유는 여기 참조).

echo fs.inotify.max_user_watches=524288 | sudo tee /etc/sysctl.d/40-max-user-watches.conf && sudo sysctl --system

그런 다음 터미널에 붙여 넣고 Enter 키를 눌러 실행하십시오.


기술적 세부 사항:

Listen은 Linux에서 기본적으로 inotify를 사용하여 디렉토리 변경 사항을 모니터합니다. 모니터링 할 수있는 파일 수에 대한 시스템 제한이 발생하는 것은 드문 일이 아닙니다. 예를 들어, Ubuntu Lucid (64 비트) inotify 한도는 8192로 설정되어 있습니다.

다음을 실행하여 현재 inotify 파일 감시 제한을 얻을 수 있습니다.

$ cat /proc/sys/fs/inotify/max_user_watches

이 한계가 디렉토리 내의 모든 파일을 모니터하기에 충분하지 않은 경우 청취가 제대로 작동하려면 한계를 늘려야합니다.

다음을 사용하여 임시로 새 제한을 설정할 수 있습니다.

$ sudo sysctl fs.inotify.max_user_watches=524288
$ sudo sysctl -p

한도를 영구적으로 유지하려면 다음을 사용하십시오.

$ echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf
$ sudo sysctl -p

Listen이 계속해서 불평하는 경우 max_queued_events 및 max_user_instances 값에주의를 기울여야 할 수도 있습니다.

출처 : https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers


3

기존 한도를 확인할 수 있으며 요구 사항에 따라 변경할 수 있음을 기준으로

To Check : cat /proc/sys/fs/inotify/max_user_watches To Alter : sudo sysctl fs.inotify.max_user_watches=524288

오류가 해결됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.