내가 팔로우하는 답변시작 시 자동 시작 .desktop 응용 프로그램이 작동하지 않습니다., 잘 작동합니다. 파이썬 스크립트를 시작하고 있습니다. 응용 .desktop
프로그램은 다음과 같습니다.
[Desktop Entry]
Type=Application
Name=Autostart Script
Exec=shutdown_notify.py
Icon=system-run
이것은 잘 작동합니다. 그러나 로그아웃했다가 로그인하면 스크립트의 첫 번째 인스턴스가 여전히 실행 중인 것을 볼 수 있습니다.
$ ps -C shutdown_notify.py
PID TTY TIME CMD
4026 ? 00:00:01 shutdown_notify
25421 ? 00:00:00 shutdown_notify
로그아웃 시 스크립트가 종료되도록 하는 방법이 있습니까? 종료 논리를 추가해야 합니까?
logind.conf
@binarysta의 요청에 따라 업데이트됨
$ grep -E 'KillUserProcesses|KillOnlyUsers|KillExcludeUsers' /etc/systemd/logind.conf
#KillUserProcesses=no
#KillOnlyUsers=
#KillExcludeUsers=root
업데이트, 두 개의 자동 시작 파일이 있습니다. 하나는 위의 Python 스크립트를 시작하고 다른 하나는 gnome-terminal
다시 시작하면 다음이 표시됩니다.
$ ps aux | grep -E "gnome-terminal|shutdown_notify"
training 6495 0.9 0.1 84936 29360 ? S 07:13 0:00 /usr/bin/python3 /usr/local/bin/shutdown_notify.py
training 6565 0.7 0.2 622880 34448 ? Sl 07:13 0:00 /usr/lib/gnome-terminal/gnome-terminal-server
training 9647 0.0 0.0 13264 2564 pts/0 S+ 07:13 0:00 grep --color=auto -E gnome-terminal|shutdown_notify
로그아웃하고 로그인하면 다음이 표시됩니다.
training 6495 0.1 0.1 85076 29360 ? S 07:13 0:00 /usr/bin/python3 /usr/local/bin/shutdown_notify.py
training 19110 3.1 0.1 84936 29636 ? S 07:15 0:00 /usr/bin/python3 /usr/local/bin/shutdown_notify.py
training 19141 2.3 0.2 696496 34584 ? Sl 07:15 0:00 /usr/lib/gnome-terminal/gnome-terminal-server
training 19421 0.0 0.0 13264 2696 pts/0 S+ 07:15 0:00 grep --color=auto -E gnome-terminal|shutdown_notify
답변1
그 이유는 KillUserProcesses
기본적 no
으로우분투. 이 설정을 사용하면 사용자가 완전히 로그오프할 때 사용자 프로세스가 종료되지 않습니다. 사용자가 로그오프할 때 모든 사용자 프로세스가 종료되도록 이 동작을 변경하려면 이를 설정하고 KillUserProcesses=yes
다시 /etc/systemd/logind.conf
로그인하십시오.
true
현재 값( 변경된 값이어야 함)은 다음을 통해 확인할 수 있습니다.
busctl get-property org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager KillUserProcesses
b true
고쳐 쓰다
gnome-terminal
(GUI 애플리케이션)과 프로세스 shutdown_notify.py
의 차이점은 gnome-terminal-server
프로세스가 실행 중인 다른 모든 X11 프로세스와 동일한 TTY에 바인딩된다는 것입니다. 로그아웃하면 데스크탑 환경과 윈도우 시스템(x11)이 종료되므로 gnome-terminal
종료됩니다.