dbus ログアウト後もバックグラウンドタスクを実行し続ける方法

dbus ログアウト後もバックグラウンドタスクを実行し続ける方法

RHEL 7.4で。

私たちはCitrix VDAを使用してアプリケーションのUNIXデスクトップセッションを開始しています。セッションはアプリケーション専用であるため、閉じるとVDAセッションが終了します(Citrix XenApp)。

問題は、アプリケーションコアがダンプされたらバックグラウンドタスクを開始し、gdbを使用してコアファイルを評価し、コアとログファイルを収集して圧縮し、結果をサポートチームに電子メールで送信しようとすることです。しかし、私たちはユーザーのフォアグラウンドセッションを永遠に開いたくないので(数分かかることがあります)、バックグラウンドタスクとして実行してみました。

ただし、nohupやカスタムデーモンcプログラム(すべての標準デーモン標準慣行に従います)などを使用するすべての試みは、Xセッションが閉じた後にプロセスの実行を維持することに失敗します。問題は、セッションがdbus-launchに設定されていることです。すべての内部動作を完全に理解しているわけではありませんが、終了時にすべてを整理する機能があるようです。そうであれば、作業は完了です。 。

では、ログアウトしてもジョブを実行し続けるにはどうすればよいですか。

以下は簡単ですが、代表的なセッションプロセスツリーです。


ps -fju 26811
UID        PID  PPID  PGID   SID  C STIME TTY          TIME CMD
545165    4653  4597  4597  4597  0 14:37 ?        00:00:00 /opt/Citrix/VDA/bin/ctxlogin -display :320
545165    4669  4653  4597  4597  0 14:37 ?        00:00:00 /bin/bash /opt/Citrix/VDA/bin/ctxsession.sh
545165    4773     1  4597  4597  0 14:37 ?        00:00:00 dbus-launch --sh-syntax --exit-with-session
545165    4774     1  4774  4774  0 14:37 ?        00:00:00 /bin/dbus-daemon --fork --print-pid 4 --print-address 6 --session
545165    4783     1  4774  4774  0 14:37 ?        00:00:00 /usr/libexec/dconf-service
545165    4818  4669  4597  4597  0 14:37 ?        00:00:00 /opt/Citrix/VDA/bin/ctxctl
545165    4819  4669  4597  4597  0 14:37 ?        00:00:00 /opt/Citrix/VDA/bin/ctxclipboard
545165    4821  4669  4597  4597  0 14:37 ?        00:00:03 /opt/Citrix/VDA/bin/ctxaudio
545165    4822  4669  4597  4597  0 14:37 ?        00:00:00 /opt/Citrix/VDA/bin/ctxlpmngt
545165    4824  4669  4597  4597  0 14:37 ?        00:00:05 /usr/bin/mutter
545165    4825  4669  4597  4597  0 14:37 ?        00:00:00 /opt/Citrix/VDA/bin/ctxtwi 16 4824
545165    4871     1  4870  4870  0 14:37 ?        00:00:00 /usr/bin/pulseaudio --start --log-target=syslog
545165    4894     1  4774  4774  0 14:37 ?        00:00:00 /usr/libexec/gvfsd
545165    4908     1  4774  4774  0 14:37 ?        00:00:00 /usr/libexec/at-spi-bus-launcher
545165    4915  4908  4774  4774  0 14:37 ?        00:00:00 /bin/dbus-daemon --config-file=/usr/share/defaults/at-spi2/accessibility.conf --nofork --print
545165    4918     1  4774  4774  0 14:37 ?        00:00:00 /usr/libexec/at-spi2-registryd --use-gnome-session
545165    4935  4653  4597  4597  0 14:37 ?        00:00:00 xterm
545165    4973  4935  4973  4973  0 14:37 pts/2    00:00:00 bash
545165    8038     1  8038  8038  0 15:23 ?        00:00:00 ./daemonize
545165    8039  8038  8038  8038  0 15:23 ?        00:00:00 sleep 1200
545165    8052  4973  8052  4973  0 15:23 pts/2    00:00:00 ps -fju 26811

たとえば、ログアウト後もデーモンとスリーププロセスを実行し続けたいとします。独自のセッションリーダーであり、制御端末はありません。ただし、dbus-launchプロセスが終了すると、まだ閉じられます。

私が正しい道を行っているなら、env変数は

DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-mGwaZ8i3Ni,guid=57f80a3ec05a1036fe8a6e0e5d30ca6c

重要かもしれませんが、デーモン化する前に設定を解除しようとしましたが、役に立ちませんでした。

ログアウト後もガベージコレクションプロセスを実行し続ける方法についてのアイデアはありますか?

ありがとう、ブライアン

関連情報