সিস্টেমডের সাথে পরিষেবা হিসাবে অ্যাকটিবিডি


12

কিছুক্ষণ আগে আমি জিজ্ঞাসা করেছি যে স্ক্রিনটি লক থাকা অবস্থায় কোনও সঙ্গীত প্লেয়ার কীভাবে থামানো যায়। উত্তরটি ছিল অ্যাক্টবিডি ব্যবহার করা যা একটি কবজির মতো কাজ করে। বুট করার সময় স্বয়ংক্রিয়ভাবে শুরু করার জন্য আমি অ্যাকটিবিডিটিকে সিস্টেমডে একটি পরিষেবা হিসাবে যুক্ত করতে চেয়েছিলাম। আপনি দেখতে পাচ্ছেন যে পরিষেবাটি সঠিকভাবে শুরু হয়েছে এবং এটি হটোপেও প্রদর্শিত হবে। নীচে কিছু আউটপুট:

[root@hostname init.d]# systemctl start actkbd.service
[root@hostname init.d]# systemctl status actkbd.service
actkbd.service - Actkbd: Daemon for X-independent shortcuts
      Loaded: loaded (/etc/systemd/system/multi-user.target.wants/actkbd.service)
      Active: active (running) since Tue, 10 Apr 2012 17:50:36 +0200; 2s ago
     Process: 23526 ExecStart=/usr/local/sbin/actkbd -d /dev/input/event3 -D (code=exited, status=0/SUCCESS)
    Main PID: 23527 (actkbd)
      CGroup: name=systemd:/system/actkbd.service
              └ 23527 /usr/local/sbin/actkbd -d /dev/input/event3 -D
[root@hostname init.d]# systemctl stop actkbd.service
[root@hostname init.d]# ps -C actkbd
  PID TTY          TIME CMD

আমি নিম্নলিখিত actkbd.serviceফাইল আছে/etc/systemd/system/multi-user.target.wants/

[Unit]
Description=Actkbd: Daemon for X-independent shortcuts

[Service]
Type=forking
ExecStart=/usr/local/sbin/actkbd -d /dev/input/event3 -D
ExecReload=/bin/kill -HUP $MAINPID
ExecStop=/bin/kill -15 $MAINPID
Restart=always
User=root

সুতরাং সমস্যাটি হ'ল সিস্টেমট্যাক্ট দিয়ে পরিষেবা শুরু করার পরে যদি আমি রিথম্বক্সকে থামানোর জন্য আমার সাধারণ শর্টকাট টিপই না তবে কিছুই হয় না। আমি পরিবর্তে যদি /usr/local/sbin/actkbd -d /dev/input/event3 -Dরুট টার্মিনালের মাধ্যমে কমান্ডটি কার্যকর করি তবে সবকিছু ঠিকঠাক কাজ করে। কেন?

দুঃখিত যদি এটি সুস্পষ্ট কিছু হয় তবে আমি সিস্টেমেড ব্যবসায়ে নতুন কিন্তু আমাকে যে কিছু সাহায্য করেছিল তা খুঁজে পেলাম না।

চিয়ার্স।

সম্পাদনা: এটি এখনও কাজ করছে না। কারও যদি কিছু সময় থাকে তবে আমি এটির প্রশংসা করব যদি কেউ চেষ্টা করে পুনরুত্পাদন করতে পারে। যদি তা সম্ভব হয় তবে আমি একটি বাগ রিপোর্ট ফাইল করব।


আমি এখনো চেষ্টা করতে হবে actkbdসঙ্গে systemdসময় অভাবে, কিন্তু আমি সন্দেহ করে আপনার সমস্যার কি কিছু আছে যে actkbdইনপুট সিস্টেম সম্পূর্ণরূপে সক্রিয়া করা হয় আগে শুরু হচ্ছে - actkbdকাজ করে জরিমানা যখন একটি lsb আমার উন্নয়ন ল্যাপটপে পরিসেবা হিসাবে শুরু করেন। আপনার নিশ্চিত হওয়া উচিত যে evdevমডিউলটি চালু হওয়ার পরে এটি শুরু হয়েছিল এবং আপনার কীবোর্ডে সর্বদা একই eventXডিভাইস নোড থাকে।
ঠাকলা

উত্তর থিওডোরোসের জন্য ধন্যবাদ। আমি যে পরীক্ষাগুলি উপরে দেখিয়েছি সেগুলি বুট করার সময় কার্যকর করা হয়েছিল। সুতরাং তত্ত্বে সমস্ত মডিউল লোড করা উচিত। কমান্ডটি কার্যকর করার সময় ডিভাইস নোডটিও ঠিক হওয়া উচিত all
আজরায়েল 3000

উত্তর:


5

আপনি যদি ব্যবহারকারীটিকে ডিভাইস অ্যাক্সেস করতে এবং পরিষেবা ইউনিট চালাতে সক্ষম হতে চান তবে আপনাকে একটি udevনিয়ম তৈরি করতে হবে এবং MODESডিভাইসে অ্যাক্সেস করার জন্য ব্যবহারকারীকে অনুমতি দেওয়ার জন্য যথাযথ সেট করতে হবে । আপনি ইউনিট ফাইলটি User=rootকেবল সঠিক হিসাবে আরম্ভ করার কারণে আপনি অধিবেশনটি রুট হিসাবে চালাচ্ছেন না তবে আপনার ব্যবহারকারী হিসাবে চালিয়ে যাচ্ছেন। আপনি যখন এটি কোনও রুট টার্মিনাল থেকে চালান আপনি আপনার ব্যবহারকারীদের অধিবেশন থেকে একটি রুট টার্মিনাল সক্রিয় করছেন। এই সম্পর্কে আরও তথ্য পেতে তথ্য সন্ধান করুন systemd --user

একটি udev নিয়ম একত্র করা

udevনিয়মটি জনপ্রিয় করতে আপনার প্রয়োজনীয় তথ্য দেওয়ার জন্য নিম্নলিখিত কমান্ডটি ব্যবহার করুন :

udevadm info --path=$(udevadm info -q path -n /dev/input/event3)

উপরের কমান্ডের আউটপুট থেকে আপনার উদেব নিয়মটি তৈরি করুন /etc/udev/rules.d/<device>.conf। এটি আপনার প্রিয় পাঠ্য সম্পাদকটিতে খুলুন এবং ভেরিয়েবলগুলি পূরণ করুন

 SUBSYSTEM=="device",
 SYSFS{idVendor}=="ID Vendor Here" ,
 SYSFS{idProduct}=="ID Model Here",
 MODE="666"

udevনিয়ম তৈরি ও নামকরণ সম্পর্কিত আরও তথ্যের জন্য man udevআপনার লিনাক্স বিতরণের উইকিটি একবার দেখুন। নিয়মগুলি সেট করার পরে, পুনরায় বুট করুন। এবং তারপরে এক্স এ লগইন করে ইউনিটটি শুরু করুন।

এছাড়াও, এখানে একটি আরও বেশি বুদ্ধিমান সিস্টেম ইউনিট ফাইল রয়েছে যা তখন আপনি সরবরাহ করেছেন।

[Unit]
Description=Actkbd: Daemon for X-independent shortcuts

[Service]
ExecStart=/usr/sbin/actkbd -Dd /dev/input/event3
RemainAfterExit=yes
Type=forking
Restart=always
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.