मैं हेडफ़ोन डिस्कनेक्ट पर एक स्क्रिप्ट निष्पादित करना चाहता हूं, लेकिन मैं स्थिति के निरंतर मतदान के विचार से नाराज हूं जब इसे बदलने पर पहले से ही कुछ कोड निष्पादित होता है।
मैं हेडफ़ोन डिस्कनेक्ट पर एक स्क्रिप्ट निष्पादित करना चाहता हूं, लेकिन मैं स्थिति के निरंतर मतदान के विचार से नाराज हूं जब इसे बदलने पर पहले से ही कुछ कोड निष्पादित होता है।
जवाबों:
अधिकांश प्रणालियों में यदि सभी नहीं हैं, तो एसीपीआई इस घटना को संभाल सकता है। परीक्षण करने के लिए कि:
acpi_listen
अनप्लग और रिप्ले हेडफ़ोन, उदाहरण आउटपुट: (मेरे लैपटॉप पर एक ही जैक में माइक / कान का हिस्सा)
jack/headphone HEADPHONE unplug
jack/microphone MICROPHONE unplug
jack/headphone HEADPHONE plug
jack/microphone MICROPHONE plug
में डाल your-script.sh
दिया/etc/acpi/
में अपनी स्क्रिप्ट के लिए एक घटना ट्रिगर फ़ाइल जोड़ें /etc/acpi/events/
event=jack/headphone HEADPHONE unplug
action=/etc/acpi/your-script.sh
से जानने के लिए वहाँ अन्य फ़ाइलों की जाँच करें।
आपको acpid
बदले हुए नियमों को पुनः लोड करने के लिए सेवा को पुनरारंभ करना पड़ सकता है/etc/acpi/events/
sudo service acpid restart
संदर्भ: man acpid
DBUS_SESSION_BUS_ADDRESS
अपने होमडायर में एक स्क्रिप्ट के साथ शुरू की गई स्क्रिप्ट के साथ environ चर लिखना होगा ~/.config/autostart/dbus.desktop
। तो फिर तुम चला सकते हैं su YOURUSER -c "DBUS_SESSION_BUS_ADDRESS=$(cat ~/.dbus_address) amixer ......."
से/etc/acpi/your-script.sh
आपकी स्क्रिप्ट के वर्तमान संस्करण में अब एक sleep 0.25
कमांड है।
sleep
सोते समय किसी भी प्रसंस्करण चक्र का उपयोग नहीं करता है ... टाइमर आधारित है ...
यह टाइमर सेट करने के लिए सीपीयू का एक बहुत छोटा सा उपयोग करता है, लेकिन sleep 1
(1 सेकंड नींद), sleep 60
(एक मिनट के लिए नींद) और sleep 86400
(एक दिन के लिए नींद) सभी एक ही नंबर सीपीयू चक्र का उपयोग करते हैं।
ACPI का उपयोग करना हालांकि सही समाधान है क्योंकि ACPI मतदान-चालित के बजाय घटना-चालित है।