또는

또는

PulseAudio는 항상 내 시스템에서 실행되고 있으며 충돌이 발생하거나 닫히면 항상 즉시 다시 시작됩니다. 그러나 나는 실제로 한 번도시작펄스 오디오.

확인 /etc/init.d/하고 또 /etc/X11/Xsession.d/확인했는데 systemctl list-units -aPulseAudio를 찾을 수 없습니다.

PulseAudio를 실행하지 않아도 마술처럼 저절로 시작되는 것처럼 보이는 이유는 무엇이며, 종료되면 어떻게 즉시 다시 시작됩니까?

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

답변1

공유 객체의 libpulse* 제품군에 연결하는 모든 프로세스(X 및 i3 창 관리자를 실행하기 전이나 후에)와 상호 작용을 시도하는 부산물로 사용자 프로세스에서 PulseAudio 서버를 암시적으로 자동 생성할 수 있습니다. 오디오 하위 시스템. PulseAudio의 창시자인 Lennart Poettering은 이를 확증하는 것처럼 보였습니다.2015-05-29 systemd-devel 메일링 리스트에 이메일 보내기:

"pulseaudio는 일반적으로 시스템 서비스가 아니라 사용자 서비스입니다. 사용자 세션이 systemd에 의해 관리되도록 완전히 변환되지 않는 한(가능성은 낮음) systemd는 이를 시작하는 데 전혀 관여하지 않습니다.

"PA는 일반적으로 세션 설정 스크립트 또는 서비스에서 시작됩니다. 예를 들어 Gnome에서는 gnome-session입니다. 라이브러리를 사용하는 경우 요청 시 자동으로 생성되므로 누락되었는지 주의하세요."

예를 들어, Debian Stretch(테스트)에서 웹 브라우저 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를 실행합니다(참고: 이는 Debian Stretch(테스트)에서 가져온 것이므로 출력이 다를 수 있습니다).

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 페이지, "실행펄스오디오”, 이것을 확인하는 것 같습니다:

"...일반적으로 일부 백그라운드 애플리케이션은 즉시 다시 연결되어 서버가 즉시 다시 시작됩니다."

콘솔을 통해(xinit를 실행하여) i3 창 관리자를 시작하고 디스플레이 관리자나 데스크탑 환경을 사용하지 않는 것으로 보입니다. 이 답변의 나머지 부분은 GNOME, KDE 등을 사용하는 사람들을 위한 자세한 정보입니다.

GNOME/KDE 자동 시작에 대한 추가 정보

Debian Jessie(안정 버전) 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 페이지를 방문하세요."실행펄스오디오".

또한 다른 배포판에서는 일부 디스플레이 관리자가 PulseAudio를 시작할 수 있습니다(예:ArchLinux의 SDDM. 관리자가 지금쯤 이 문제를 해결했을 수도 있습니다.

답변2

PulseAudio는 어떻게 시작되었나요?

이는 여전히 유효한 질문이지만 시간이 지남에 따라 답변이 변경되었습니다. 이제 PulseAudio는 사용자의 systemd에 의해 자동으로 시작되고, 이는 사용자가 로그인할 때 시스템의 systemd에 의해 시작되기 때문에 이전 답변은 불충분하거나 올바르지 않습니다.

$ systemctl --user status pulseaudio
● pulseaudio.service - Sound Service
   Loaded: loaded (/usr/lib/systemd/user/pulseaudio.service; enabled; vendor pre
   Active: active (running) since Tue 2020-03-14 15:29:56 ZULU; 13s ago
 Main PID: 31080 (pulseaudio)
   CGroup: /user.slice/user-1000.slice/[email protected]/pulseaudio.service
           ├─31080 /usr/bin/pulseaudio --daemonize=no
           └─31081 /usr/lib/x86_64-linux-gnu/pulse/gsettings-helper

PulseAudio 종료

새 인스턴스가 즉시 시작되지 않도록 PulseAudio 프로세스를 중지하려면 다음을 사용하십시오 systemctl --user stop.

$ systemctl --user stop pulseaudio.service pulseaudio.socket

PulseAudio 비활성화

로그인 시 PulseAudio가 자동으로 시작되는 것을 원하지 않으면 다음과 같이 비활성화할 수 있습니다.

$ systemctl --user disable pulseaudio.service pulseaudio.socket

(그런데 비활성화하더라도 필요할 때 PulseAudio를 시작할 수 있습니다 systemctl --user start.)


일반적으로 질문에 대답

위의 명령만 있으면 됩니다. 하지만 스스로 해결책을 찾는 방법에 관심이 있다면 계속해서 읽어보세요.

사운드 카드에 어떤 프로세스가 열려 있는지 확인하세요.

lsof또는 명령을 사용하여 fuser -v장치 파일이 열려 있는 프로세스를 확인합니다.

$ lsof /dev/snd/*
COMMAND     PID USER      FD   TYPE DEVICE SIZE/OFF  NODE NAME
pulseaudi 32768 hackerb9  3u   CHR  116,5       0t0 15499 /dev/snd/controlC0

어떤 프로세스가 PulseAudio를 시작했는지 확인하세요.

pstree -s아래와 같이 상위 프로세스를 표시 하는 데 사용됩니다 .

$ pstree -sp 32768
systemd(1)───systemd(738)───pulseaudio(32768)─┬─gsettings-helpe(32769)─┬─{gsett+
                                              │                        ├─{gsett+
                                              │                        └─{gsett+
                                              └─{pulseaudio}(32773)

systemd이를 사용하여 PulseAudio가 내 계정(PID 738)에서 실행되는 인스턴스에 의해 실제로 시작되었는지 확인했습니다.

$ ps -fp 738
UID        PID  PPID  C STIME TTY          TIME CMD
hackerb9   738     1  0 Feb10 ?        00:00:00 /lib/systemd/systemd --user

그러면 이를 중지하기 위해 무엇을 사용해야 하는지 추측하기 쉽습니다 systemctl --user.

답변3

Pulseaudio는 작은 데몬입니다. man pulseaudio명령으로 끌 수 있지만 pulseaudio --kill그렇게 하면 다시 생성됩니다. 자체적으로 다시 생성됩니다. 일반 초기화 스크립트는 부팅 시 이를 시작할 수 있습니다 /etc/rc2.d/S50pulseaudio. 하지만 일반적인 리눅스 방식으로 제어하려고 하면 실행해도 /etc/init.d/pulseaudio stop멈추지 않아 동작하지 않는다. 이를 제거해도 /etc/rc2.d/S50pulseaudio부팅 시 시작되는 것을 방지할 수 없습니다.

다시 생성되는 습관을 중지하려면 을 열고 로 /etc/pulse/client.conf변경한 후 daemon-binary를 로 설정하십시오 . 다음과 같이 해당 줄의 주석 처리가 제거되었는지 확인하세요.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. 그러면 Gnome 세션이 시작될 때 Pulse가 시작됩니다. 삭제하거나 다른 디렉터리에 복사(저장을 원할 경우)한 후 정확한 파일명을 다시 확인하세요. PulseAudio를 시작하는 스크립트를 찾을 때 유용한 트릭 은 /usr/bin/pulseaudio. /bin/true이는 스크립트를 만족스럽게 유지하며 다시 변경하려는 경우 편리한 자리 표시자입니다.

이제 모든 시작 및 재생성 스크립트를 지웠으므로 이제 다음 명령을 사용하여 Pulse Audio를 중지하고 시작하십시오.

 $ pulseaudio --kill
 $ pulseaudio --start

답변4

Tushi/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.

pulsaudio-daemon이 두 번 시작되었습니다. 한번은 rtkit-daemon에 의해 실행되고, 다른 때에는 GNOME/KDE AUTOSTART 또는 기타 응용 프로그램에 의해 실행됩니다. 어쨌든 /etc/pulse/client.conf에 설정하십시오.

autospawn = no
daemon-binary = /bin/true

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

관련 정보