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

중요할 수도 있지만 데몬화하기 전에 설정을 해제하려고 시도했지만 도움이 되지 않았습니다.

로그아웃 후에도 가비지 수집 프로세스를 계속 실행할 수 있는 방법에 대한 아이디어가 있습니까?

고마워요, 브라이언

관련 정보