чи є щось на зразок демона на користувача?


11

Мені потрібно запустити деякі фонові процеси, які живуть до тих пір, поки я ввійшов у систему з певним користувачем.

Чи існує щось на зразок демона на користувача? Я знаю лише глобальних демонів, які живуть від запуску комп'ютера до завершення роботи (або ручного запуску / вбивства).

поки що я зробив сценарій, який перевіряє, чи процес уже існує, і створює процес, якщо він не є. Потім цей сценарій запускається nohupкомандою з мого .profile. Таким чином процес запускається під час запуску, і запускається лише один раз (навіть із кількома rxvtумовами, що надходять та йдуть). Тим не менш, він ніколи не вбивається після реєстрації (що не катастрофа, але чистіше також припинити процес).

Відповіді:


9

systemd дозволяє користувачам запускати власні екземпляри systemd для управління приватними демонами.

Якщо у вас вже встановлено systemd, все, що вам потрібно зробити, - це запустити systemd --userта керувати своїми службами за допомогою запуску systemctl --user. Служби користувачів будуть шукати в ~/.config/systemd/user.

За замовчуванням systemd вбиває служби користувачів під час виходу (як ви просили). Ця поведінка може бути змінена, якщо включити затримку для користувача з loginctl --enable-linger $USERкомандою.

Інформацію про ранок можна знайти на сторінці ArchWiki .


1
Чи є налаштування, щоб змусити функцію затримки працювати з файлу конфігурації замість команди bash.
CMCDragonkai

4

Служба dbus призначена для того, щоб ... добре, вона може бути використана точно так :-). Damon debus на кожного користувача запускається, коли користувач входить у середовище робочого столу, і припиняється, коли користувач виходить із системи (див. Сторінку користувача dbus-launchта параметр --exit-with-session). Служба dbus може бути запущена разом із екземпляром dbus або коли інтерфейс служби викликається вперше через dbus. Кожен користувач може мати власні специфікації служб dbus, визначені в прихованому каталозі в домашньому користувачеві або глобально в /etc. Дивіться домашню сторінку dbus на freedesktop для отримання великої кількості документації та впровадження довідок.

Я використовую дистрибутиви на базі Debian лише сьогодні. У всіх тих є сценарії, в /etc/X11/Xsession.dяких дуже часто змінюється рядок, який в самому кінці буде оцінюватися як команда, яка запускає вибране середовище робочого столу. Існує один такий сценарій для dbus, який попереджує команду за допомогою оболонки dbus dbus-launch. Ця обгортка запускає dbus-сервер і, принаймні, на ванільному Debian (і я готовий сказати "у всіх дистрибутивах на базі Debian") dbus-launchнадається можливість --exit-with-session.

Ви повинні мати змогу завершити процеси, які ви хочете запустити, поки користувач увійшов у службу dbus, і IIRC dbus автоматично автоматично дбає про припинення своїх послуг перед виходом.


2

Якщо ви використовуєте BASH в якості своєї оболонки, ви можете спробувати зробити деяке виявлення в ~ / .bash_logout і вимкнути запущений процес.

Те, що ви, ймовірно, шукаєте в довгостроковій перспективі, - це взаємодія (наприклад, через D-Bus) з чимось на зразок ConsoleKit або логін системи .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.