kullanıcı başına arka plan programı gibi bir şey var mı?


11

Belli bir kullanıcıyla oturum açtığım sürece yaşayan bazı arka plan işlemlerini çalıştırmam gerekiyor.

Kullanıcı başına arka plan programı gibi bir şey var mı? Sadece bilgisayar başlangıcından kapanmaya kadar (ya da manuel başlatma / öldürme) yaşayan küresel cinleri biliyorum.

Şimdilik sürecin zaten var olup olmadığını kontrol eden bir senaryo hazırladım ve eğer yoksa süreci yaratıyorum. Bu komut dosyası daha sonra çalıştırılır nohupne biz gelen komuta .profile. Bu şekilde süreç başlangıçta başlar ve yalnızca bir kez başlatılır (birden çok rxvtterim gelip gidiyor olsa bile ). Ancak, giriş yaptıktan sonra asla öldürülmez (bu bir felaket değildir, ancak süreci de sonlandırmak daha kolaydır).

Yanıtlar:


9

systemd, kullanıcıların özel artalan süreçlerini yönetmek için kendi systemd örneklerini çalıştırmalarına izin verir.

Zaten systemd yüklüyse, tek yapmanız gereken systemd --userhizmetlerinizi çalıştırarak başlatmak ve yönetmek systemctl --user. İçinde kullanıcı hizmetleri aranacak ~/.config/systemd/user.

Systemd varsayılan olarak oturum kapatıldığında kullanıcı hizmetlerini öldürür (istediğiniz gibi). Bu davranış, bir kullanıcı için loginctl --enable-linger $USERkomutla devam etmeyi etkinleştirerek değiştirilebilir .

Daha fazla bilgiyi ArchWiki sayfasında bulabilirsiniz .


1
Linger işlevinin bash komutu yerine bir yapılandırma dosyasından çalışmasını sağlayan bir ayar var mı?
CMCDragonkai

4

Dbus hizmeti tam anlamıyla ... Tamam, bu tam olarak kullanılabilir :-). Kullanıcı başına dbus deamon, bir kullanıcı bir masaüstü ortamına giriş yaptığında başlatılır ve kullanıcı oturumu kapattığında sonlandırılır (bkz. Kılavuz sayfası dbus-launchve seçenek --exit-with-session). Bir dbus hizmeti, dbus örneği ile birlikte veya hizmet arabirimi dbus aracılığıyla ilk kez çağrıldığında başlatılabilir. Her kullanıcının, kullanıcıların evindeki gizli bir dizinde veya global olarak tanımlanmış kendi dbus hizmetleri spesifikasyonları olabilir /etc. Birçok dokümantasyon ve referans uygulaması için freedesktop'taki dbus ana sayfasına bakın .

Bu günlerde sadece Debian tabanlı dağıtımları kullanıyorum. Tüm /etc/X11/Xsession.dbunların en sonunda, seçilen masaüstü ortamını başlatan komut olarak değerlendirilecek bir dizeyi çok sık değiştiren komut dosyaları vardır . Dbus için böyle bir komut dosyası vardır, bu komut dbus sarıcısı ile komutu hazırlar dbus-launch. Bu sarıcı bir dbus sunucusu başlatır ve en azından vanilya Debian (ve "tüm Debian tabanlı dağıtımlarda" demeye hazırım) dbus-launchseçeneği verilir --exit-with-session.

Bir kullanıcı bir dbus hizmetine giriş yapmışken ve IIRC dbus otomatik olarak çıkmadan önce hizmetlerini sonlandırmaya özen gösterirken, çalıştırmak istediğiniz işlemleri sarabilirsiniz.


2

Kabuk olarak BASH kullanıyorsanız, ~ / .bash_logout içinde bir algılama yapmayı deneyebilir ve çalışan işlemi kapatabilirsiniz.

Muhtemelen uzun vadede aradığınız şey, ConsoleKit veya systemd'nin logind gibi bir şeyle (örn. D-Bus aracılığıyla) etkileşim kurmaktır .

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.