PulseAudio nasıl başlar?


19

PulseAudio her zaman sistemimde çalışıyor ve çökerse veya öldürürsem her zaman anında yeniden başlatılır. Ancak, Asla PulseAudio'yu başlatmam .

Kontrol ettim /etc/init.d/ve /etc/X11/Xsession.d/kontrol ettim systemctl list-units -ave PulseAudio hiçbir yerde bulunamadı.

PulseAudio nasıl büyülü bir şekilde kendimi çalıştırmadan kendiliğinden başlıyor ve öldüğünde anında nasıl yeniden başlıyor?

Debin 8'i (jessie) xinit ve i3 pencere yöneticisi ve PulseAudio 5 ile kullanıyorum.

Yanıtlar:


15

Paylaşılan nesnelerin libpulse * ailesine (X ve i3 pencere yöneticisini çalıştırmadan önce veya sonra) bağlanan herhangi bir işlem, ses alt sistemiyle arayüz oluşturma girişimlerinin bir ürünü olarak kullanıcı işleminiz altında dolaylı olarak PulseAudio sunucusunu otomatik olarak gösterebilir . PulseAudio yaratıcısı Lennart Poettering , systemd-devel posta listesine bir 2015-05-29 e-postasında bunu onaylıyor gibi görünüyor :

"pulseaudio genellikle bir sistem hizmeti değil, bir kullanıcı hizmetidir. Kullanıcı oturumunuz tamamen systemd tarafından yönetilmek üzere dönüştürülmediği sürece (olası değildir) systemd bu nedenle başlatılmasıyla hiç ilgilenmez.

"PA genellikle oturum kurulum komut dosyasından veya hizmetten başlatılır. Örneğin Gnome'da bu gnome-session. Kütüphaneler kullanılırsa ve istekte bulunmadığında isteğe bağlı olarak otomatik olarak oluşturulur."

Örneğin, Debian Stretch'te (Test), web tarayıcısı IceWeasel iki libpulse * paylaşılan nesneye bağlanır: 1) libpulsecommon-7.1.so; ve 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

Hangi çalışan işlemlerin libpulse * ile bağlantılı olduğunu görebilirsiniz. Örneğin, önce libpulse * paylaşılan nesnelerin bir listesini alın, ardından her birinde lsof komutunu çalıştırın (not: bu Debian Stretch'ten (Test) gelir, bu nedenle çıktınız farklı olabilir):

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

Bu işlemlerin PulseAudio'yu otomatik olarak göstermemesini söylemek için ~ / .config / pulse / client.conf dosyasını düzenleyin ve satır ekleyin

autospawn = no

PulseAudio ve kütüphaneleri genel olarak bu ortama saygı duyar.

İşlemleri çalıştırarak libpulse * bağlantısı, PulseAudio'nun neden bu kadar hızlı yeniden yazıldığını da gösterebilir. FreeDesktop.org sayfası, " Running PulseAudio ", bunu onaylıyor gibi görünüyor:

"... genellikle bazı arka plan uygulamaları hemen yeniden bağlanır ve sunucunun hemen yeniden başlatılmasına neden olur."

İ3 pencere yöneticisini konsoldan başlattığınızı (xinit çalıştırarak) ve bir görüntü yöneticisi veya masaüstü ortamı kullanmadığınızı belirtiyorsunuz. Bu cevabın geri kalanı GNOME, KDE, vb.

GNOME / KDE AUTOSTART İÇİN EK BİLGİ

Debian Jessie (Kararlı) amd64'teki PulseAudio (5.0-13) paketi, aşağıdaki dört sistem dosyasını yükler :

  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

Bazı grafik oturumu yöneticileri , kullanıcı oturum açtıklarında FreeDesktop.org otomatik başlatma komut dosyalarını otomatik olarak çalıştırır . PulseAudio otomatik başlatma komut dosyası, grafik oturum yöneticilerine uygun PulseAudio başlangıç ​​komut dosyasını çalıştırmasını söyler:

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

Bu komut dosyaları hangi yumurtlar PulseAudio'nun modüllerini yüklemek için PulseAudio istemci / usr / bin / pactl dediğimiz bir yan ürün olarak PulseAudio'nun sunucusu (not: "hayır", pactl hususlara autospawn kümesi varsa o ve irade değil PulseAudio'nun sunucusuna autospawn).

Daha fazla bilgi için, FreeDesktop.org sayfasındaki " PulseAudio'yu Çalıştırma " sayfasında.

Ek olarak ve diğer dağıtımlarda bazı ekran yöneticileri PulseAudio'yu başlatabilir (örneğin, ArchLinux'da SDDM . Şu ana kadar koruyucular bunu çözmüş olabilir).


4

Pulseaudio küçük bir cintir. man pulseaudiokomutu ile kapatabileceğinizi söyler, pulseaudio --killancak bunu yeniden doğuşu tekrar yapar - kendini yeniden doğurur. Normal bir init betiği önyüklemede başlatmak için vardır /etc/rc2.d/S50pulseaudio. Ancak bunu normal Linux yolunu kontrol etmeye çalıştığınızda, çalışmaz, çünkü çalıştırmak /etc/init.d/pulseaudio stopdurmaz. Kaldırma /etc/rc2.d/S50pulseaudioişlemi, önyükleme sırasında başlatılmasını engellemez.

Açık respawning alışkanlığı, durdurmak için /etc/pulse/client.conf, değişim autospawn = yesiçin autospawn = nokarşı ve set cin-ikili /bin/true. Bu satırların şu şekilde önerilmediğinden emin olun:

 autospawn = no
 daemon-binary = /bin/true

Şimdi normal Linux başlangıç ​​dosyalarıyla başa çıkabiliriz. İlk önce silin /etc/rc2.d/S50pulseaudio. Ya da yeniden istemeniz durumunda bağlantıyı koruyan bir kill komutuyla yeniden adlandırabilirsiniz:

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

VEYA

Vazgeçilebilir bir daha başlangıç dosyası olabilir: /etc/X11/Xsession.d/70pulseaudio. Gnome oturumu başladığında Pulse başlar. Kaydetmek istediğinizde silin veya farklı bir dizine kopyalayın ve tam dosya adını doğrulayın. Yararlı bir hile, sen PulseAudio'yi başlatmak komut dosyalarını bulmak, onlar dan dediğimiz ikili değiştirmektir /usr/bin/pulseaudioiçin /bin/true. Bu, tek işi "başarılı bir şekilde hiçbir şey yapmamak" olan güzel bir yürütülebilir dosyadır. Komut dosyalarını mutlu tutar ve geri değiştirmek istediğinizde kullanışlı bir yer tutucudur.

Artık tüm başlatma ve yeniden doğma komut dosyalarını temizlediniz, Şimdi nabız sesini durdurmak ve başlatmak için aşağıdaki komutları kullanın.

 $ pulseaudio --kill
 $ pulseaudio --start

1
Biraz yardımcı olur, ancak soruya gerçekten cevap vermez. PulseAudio'nun başlangıçta sistemime nasıl / nerede / neden başladığını hala bilmiyorum. Debian 8 systemd kullanıyor ve dediğim gibi systemctl list-units -aPulseAudio içermiyor. xinit komut dosyalarını başlatır /etc/X11/Xsession.dve belirtildiği gibi PulseAudio da içermez.
Hubro

pulseaudio işleminiz için ana süreç nedir?
Thushi

2
Bu cevabın metni Carla Schroder'in 2010 tarihli bir makalesinden geliyor gibi görünüyor: linuxplanet.com/linuxplanet/tutorials/7130/2 . Talimatlar artık Debian Jessie ve PulseAudio (5.0-13) için geçerli görünmüyor.
iokevins

0

Thushi / Carla Schroder tarafından verilen cevap (bir sonraki cevaba bakınız) debian wheezy'den jessie'ye geçişten sonra hala iyi çalışıyor. Araştırmadan sonra önyükleme iletileriimi takip ettim (hata son satırda listelenir).

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 iki kez başlatıldı. Bir kez rtkit-daemon ve diğer zamanlarda GNOME / KDE AUTOSTART veya başka bir uygulama. Yine de /etc/pulse/client.conf dosyasında ayar

autospawn = no
daemon-binary = /bin/true

sorunumu çözdü. Onaylayamadığım tek şey, artık herhangi bir /etc/rcX.d dizininde başlangıç ​​komut dosyası bulunmamasıdır. Oldukça açık çünkü rtkit-daemon işi systemd etkileşimi ile yapıyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.