PulseAudio는 어떻게 시작합니까?


17

PulseAudio는 항상 내 시스템에서 실행 중이며 충돌하거나 종료하면 항상 즉시 다시 시작됩니다. 그러나 실제로는 PulseAudio를 시작 하지 않습니다 .

내가 체크 한 /etc/init.d//etc/X11/Xsession.d/, 내가 확인했다 systemctl list-units -a, 및 펄스 오디오는 아무데도 찾을 수 있습니다.

PulseAudio를 실행하지 않고 마술처럼 시작하는 방법은 무엇이며 어떻게 죽었을 때 즉시 다시 시작합니까?

xinit 및 i3 창 관리자 및 PulseAudio 5와 함께 Debian 8 (jessie)을 사용하고 있습니다.

답변:


15

X 및 i3 창 관리자를 실행하기 전이나 후에 libpulse * 공유 객체 제품군에 연결하는 프로세스는 오디오 하위 시스템과의 인터페이스 시도의 부산물로 사용자 프로세스에서 암시 적으로 PulseAudio 서버를 자동 생성 할 수 있습니다. . PulseAudio 제작자 Lennart Poettering은 2015 년 5 월 29 일에 systemd-devel 메일 링리스트로 이메일을 보내이를 확인 합니다 .

"pulseaudio는 일반적으로 시스템 서비스가 아니라 사용자 서비스입니다. 사용자 세션이 systemd에 의해 관리되도록 완전히 변환되지 않는 한 (아마도) systemd는 시작과 전혀 관련이 없습니다.

"PA는 일반적으로 세션 설정 스크립트 또는 서비스에서 시작됩니다. Gnome에서는 그놈 세션입니다. 예를 들어 라이브러리가 사용되는 경우 필요시 자동으로 생성되며 누락되었습니다."

예를 들어, 데비안 스트레치 (테스트)에서 웹 브라우저 IceWeasel은 두 개의 libpulse * 공유 객체에 연결됩니다. 1) libpulsecommon-7.1.so; 그리고 2) libpulse.so.0.18.2 :

k@bucket:~$ ps -ef | grep iceweasel
k        17318     1  5 18:58 tty2     00:00:15 iceweasel
k        17498  1879  0 19:03 pts/0    00:00:00 grep iceweasel
k@bucket:~$ sudo pmap 17318 | grep -i pulse
00007fee08377000  65540K rw-s- pulse-shm-2442253193
00007fee0c378000  65540K rw-s- pulse-shm-3156287926
00007fee11d24000    500K r-x-- libpulsecommon-7.1.so
00007fee11da1000   2048K ----- libpulsecommon-7.1.so
00007fee11fa1000      4K r---- libpulsecommon-7.1.so
00007fee11fa2000      8K rw--- libpulsecommon-7.1.so
00007fee121af000    316K r-x-- libpulse.so.0.18.2
00007fee121fe000   2044K ----- libpulse.so.0.18.2
00007fee123fd000      4K r---- libpulse.so.0.18.2
00007fee123fe000      4K rw--- libpulse.so.0.18.2

어떤 실행중인 프로세스가 libpulse *에 연결되는지 볼 수 있습니다. 예를 들어, 먼저 libpulse * 공유 객체 목록을 얻은 다음 각각에 대해 lsof를 실행하십시오 (참고 : 데비안 스트레치 (테스트)에서 제공되므로 출력이 다를 수 있음) :

sudo find / -type f -name "*libpulse*"
*snip*
/usr/lib/x86_64-linux-gnu/pulseaudio/libpulsedsp.so
/usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-7.1.so
/usr/lib/x86_64-linux-gnu/libpulse.so.0.18.2
/usr/lib/x86_64-linux-gnu/libpulse-simple.so.0.1.0
/usr/lib/x86_64-linux-gnu/libpulse-mainloop-glib.so.0.0.5
/usr/lib/libpulsecore-7.1.so
/usr/lib/ao/plugins-4/libpulse.so

sudo lsof /usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-7.1.so
COMMAND     PID       USER  FD   TYPE DEVICE SIZE/OFF   NODE NAME
gnome-she   864 Debian-gdm mem    REG  252,1   524312 274980 /usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-7.1.so
gnome-set   965 Debian-gdm mem    REG  252,1   524312 274980 /usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-7.1.so
gnome-set  1232          k mem    REG  252,1   524312 274980 /usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-7.1.so
gnome-she  1286          k mem    REG  252,1   524312 274980 /usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-7.1.so
chrome     2730          k mem    REG  252,1   524312 274980 /usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-7.1.so
pulseaudi 18356          k mem    REG  252,1   524312 274980 /usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-7.1.so

이러한 프로세스가 PulseAudio를 자동 생성하지 않도록하려면 ~ / .config / pulse / client.conf를 편집하고 행을 추가하십시오.

autospawn = no

PulseAudio와 그 라이브러리는 일반적으로 해당 설정을 존중합니다.

프로세스를 실행하여 libpulse *를 연결하면 PulseAudio가 너무 빨리 재생성되는 이유도 표시 될 수 있습니다. FreeDesktop.org 페이지 " Running PulseAudio "는이를 확인하는 것으로 보입니다.

"... 일반적으로 일부 백그라운드 응용 프로그램이 즉시 다시 연결되어 서버가 즉시 다시 시작됩니다."

xinit를 실행하여 콘솔을 통해 i3 창 관리자를 시작하고 표시 관리자 또는 데스크탑 환경을 사용하지 않는 것으로 보입니다. 이 답변의 나머지 부분은 그놈, KDE 등을 사용하는 사람들에 대한 정보를 자세히 설명합니다.

그놈 / KDE 자동 시작을위한 추가 정보

Debian Jessie (Stable) amd64의 PulseAudio (5.0-13) 패키지는 다음 네 가지 시스템 파일을 설치 합니다 .

  1. /etc/xdg/autostart/pulseaudio-kde.desktop
  2. /etc/xdg/autostart/pulseaudio.desktop
  3. / usr / bin / start-pulseaudio-x11
  4. / usr / bin / start-pulseaudio-kde

일부 그래픽 세션 관리자 는 사용자 로그인시 FreeDesktop.org 자동 시작 스크립트 를 자동으로 실행 합니다. PulseAudio 자동 시작 스크립트는 그래픽 세션 관리자에게 적절한 PulseAudio 시작 스크립트를 실행하도록 지시합니다.

/usr/bin/start-pulseaudio-x11
/usr/bin/start-pulseaudio-kde

이 스크립트는 PulseAudio 클라이언트 / usr / bin / pactl을 호출하여 PulseAudio 서버를 부산물로 생성하는 PulseAudio 모듈을로드합니다 (참고 : autospawn이 "no"로 설정된 경우, pactl은 PulseAudio 서버를 자동 생성 하지 않습니다 ).

자세한 내용은 FreeDesktop.org 페이지 " Running PulseAudio "에서 확인할 수 있습니다.

일부 디스플레이 관리자 및 기타 배포판에서는 PulseLinux 를 시작할 수 있습니다 (예 : ArchLinux 에서 SDDM) . 유지 보수 담당자 가 지금까지이를 해결했을 수도 있습니다.


4

Pulseaudio는 작은 데몬입니다. man pulseaudio명령을 사용하여 끌 수 pulseaudio --kill있지만 그렇게하면 다시 부활해야합니다. 부팅 할 때 시작하기위한 일반적인 초기화 스크립트가 있습니다 /etc/rc2.d/S50pulseaudio. 그러나 이것을 일반적인 리눅스 방식으로 제어하려고 시도하면 작동 /etc/init.d/pulseaudio stop하지 않습니다. 제거해도 /etc/rc2.d/S50pulseaudio부팅시 시작되지 않습니다.

오픈 respawning 습관, 중지하려면 /etc/pulse/client.conf, 변경 autospawn = yesautospawn = no하고, 설정 데몬 바이너리를 /bin/true. 다음과 같이이 줄의 주석 처리를 제거하십시오.

 autospawn = no
 daemon-binary = /bin/true

이제 일반적인 Linux 시작 파일을 처리 할 수 ​​있습니다. 먼저 삭제하십시오 /etc/rc2.d/S50pulseaudio. 또는 kill 명령으로 이름을 바꾸어 다시 원할 경우 링크를 유지합니다.

$ mv /etc/rc2.d/S50pulseaudio /etc/rc2.d/K50pulseaudio

또는

생략 할 시작 파일이 하나 더있을 수 있습니다 /etc/X11/Xsession.d/70pulseaudio.. 그놈 세션이 시작되면 펄스가 시작됩니다. 저장하려는 경우이를 삭제하거나 다른 디렉토리에 복사 한 후 정확한 파일 이름을 다시 확인하십시오. PulseAudio를 시작하는 스크립트를 찾을 때 유용한 트릭은 호출하는 바이너리를로 변경하는 /usr/bin/pulseaudio/bin/true입니다. 이 작업은 "아무것도하지 않고 성공적으로 수행하는"유일한 멋진 실행 파일입니다. 스크립트를 행복하게 유지하며 다시 변경하려는 경우 편리한 자리 표시 자입니다.

이제 모든 시작 및 부활 스크립트를 제거 했으므로 이제 펄스 오디오를 중지하고 시작하려면 아래 명령을 사용하십시오.

 $ pulseaudio --kill
 $ pulseaudio --start

1
약간 도움이되지만 실제로 질문에 대답하지는 않습니다. PulseAudio가 처음 시스템에서 어떻게 / 어디에서 / 어떻게 실행되는지 전혀 알지 못합니다. 데비안 8은 systemd를 사용하며 systemctl list-units -aPulseAudio를 포함하지 않습니다. xinit /etc/X11/Xsession.d는 위에서 언급 한 것처럼 스크립트를 시작 하고 PulseAudio도 포함하지 않습니다.
Hubro

펄스 오디오 프로세스의 부모 프로세스는 무엇입니까?
Thushi

1
이 답변의 텍스트는 Carla Schroder의 linuxplanet.com/linuxplanet/tutorials/7130/2 2010 기사에서 나온 것으로 보입니다 . 이 지침은 더 이상 Debian Jessie 및 PulseAudio (5.0-13)에 적용되지 않는 것 같습니다.
iokevins

0

Thushi / Carla Schroder (다음 답변 참조)의 답변은 debian wheezy에서 jessie로 업그레이드 한 후에도 여전히 잘 작동합니다. 부팅 메시지를 조사한 후 다음과 같은 오류가 발생했습니다 (오류는 마지막 줄에 표시됨).

root@voylinx:/etc#journalctl -b | grep pulseaudio
Dez 31 16:19:46 voylinx rtkit-daemon[1507]: Successfully made thread 1506 of process 1506 (/usr/bin/pulseaudio) owned by '1000' high priority at nice level -11.
Dez 31 16:19:49 voylinx rtkit-daemon[1507]: Successfully made thread 1526 of process 1506 (/usr/bin/pulseaudio) owned by '1000' RT at priority 5.
Dez 31 16:19:49 voylinx rtkit-daemon[1507]: Successfully made thread 1527 of process 1506 (/usr/bin/pulseaudio) owned by '1000' RT at priority 5.
Dez 31 16:19:49 voylinx rtkit-daemon[1507]: Successfully made thread 1528 of process 1506 (/usr/bin/pulseaudio) owned by '1000' RT at priority 5.
Dez 31 16:19:49 voylinx rtkit-daemon[1507]: Successfully made thread 1533 of process 1506 (/usr/bin/pulseaudio) owned by '1000' RT at priority 5.
Dez 31 16:19:50 voylinx rtkit-daemon[1507]: Successfully made thread 1548 of process 1548 (/usr/bin/pulseaudio) owned by '1000' high priority at nice level -11.
Dez 31 16:19:50 voylinx pulseaudio[1548]: [pulseaudio] pid.c: Daemon already running.

pulseaudio-daemon이 두 번 시작되었습니다. rtkit-daemon과 GNOME / KDE AUTOSTART 또는 다른 앱에 의해 한 번. 어쨌든 /etc/pulse/client.conf의 설정

autospawn = no
daemon-binary = /bin/true

내 문제를 해결했다. 내가 확인할 수없는 유일한 것은 /etc/rcX.d 디렉토리에 더 이상 시작 스크립트가 없다는 것입니다. rtkit-daemon은 systemd의 상호 작용으로 작업을 수행하기 때문에 매우 분명합니다.

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