갑자기 pulseaudio 가 안될 때: inotify 문제.

심심하면 가끔씩 이 문제가 나타나서 사람의 기억을 되살려준다.
어제도 갑자기 잘 되던 PulseAudio 가 안되는 사태가 발발(?)했다.
inotify 문제를 몰랐다면 꽤나 짜증이 났었을 텐데.. 그만큼 내공이 많이 쌓였다는 얘기.

이 글은, 예전에 쓴 글에 기반을 두고 있지만, 내용은 조금 바꿨다.


어떤 상황에서든, 어떤 식으로든 갑자기 PulseAudio 가 작동하지 않을 때가 있다. 이럴 경우, 십중팔구는 inotify 문제라고 볼 수 있다. 특히, 파일 입출력이 빈번한 프로그램을 새로 설치한 후 이런 상황이 됐다면 가능성은 더 높아진다.

내 경우, Atom, Double Commander, Apache 등을 설치했을 때 이런 일이 생겨났다.

확인해볼 수 있는 방법은 다음과 같다.

$ pulseaudio -vvv

꽤 긴 내용이 출력되는데, 여기에서 ‘E: [pulseaudio] main.c: 데몬 초기화 실패‘라는 오류가 있는지 확인한다.

보다 자세한 출력문구는 다음과 같다. 한국어/영어로 모두 옮겨봤다.

# 한국어(라기보다는 한/영 혼용?)
E: [pulseaudio] module-systemd-login.c: Failed to create session monitor: 장치에 남은 공간이 없음
E: [pulseaudio] module.c: Failed to load module "module-systemd-login" (argument: ""): initialization failed.
E: [pulseaudio] main.c: Module load failed.
E: [pulseaudio] main.c: 데몬 초기화 실패.

# 영어
E: [pulseaudio] module-systemd-login.c: Failed to create session monitor: No space left on device
E: [pulseaudio] module.c: Failed to load module "module-systemd-login" (argument: ""): initialization failed.
E: [pulseaudio] main.c: Module load failed.
E: [pulseaudio] main.c: Failed to initialize daemon.

저 메시지들중, 오류 해결을 위한 중요한 단서는, “Failed to create session monitor: 장치에 남은 공간이 없음” 이다.

이 문제가 맞는지 확인을 위해, 다음 명령을 내려본다.

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

위 값은 8192 가 기본인데, 어떤 이유든 부족해지면 위와 같은 상황이 발생한다.
임시로 이 값을 늘려보고, 결과를 확인한다.

$ sudo sysctl fs.inotify.max_user_watches=32768
$ pulseaudio -vvv

오류가 사라졌다면, 원인은 확인한 셈이 됐다. 다만, 저 방법은 전원을 끄면 효과가 사라지므로, 영구 저장할 방법을 적용해야 한다.

자세한 방법은 다른 글에 있는데, 간단하게 정리하면 아래와 같다.

$ sudo sh -c 'echo fs.inotify.max_user_watches=32768 > /etc/sysctl.d/60-inotify.conf'

또는 저 파일을 만들고, 해당 내용을 직접 입력해도 된다.

직접 /etc/sysctl.conf 에 추가해 주는 방법보다는, 이 방법이 파일 보관등을 위해서도 더 낫다고 본다.


** Insync 를 설치하면, 이 값을 무려 1048576 로 설정해놓는다.
/etc/sysctl.conf 에 직접 이 내용을 기록하므로, 주의가 필요하다.

안녕하세요. 글 남겨주셔서 고맙습니다.