PulseAudio कैसे शुरू होता है?


19

पल्सएडियो हमेशा मेरे सिस्टम पर चल रहा है, और यह हमेशा क्रैश हो जाता है अगर यह क्रैश हो जाता है या मैं इसे मार देता हूं। हालांकि, मैं वास्तव में पल्सएडियो शुरू नहीं करता हूं ।

मैंने जाँच की है /etc/init.d/और /etc/X11/Xsession.d/, और मैंने जाँच की है systemctl list-units -a, और पल्सएडियो कहीं नहीं पाया जा सकता है।

कैसे पल्सआडियो प्रतीत होता है कि जादुई रूप से मेरे बिना ही मेरे द्वारा इसे शुरू किया जाता है, और जब यह मर जाता है तो यह तुरंत कैसे शुरू होता है?

मैं xinit और i3 विंडो मैनेजर और PulseAudio 5 के साथ डेबियन 8 (जेसी) का उपयोग कर रहा हूं।

जवाबों:


15

ऐसा लगता है कि किसी भी प्रक्रिया को साझा वस्तुओं के libpulse * परिवार से जोड़ा जा रहा है - एक्स या i3 विंडो प्रबंधक को चलाने से पहले या बाद में - आपके उपयोगकर्ता प्रक्रिया के तहत ऑडियो उपतंत्र के साथ इंटरफेस करने के प्रयासों के बायप्रोडक्ट के रूप में, कथित तौर पर ऑटोसेकॉन PulseAudio सर्वर कर सकता है। । PulseAudio के निर्माता लेनार्ट पोइटरिंग इसकी पुष्टि करते हैं, 2015-05-29 के ईमेल में सिस्टमड-डेवेल मेलिंग सूची में यह कहते हैं :

"pulseaudio आमतौर पर एक सिस्टम सेवा नहीं है, लेकिन एक उपयोगकर्ता सेवा है। जब तक कि आपका उपयोगकर्ता सत्र पूरी तरह से systemd द्वारा प्रबंधित होने के लिए परिवर्तित नहीं हो जाता है (जो कि संभावना नहीं है) systemd इसलिए इसे शुरू करने के साथ बिल्कुल भी शामिल नहीं है।

"पीए आमतौर पर सत्र सेटअप स्क्रिप्ट या सेवा से शुरू किया जाता है। उदाहरण के लिए सूक्ति-सत्र में सूक्ति, यह पुस्तकालयों का उपयोग किए जाने पर ऑटो-ऑन-ऑन-डिमांड भी है और ध्यान दें कि यह गायब है।"

उदाहरण के लिए, डेबियन स्ट्रेच (परीक्षण) पर, वेब ब्राउज़र 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 * साझा ऑब्जेक्ट की एक सूची प्राप्त करें, फिर प्रत्येक पर 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

इन प्रक्रियाओं को पल्सऑडियो न बताने के लिए, ~ ~ .config / pul / client.conf और एड लाइन को संपादित करें

autospawn = no

PulseAudio और इसके पुस्तकालयों का सम्मान है कि सेटिंग, आम तौर पर।

चल रही प्रक्रियाओं से लिंकअप * लीबपुलस यह भी इंगित कर सकता है कि क्यों पल्सएडियो इतनी जल्दी प्रतिक्रिया देता है। FreeDesktop.org पेज, " रनिंग पल्सएडियो ", इसकी पुष्टि करता है:

"... आमतौर पर कुछ पृष्ठभूमि एप्लिकेशन तुरंत फिर से कनेक्ट हो जाएंगे, जिससे सर्वर तुरंत फिर से चालू हो जाएगा।"

आप कंसोल के माध्यम से (xinit को चलाकर) i3 विंडो मैनेजर को शुरू करने के लिए संकेत करते हैं और डिस्प्ले मैनेजर या डेस्कटॉप वातावरण का उपयोग नहीं करते हैं। इस उत्तर की बाकी जानकारी उन लोगों के लिए जानकारी है जो GNOME, KDE और इसके आगे का उपयोग करते हैं।

वैज्ञानिक जानकारी, GNOME / KDE AUTOSTART के लिए

पैकेज पल्सएडियो (5.0-13), डेबियन जेसी (स्थिर) amd64 में, निम्नलिखित चार सिस्टम फ़ाइलों को स्थापित करता है :

  1. /etc/xdg/autostart/pulseaudio-kde.desktop
  2. /etc/xdg/autostart/pulseaudio.desktop
  3. / Usr / bin / शुरू पल्सऑडियो-X11
  4. / Usr / bin / शुरू पल्सऑडियो-केडीई

कुछ ग्राफ़िकल सत्र प्रबंधक स्वचालित रूप से उपयोगकर्ता लॉगिन पर FreeDesktop.org ऑटोस्टार्ट स्क्रिप्ट चलाते हैं । PulseAudio ऑटोस्टार्ट स्क्रिप्ट, बदले में, उपयुक्त PulseAudio स्टार्टअप स्क्रिप्ट चलाने के लिए ग्राफिकल सत्र प्रबंधकों को बताती है:

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

ये स्क्रिप्ट पल्सएडियो क्लाइंट / usr / bin / pactl को PulseAudio मॉड्यूल को लोड करने के लिए कहते हैं, जो कि पल्सएडियो सर्वर को बायप्रोडक्ट के रूप में बताता है (ध्यान दें: यदि आपके पास "नहीं" करने के लिए ऑटोस्कोप सेट है, तो पॉरल आदर करता है और ऑटोप्सन पल्सएडियो सर्वर नहीं करेगा )।

अधिक विस्तार से, FreeDesktop.org पेज " रनिंग पल्सएडियो " पर।

कुछ प्रदर्शन प्रबंधक, इसके अलावा और अन्य वितरणों में, PulseAudio (उदाहरण के लिए, SDDM, ArchLinux पर शुरू कर सकते हैं। हालाँकि अनुरक्षकों ने इसे अब तक हल कर लिया है)।


4

Pulseaudio थोड़ा डेमॉन है। man pulseaudioकहते हैं कि आप इसे कमांड के साथ बंद कर सकते हैं pulseaudio --killलेकिन ऐसा करना पुनर्जन्म को फिर से ले जाता है - यह खुद को प्रतिक्रिया देता है। बूट पर इसे शुरू करने के लिए एक सामान्य init स्क्रिप्ट है /etc/rc2.d/S50pulseaudio। लेकिन जब आप इसे सामान्य लिनक्स तरीके से नियंत्रित करने का प्रयास करते हैं तो यह काम नहीं करता है, क्योंकि दौड़ना /etc/init.d/pulseaudio stopइसे बंद नहीं करता है। हटाने /etc/rc2.d/S50pulseaudioसे इसे बूट पर शुरू होने से नहीं रोका जा सकता है।

अपनी सांस लेने की आदत को रोकने के लिए , डेमॉन-बाइनरी को खोलें /etc/pulse/client.conf, बदलें और सेट करें । सुनिश्चित करें कि ये लाइनें इस तरह से अपूर्ण हैं:autospawn = yesautospawn = no/bin/true

 autospawn = no
 daemon-binary = /bin/true

अब हम सामान्य लिनक्स स्टार्टअप फाइलों से निपट सकते हैं। पहले हटाओ /etc/rc2.d/S50pulseaudio। या आप इसे मारने के आदेश के लिए नाम बदल सकते हैं, जो उस स्थिति में लिंक को संरक्षित करता है जब आप इसे फिर से चाहते हैं:

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

या

एक और स्टार्टअप के साथ बांटना करने के लिए फ़ाइल हो सकता है: /etc/X11/Xsession.d/70pulseaudio। ग्नोम सत्र शुरू होने पर यह पल्स शुरू होता है। यदि आप इसे सहेजना चाहते हैं, तो इसे हटा दें या इसे किसी अलग निर्देशिका में कॉपी करें, और फिर से सटीक फ़ाइल नाम सत्यापित करें। एक उपयोगी चाल, जब आप स्क्रिप्ट कि पल्सऑडियो शुरू मिल जाए, द्विआधारी है कि वे से फोन को बदलने के लिए है /usr/bin/pulseaudioकरने के लिए /bin/true। यह एक अच्छा सा निष्पादन योग्य है जिसका एकमात्र काम "कुछ भी नहीं, सफलतापूर्वक" करना है। यह स्क्रिप्ट को खुश रखता है, और यदि आप इसे वापस बदलना चाहते हैं तो यह एक सुविधाजनक स्थानधारक है।

अब जब आपने सभी स्टार्टअप और रिस्पॉन्सिंग स्क्रिप्ट को शुद्ध कर लिया है, तो पल्स ऑडियो को रोकने और शुरू करने के लिए अब नीचे दिए गए कमांड का उपयोग करें।

 $ pulseaudio --kill
 $ pulseaudio --start

1
यह थोड़ा मदद करता है, लेकिन यह वास्तव में इस सवाल का जवाब नहीं देता है। मुझे अभी भी पता नहीं है कि पल्सएडियो शुरू में कैसे / कहाँ / क्यों / कैसे शुरू होता है। डेबियन 8 सिस्टमड का उपयोग करता है, और जैसा कि मैंने कहा कि systemctl list-units -aइसमें पल्सएडियो शामिल नहीं है। xinit ने स्क्रिप्ट्स को लॉन्च किया /etc/X11/Xsession.dऔर जैसा कि उल्लेख किया गया है, इसमें पल्सएडियो शामिल नहीं है।
हब्रो

आपके pulseaudio प्रक्रिया के लिए मूल प्रक्रिया क्या है?
तुशी

2
इस उत्तर का पाठ कार्ला श्रोडर द्वारा 2010 के एक लेख से आया लगता है: linuxplanet.com/linuxplanet/tutorials/7130/2 । अब निर्देश डेबियन जेसी और पल्सएडियो (5.0-13) पर लागू नहीं होता है।
इकोविंस 2

0

तुषी / कार्ला श्रोडर (अगला जवाब देखें) द्वारा दिया गया जवाब, डेबियन व्हीज़ी से लेकर जेसी तक के अपग्रेड के बाद भी ठीक काम कर रहा है। मेरे बूट संदेशों के बाद मुझे त्रुटि मिली (अंतिम पंक्ति में त्रुटि सूचीबद्ध है)।

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 प्रणाली की बातचीत के साथ काम करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.