Systemd ile hizmet olarak Actkbd


12

Bir süre önce ekran kilitliyken bir müzik çaları nasıl durduracağımı sordum. Cevap cazibe gibi çalışan actkbd kullanmaktı. Şimdi sistemk'e önyükleme sırasında otomatik olarak başlamak için actkbd'yi bir hizmet olarak eklemek istedim. Gördüğünüz gibi servis doğru bir şekilde başlatılır ve htop'ta da görünür. Aşağıda bazı çıktılar:

[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

İçinde şu actkbd.servicedosya var/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

Sorun şu ki, sistemi Systemctl ile başlattıktan sonra Rhythmbox'ı duraklatmak için her zamanki kısayoluma basarsam hiçbir şey olmaz. Bunun yerine komutu sadece /usr/local/sbin/actkbd -d /dev/input/event3 -Dbir root terminali üzerinden yürütürsem her şey yolunda gider. Neden bu?

Maalesef bu bariz bir şeyse, sistem işinde yeniyim ama bana yardımcı olacak hiçbir şey bulamadım.

Şerefe.

EDIT: Bu hala çalışmıyor. Eğer birisinin biraz zamanı varsa, onu tekrar deneyebilirse sevinirim. Bu mümkün ise bir hata raporu dosyalayacağım.


Ben henüz denemek actkbdile systemdzamanında olmadığı için, ama senin sorunun ile ilgili bir şey vardır şüpheli actkbdgiriş sistemi tam olarak başlatılmadan önce başlatılmış olan - actkbdbenim geliştirme dizüstü bir LSB gibi başlatıldığında cezası çalışır. evdevModül başlatıldıktan sonra başlatıldığından ve klavyenizin her zaman aynı eventXaygıt düğümüne sahip olduğundan emin olmalısınız .
thkala

Cevabınız için teşekkürler Theodoros. Yukarıda gösterdiğim testler, her şey önyüklenirken gerçekleştirildi. Bu yüzden teoride tüm modüller yüklenmelidir. Komutu manuel olarak çalıştırmak her zaman iyi çalıştığından, aygıt düğümü de iyi olmalıdır.
Azrael3000

Yanıtlar:


5

Kullanıcının cihaza erişebilmesini ve servis ünitesini çalıştırabilmesini istiyorsanız, bir udevkural koymanız MODESve kullanıcının cihaza erişmesine izin vermek için uygun olanı ayarlamanız gerekir . User=rootOturumu root olarak değil, kullanıcı olarak çalıştırdığınız için birim dosyasını yanlış başlatmanız yeterlidir . Bir kök terminalden çalıştırdığınızda, kullanıcı oturumunuzun içinden bir kök terminali etkinleştirirsiniz. Bu konuda daha fazla bilgi almak için hakkında bilgi edinin systemd --user.

Bir udev kuralını bir araya getirmek

udevKuralı doldurmak için ihtiyacınız olacak bilgileri vermek için aşağıdaki komutu kullanın :

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

Yukarıdaki komutun çıkışından udev kuralınızı oluşturun /etc/udev/rules.d/<device>.conf. En sevdiğiniz metin düzenleyicide açın ve değişkenleri doldurun

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

udevKural oluşturma ve adlandırma hakkında daha fazla bilgi man udeviçin Linux dağıtımınızın Wiki'sine bakın. Kuralları ayarladıktan sonra yeniden başlatın. Ve sonra X'e giriş yaptıktan sonra üniteyi başlatın.

Ayrıca, sağladığınız dosyadan çok daha aklı başında bir sistem birimi dosyası.

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

[Service]
ExecStart=/usr/sbin/actkbd -Dd /dev/input/event3
RemainAfterExit=yes
Type=forking
Restart=always
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.