Nodemon 오류 : 파일 감시자 수에 대한 시스템 제한에 도달했습니다.


102

저는 graphql 작업을 배우고 graphql사용 prisma-binding하고 있습니다. nodemon노드 서버를 시작하는 동안 이 오류가 발생하고 graphql-cli. 누구든지이 오류가 무엇인지 말해 줄 수 있습니까?

오류:

Internal watch failed: ENOSPC: System limit for number of file watchers reached, watch '/media/rehan-sattar/Development/All projects/GrpahQl/graph-ql-course/graphql-prisma/src/generated

이것은 리눅스 ulimit를 오류가 여기에 볼 수있다 stackoverflow.com/questions/34588/...
— Janith

이것을 시도했습니다! 다시 같은 오류가 발생합니다!
— Rehan Sattar

2
너무 많은 파일을보고있을 수 있습니다. nod_modules 디렉토리도 포함되어 있을까요?
— Mikkel

node_modules 모든 패키지가 있기 때문에 필수입니다. D : 나는 그것이 나를 위해 일하지만 난 지금 얼마나 걸릴지 모르는, 내 서버의 포트에서 실행 이전 프로세스를 종료하려고했습니다
— Rehan 사타르을

답변:


226

Linux를 사용하는 경우 프로젝트가 시스템의 파일 감시자 제한에 도달하고 있습니다.

이 문제를 해결하려면 터미널에서 다음을 시도하십시오.

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

2
사용 sysctl --system최근 시스템에 대해 다시로드
— YLJ

6
이 작업을 수행 할 때 알아야 할 다른 의미가 있습니까? 이것이 문제를 해결하는 데 도움이된다는 것을 알고 직접 시도했습니다. 그러나 나는이 수정이 야기 할 수있는 가능한 부작용에 대해 약간 회의적입니다.
— Aldee

:이 위키를 확인하는 것이 좋습니다 이러한 변화의 기술적 의미에 대한 @Aldee github.com/guard/listen/wiki/...
— ISAC 모 우라

이것은 또한 npm 플러그인과 관련된 많은 문제를 해결했습니다. thx
— The Bumpaster

3
얼마나 많이 사용 중인지 확실하지 않은 경우 너무 많이 늘리지 않는 것이 좋습니다. 다음과 함께 사용중인 번호를 확인합니다find /proc/*/fd -user "$USER" -lname anon_inode:inotify -printf '%hinfo/%f\n' 2>/dev/null | xargs cat | grep -c '^inotify'
— 닉 황소에게

23

Ubuntu 컴퓨터에서 VSCode로 작업 할 때 가끔이 문제가 발생합니다.

제 경우에는 다음 해결 방법이 도움이됩니다.

감시자를 중지하고 VScode를 닫고 감시자를 시작하고 VSCode를 다시 엽니 다.


맞습니다! VSCode 때문입니다. 자동 저장 모드 여야합니다.
— Hùng Ng Vi

19

시스템 사용자에 대한 inotify 감시자 제한 을 늘려야합니다 . 다음을 사용하여 명령 줄에서이 작업을 수행 할 수 있습니다.

sudo sysctl -w fs.inotify.max_user_watches=100000

하지만 재부팅 할 때까지만 지속됩니다. 이를 영구적으로 만들려면 /etc/sysctl.d/10-user-watches.conf다음 내용으로 명명 된 파일을 추가하십시오 .

fs.inotify.max_user_watches = 100000

변화 위 (또는 다른)를 한 후, 당신은 모든 sysctl을 구성 파일의 설정을 다시로드 할 수 있습니다 /etc로 sudo sysctl -p.


정말 고맙습니다! 나를 위해 일했다!! 하지만이 파일을 어디에 추가해야합니까?
— Rehan Sattar

@RehanSattar 파일을 /etc/sysctl.d/10-user-watches.conf만들고 그 안에 넣습니다 fs.inotify.max_user_watches = 100000.
— cjs 2019-04-06

완전성을 위해 여기에 넣습니다 echo fs.inotify.max_user_watches=100000 | sudo tee /etc/sysctl.d/10-user-watches.conf && sudo sysctl -p.
— RedHatter 2010 년

2
사용 sysctl --system최근 시스템에 대해 다시로드
— YLJ

4

변경 사항을 테스트하기 위해 524288 값으로 매개 변수를 임시로 설정했습니다.

sysctl -w fs.inotify.max_user_watches=524288

그런 다음 유효성 검사를 진행합니다.

npm run serve

문제가 해결되었습니다. 영구적으로 만들려면 "/etc/sysctl.conf"파일에 한 줄을 추가 한 다음 sysctl 서비스를 다시 시작해야합니다.

cat /etc/sysctl.conf |tail -n 2
fs.inotify.max_user_watches=524288

sudo systemctl restart systemd-sysctl.service

일시적으로 테스트를위한이 힌트는 값을 매길 수 없습니다. 감사합니다
— intmarinoreturn0 dec

1

관찰자 수를 얼마나 늘릴 지 알기가 어려울 수 있습니다. 따라서 다음은 감시자 수를 두 배로 늘리는 유틸리티입니다.

function get_inode_watcher_count() {
  find /proc/*/fd -user "$USER" -lname anon_inode:inotify -printf '%hinfo/%f\n' 2>/dev/null | 
  xargs cat | 
  grep -c '^inotify'
}

function set_inode_watchers() {
  sudo sysctl -w fs.inotify.max_user_watches="$1"
}

function double_inode_watchers() {
  watcher_count="$(get_inode_watcher_count)"
  set_inode_watchers "$((watcher_count * 2))"

  if test "$1" = "-p" || test "$1" = "--persist"; then
    echo "fs.inotify.max_user_watches = $((watcher_count * 2))" > /etc/sysctl.d/10-user-watches.conf
  fi
}

# Usage
double_inode_watchers
# to make the change persistent
double_inode_watchers --persist

0

나는 같은 문제가 있었지만 내 것은 webpack에서 나왔다. 고맙게도 그들은 사이트에 훌륭한 솔루션 을 제공합니다 .

일부 시스템의 경우 많은 파일을 보면 CPU 또는 메모리 사용량이 많아 질 수 있습니다. 정규식을 사용하여 node_modules와 같은 거대한 폴더를 제외 할 수 있습니다.

webpack.config.js

module.exports = {
  watchOptions: {
    ignored: /node_modules/
  }
};

-3

Linux에서는 실제로 sudo로 실행했습니다. sudo npm start


5
일반적으로 루트가 일반 사용자보다 inotify 감시 제한이 훨씬 더 높기 때문에 이것은 종종 작동하지만, 필요하지 않을 때 루트로 작업을 실행하는 것은 매우 나쁜 생각입니다. 사용자 제한을 변경하는 방법 은이 질문에 대한 내 대답을 참조하십시오 .
— CJS
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.