আমি হেডফোন সংযোগ বিচ্ছিন্ন করার জন্য একটি স্ক্রিপ্ট সম্পাদন করতে চাই তবে ইতিমধ্যে যখন কিছু কোড পরিবর্তন করা হয় তখন এটি কার্যকর করা হয় এমন স্থিতির ধ্রুবক পোলিংয়ের ধারণাটিকে আমি অসন্তুষ্ট করি ।
আমি হেডফোন সংযোগ বিচ্ছিন্ন করার জন্য একটি স্ক্রিপ্ট সম্পাদন করতে চাই তবে ইতিমধ্যে যখন কিছু কোড পরিবর্তন করা হয় তখন এটি কার্যকর করা হয় এমন স্থিতির ধ্রুবক পোলিংয়ের ধারণাটিকে আমি অসন্তুষ্ট করি ।
উত্তর:
বেশিরভাগ সিস্টেমে সমস্ত না থাকলে এসিপিআই এই ইভেন্টটি পরিচালনা করতে পারে। এটি পরীক্ষা করার জন্য:
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একটি ফাইলের সাথে এনভায়রন ভেরিয়েবল লিখতে হবে যার মাধ্যমে একটি স্ক্রিপ্ট শুরু হয়েছিল ~/.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 সংক্রান্ত যেমন সমাধান ঘটনা-চালিত পরিবর্তে পোলিং চালিত হয়।