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
重要かもしれませんが、デーモン化する前に設定を解除しようとしましたが、役に立ちませんでした。
ログアウト後もガベージコレクションプロセスを実行し続ける方法についてのアイデアはありますか?
ありがとう、ブライアン