ユーザーごとのデーモンのようなものはありますか?


11

特定のユーザーでログインしている限り、いくつかのバックグラウンドプロセスを実行する必要があります。

ユーザーごとのデーモンのようなものはありますか?私は、コンピューターの起動からシャットダウン(または手動の起動/終了)まで存続するグローバルデーモンのみを知っています。

ここでは、プロセスが既に存在するかどうかを確認し、存在しない場合は作成するスクリプトを作成しました。次に、このスクリプトはnohupmyからのコマンドで実行されます.profile。このようにして、プロセスは起動時に起動し、一度だけ起動されます(複数のrxvt用語が出入りしても)。ただし、ログに記録した後は決して強制終了されません(これは災害ではありませんが、プロセスを終了する方がクリーンです)。

回答:


9

systemdを使用すると、ユーザーは独自のsystemdインスタンスを実行してプライベートデーモンを管理できます。

systemdがすでにインストールされている場合はsystemd --user、を実行してサービスを起動および管理するだけsystemctl --userです。ユーザーサービスはで検索され~/.config/systemd/userます。

デフォルトでは、systemdは(要求したとおり)ログアウト時にユーザーサービスを強制終了します。この動作は、loginctl --enable-linger $USERコマンドを使用してユーザーの残存を有効にすることで変更できます。

Morの情報はArchWikiページにあります


1
enable lingerをbashコマンドではなく構成ファイルから機能させる設定はありますか?
CMCDragonkai 2014

4

dbusサービスは、まさにそのためのものです...わかりました、それはまさにそのために使用できます:-)。ユーザーごとのdbusデーモンは、ユーザーがデスクトップ環境にログインしたときに開始され、ユーザーがログアウトしたときに終了します(dbus-launchおよびのマニュアルページを参照--exit-with-session)。dbusサービスは、dbusインスタンスと一緒に、またはサービスのインターフェースが初めてdbusを介して呼び出されたときに開始できます。各ユーザーは、ユーザーのホームの非表示ディレクトリで、またはでグローバルに定義された独自のdbusサービス仕様を持つことができます/etc。多くのドキュメントとリファレンス実装については、freedesktopのdbusホームページを参照してください。

最近は、Debianベースのディストリビューションのみを使用しています。すべてのスクリプトに/etc/X11/Xsession.dは、選択したデスクトップ環境を起動するコマンドとして評価される文字列を非常に頻繁に変更するスクリプトがあります。コマンドの前にdbus wrapperを付加するdbus用のスクリプトが1つありますdbus-launch。このラッパーはdbus-serverを起動し、少なくともバニラDebianでは(そして「すべてのDebianベースのディストリビューションで」と言っても構わないと思います)dbus-launch、オプションが与えられます--exit-with-session

ユーザーがdbusサービスにログインしているときに実行したいプロセスをラップでき、IIRC dbusが自動的にサービスを終了してから終了します。


2

シェルとしてBASHを使用している場合は、〜/ .bash_logoutで検出を実行して、実行中のプロセスをシャットダウンすることができます。

あなたは、おそらく長期的に探していることのようなもので(例えば経由D-バス)を相互作用さConsoleKitかにsystemdのlogind

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.